{"owner":"anthropics","repo":"knowledge-work-plugins","hasSkills":true,"totalSkillsCount":1122,"totalTokensCount":1500804,"categories":["marketplace","plugin-manifest","anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":[".claude-plugin/marketplace.json","bio-research/.claude-plugin/plugin.json","bio-research/skills/instrument-data-to-allotrope/SKILL.md","bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md","bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md","bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md","bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md","bio-research/skills/nextflow-development/SKILL.md","bio-research/skills/nextflow-development/references/geo-sra-acquisition.md","bio-research/skills/nextflow-development/references/installation.md","bio-research/skills/nextflow-development/references/pipelines/atacseq.md","bio-research/skills/nextflow-development/references/pipelines/rnaseq.md","bio-research/skills/nextflow-development/references/pipelines/sarek.md","bio-research/skills/nextflow-development/references/troubleshooting.md","bio-research/skills/nextflow-development/scripts/config/genomes.yaml","bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml","bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml","bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml","bio-research/skills/scientific-problem-selection/SKILL.md","bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md","bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md","bio-research/skills/scientific-problem-selection/references/03-optimization-function.md","bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md","bio-research/skills/scientific-problem-selection/references/05-decision-tree.md","bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md","bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md","bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md","bio-research/skills/scientific-problem-selection/references/09-meta-framework.md","bio-research/skills/scvi-tools/SKILL.md","bio-research/skills/scvi-tools/references/atac_peakvi.md","bio-research/skills/scvi-tools/references/batch_correction_sysvi.md","bio-research/skills/scvi-tools/references/citeseq_totalvi.md","bio-research/skills/scvi-tools/references/data_preparation.md","bio-research/skills/scvi-tools/references/environment_setup.md","bio-research/skills/scvi-tools/references/label_transfer.md","bio-research/skills/scvi-tools/references/multiome_multivi.md","bio-research/skills/scvi-tools/references/rna_velocity_velovi.md","bio-research/skills/scvi-tools/references/scarches_mapping.md","bio-research/skills/scvi-tools/references/scrna_integration.md","bio-research/skills/scvi-tools/references/spatial_deconvolution.md","bio-research/skills/scvi-tools/references/troubleshooting.md","bio-research/skills/single-cell-rna-qc/SKILL.md","bio-research/skills/single-cell-rna-qc/references/scverse_qc_guidelines.md","bio-research/skills/start/SKILL.md","cowork-plugin-management/.claude-plugin/plugin.json","cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md","cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json","cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md","cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md","cowork-plugin-management/skills/create-cowork-plugin/SKILL.md","cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md","cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md","customer-support/.claude-plugin/plugin.json","customer-support/skills/customer-escalation/SKILL.md","customer-support/skills/customer-research/SKILL.md","customer-support/skills/draft-response/SKILL.md","customer-support/skills/kb-article/SKILL.md","customer-support/skills/ticket-triage/SKILL.md","data/.claude-plugin/plugin.json","data/skills/analyze/SKILL.md","data/skills/build-dashboard/SKILL.md","data/skills/create-viz/SKILL.md","data/skills/data-context-extractor/SKILL.md","data/skills/data-context-extractor/references/domain-template.md","data/skills/data-context-extractor/references/example-output.md","data/skills/data-context-extractor/references/skill-template.md","data/skills/data-context-extractor/references/sql-dialects.md","data/skills/data-visualization/SKILL.md","data/skills/explore-data/SKILL.md","data/skills/sql-queries/SKILL.md","data/skills/statistical-analysis/SKILL.md","data/skills/validate-data/SKILL.md","data/skills/write-query/SKILL.md","design/.claude-plugin/plugin.json","design/skills/accessibility-review/SKILL.md","design/skills/design-critique/SKILL.md","design/skills/design-handoff/SKILL.md","design/skills/design-system/SKILL.md","design/skills/research-synthesis/SKILL.md","design/skills/user-research/SKILL.md","design/skills/ux-copy/SKILL.md","engineering/.claude-plugin/plugin.json","engineering/skills/architecture/SKILL.md","engineering/skills/code-review/SKILL.md","engineering/skills/debug/SKILL.md","engineering/skills/deploy-checklist/SKILL.md","engineering/skills/documentation/SKILL.md","engineering/skills/incident-response/SKILL.md","engineering/skills/standup/SKILL.md","engineering/skills/system-design/SKILL.md","engineering/skills/tech-debt/SKILL.md","engineering/skills/testing-strategy/SKILL.md","enterprise-search/.claude-plugin/plugin.json","enterprise-search/skills/digest/SKILL.md","enterprise-search/skills/knowledge-synthesis/SKILL.md","enterprise-search/skills/search-strategy/SKILL.md","enterprise-search/skills/search/SKILL.md","enterprise-search/skills/source-management/SKILL.md","finance/.claude-plugin/plugin.json","finance/skills/audit-support/SKILL.md","finance/skills/close-management/SKILL.md","finance/skills/financial-statements/SKILL.md","finance/skills/journal-entry-prep/SKILL.md","finance/skills/journal-entry/SKILL.md","finance/skills/reconciliation/SKILL.md","finance/skills/sox-testing/SKILL.md","finance/skills/variance-analysis/SKILL.md","human-resources/.claude-plugin/plugin.json","human-resources/skills/comp-analysis/SKILL.md","human-resources/skills/draft-offer/SKILL.md","human-resources/skills/interview-prep/SKILL.md","human-resources/skills/onboarding/SKILL.md","human-resources/skills/org-planning/SKILL.md","human-resources/skills/people-report/SKILL.md","human-resources/skills/performance-review/SKILL.md","human-resources/skills/policy-lookup/SKILL.md","human-resources/skills/recruiting-pipeline/SKILL.md","legal/.claude-plugin/plugin.json","legal/skills/brief/SKILL.md","legal/skills/compliance-check/SKILL.md","legal/skills/legal-response/SKILL.md","legal/skills/legal-risk-assessment/SKILL.md","legal/skills/meeting-briefing/SKILL.md","legal/skills/review-contract/SKILL.md","legal/skills/signature-request/SKILL.md","legal/skills/triage-nda/SKILL.md","legal/skills/vendor-check/SKILL.md","marketing/.claude-plugin/plugin.json","marketing/skills/brand-review/SKILL.md","marketing/skills/campaign-plan/SKILL.md","marketing/skills/competitive-brief/SKILL.md","marketing/skills/content-creation/SKILL.md","marketing/skills/draft-content/SKILL.md","marketing/skills/email-sequence/SKILL.md","marketing/skills/performance-report/SKILL.md","marketing/skills/seo-audit/SKILL.md","operations/.claude-plugin/plugin.json","operations/skills/capacity-plan/SKILL.md","operations/skills/change-request/SKILL.md","operations/skills/compliance-tracking/SKILL.md","operations/skills/process-doc/SKILL.md","operations/skills/process-optimization/SKILL.md","operations/skills/risk-assessment/SKILL.md","operations/skills/runbook/SKILL.md","operations/skills/status-report/SKILL.md","operations/skills/vendor-review/SKILL.md","partner-built/apollo/.claude-plugin/plugin.json","partner-built/apollo/skills/enrich-lead/SKILL.md","partner-built/apollo/skills/prospect/SKILL.md","partner-built/apollo/skills/sequence-load/SKILL.md","partner-built/brand-voice/.claude-plugin/marketplace.json","partner-built/brand-voice/.claude-plugin/plugin.json","partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md","partner-built/brand-voice/skills/brand-voice-enforcement/references/before-after-examples.md","partner-built/brand-voice/skills/brand-voice-enforcement/references/voice-constant-tone-flexes.md","partner-built/brand-voice/skills/discover-brand/SKILL.md","partner-built/brand-voice/skills/discover-brand/references/search-strategies.md","partner-built/brand-voice/skills/discover-brand/references/source-ranking.md","partner-built/brand-voice/skills/guideline-generation/SKILL.md","partner-built/brand-voice/skills/guideline-generation/references/confidence-scoring.md","partner-built/brand-voice/skills/guideline-generation/references/guideline-template.md","partner-built/common-room/.claude-plugin/plugin.json","partner-built/common-room/skills/account-research/SKILL.md","partner-built/common-room/skills/account-research/references/signals-guide.md","partner-built/common-room/skills/call-prep/SKILL.md","partner-built/common-room/skills/call-prep/references/call-types-guide.md","partner-built/common-room/skills/compose-outreach/SKILL.md","partner-built/common-room/skills/compose-outreach/references/outreach-formats-guide.md","partner-built/common-room/skills/contact-research/SKILL.md","partner-built/common-room/skills/contact-research/references/contact-signals-guide.md","partner-built/common-room/skills/prospect/SKILL.md","partner-built/common-room/skills/prospect/references/prospect-guide.md","partner-built/common-room/skills/weekly-prep-brief/SKILL.md","partner-built/common-room/skills/weekly-prep-brief/references/briefing-guide.md","partner-built/slack/.claude-plugin/plugin.json","partner-built/slack/skills/slack-messaging/SKILL.md","partner-built/slack/skills/slack-search/SKILL.md","partner-built/zoom-plugin/.claude-plugin/plugin.json","partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md","partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md","partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md","partner-built/zoom-plugin/skills/cobrowse-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/distribution-methods.md","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/jwt-authentication.md","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/session-lifecycle.md","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/two-roles-pattern.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/agent-integration.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/annotations.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/auto-reconnection.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/byop-custom-pin.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/customer-integration.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/multi-tab-persistence.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/privacy-masking.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/remote-assist.md","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/session-events.md","partner-built/zoom-plugin/skills/cobrowse-sdk/get-started.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-official.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-reference.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization-official.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/error-codes.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features-official.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started-official.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/session-events.md","partner-built/zoom-plugin/skills/cobrowse-sdk/references/settings-reference.md","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/browser-compatibility.md","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/cors-csp.md","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/error-codes.md","partner-built/zoom-plugin/skills/contact-center/RUNBOOK.md","partner-built/zoom-plugin/skills/contact-center/SKILL.md","partner-built/zoom-plugin/skills/contact-center/android/RUNBOOK.md","partner-built/zoom-plugin/skills/contact-center/android/SKILL.md","partner-built/zoom-plugin/skills/contact-center/android/concepts/sdk-lifecycle.md","partner-built/zoom-plugin/skills/contact-center/android/examples/service-patterns.md","partner-built/zoom-plugin/skills/contact-center/android/references/android-reference-map.md","partner-built/zoom-plugin/skills/contact-center/android/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/contact-center/concepts/architecture-and-lifecycle.md","partner-built/zoom-plugin/skills/contact-center/ios/RUNBOOK.md","partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md","partner-built/zoom-plugin/skills/contact-center/ios/concepts/sdk-lifecycle.md","partner-built/zoom-plugin/skills/contact-center/ios/examples/service-patterns.md","partner-built/zoom-plugin/skills/contact-center/ios/references/ios-reference-map.md","partner-built/zoom-plugin/skills/contact-center/ios/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/contact-center/references/environment-variables.md","partner-built/zoom-plugin/skills/contact-center/references/forum-top-questions.md","partner-built/zoom-plugin/skills/contact-center/references/samples-validation.md","partner-built/zoom-plugin/skills/contact-center/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/contact-center/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/contact-center/troubleshooting/common-drift-and-breaks.md","partner-built/zoom-plugin/skills/contact-center/web/RUNBOOK.md","partner-built/zoom-plugin/skills/contact-center/web/SKILL.md","partner-built/zoom-plugin/skills/contact-center/web/concepts/lifecycle-and-events.md","partner-built/zoom-plugin/skills/contact-center/web/examples/app-context-and-state.md","partner-built/zoom-plugin/skills/contact-center/web/references/web-reference-map.md","partner-built/zoom-plugin/skills/contact-center/web/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md","partner-built/zoom-plugin/skills/debug-zoom/SKILL.md","partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md","partner-built/zoom-plugin/skills/general/RUNBOOK.md","partner-built/zoom-plugin/skills/general/SKILL.md","partner-built/zoom-plugin/skills/general/references/app-types.md","partner-built/zoom-plugin/skills/general/references/authentication.md","partner-built/zoom-plugin/skills/general/references/authorization-patterns.md","partner-built/zoom-plugin/skills/general/references/automatic-skill-chaining-rest-webhooks.md","partner-built/zoom-plugin/skills/general/references/community-repos.md","partner-built/zoom-plugin/skills/general/references/distributed-meeting-fallback-architecture.md","partner-built/zoom-plugin/skills/general/references/environment-variables.md","partner-built/zoom-plugin/skills/general/references/interview-answer-routing.md","partner-built/zoom-plugin/skills/general/references/known-limitations.md","partner-built/zoom-plugin/skills/general/references/marketplace.md","partner-built/zoom-plugin/skills/general/references/meeting-webhooks-oauth-refresh-orchestration.md","partner-built/zoom-plugin/skills/general/references/query-routing-playbook.md","partner-built/zoom-plugin/skills/general/references/routing-implementation.md","partner-built/zoom-plugin/skills/general/references/scopes.md","partner-built/zoom-plugin/skills/general/references/sdk-logs-troubleshooting.md","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-guide.md","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-workflow.md","partner-built/zoom-plugin/skills/general/use-cases/ai-companion-integration.md","partner-built/zoom-plugin/skills/general/use-cases/ai-integration.md","partner-built/zoom-plugin/skills/general/use-cases/apis-vs-mcp-routing.md","partner-built/zoom-plugin/skills/general/use-cases/backend-automation-s2s-oauth.md","partner-built/zoom-plugin/skills/general/use-cases/collaborative-apps.md","partner-built/zoom-plugin/skills/general/use-cases/contact-center-app-lifecycle-and-context-switching.md","partner-built/zoom-plugin/skills/general/use-cases/contact-center-integration.md","partner-built/zoom-plugin/skills/general/use-cases/custom-meeting-ui-web.md","partner-built/zoom-plugin/skills/general/use-cases/custom-video.md","partner-built/zoom-plugin/skills/general/use-cases/customer-support-cobrowsing.md","partner-built/zoom-plugin/skills/general/use-cases/electron-meeting-embed.md","partner-built/zoom-plugin/skills/general/use-cases/embed-meetings.md","partner-built/zoom-plugin/skills/general/use-cases/enterprise-app-deployment.md","partner-built/zoom-plugin/skills/general/use-cases/flutter-video-sessions.md","partner-built/zoom-plugin/skills/general/use-cases/form-completion-assistant.md","partner-built/zoom-plugin/skills/general/use-cases/hd-video-resolution.md","partner-built/zoom-plugin/skills/general/use-cases/high-volume-meeting-platform.md","partner-built/zoom-plugin/skills/general/use-cases/immersive-experiences.md","partner-built/zoom-plugin/skills/general/use-cases/in-meeting-apps.md","partner-built/zoom-plugin/skills/general/use-cases/marketplace-publishing.md","partner-built/zoom-plugin/skills/general/use-cases/meeting-automation.md","partner-built/zoom-plugin/skills/general/use-cases/meeting-bots.md","partner-built/zoom-plugin/skills/general/use-cases/meeting-details-with-events.md","partner-built/zoom-plugin/skills/general/use-cases/meeting-links-vs-embedding.md","partner-built/zoom-plugin/skills/general/use-cases/minutes-calculation.md","partner-built/zoom-plugin/skills/general/use-cases/native-meeting-sdk-multi-platform.md","partner-built/zoom-plugin/skills/general/use-cases/native-video-sdk-multi-platform.md","partner-built/zoom-plugin/skills/general/use-cases/prebuilt-video-ui.md","partner-built/zoom-plugin/skills/general/use-cases/probe-sdk-preflight-readiness-gate.md","partner-built/zoom-plugin/skills/general/use-cases/qss-monitoring.md","partner-built/zoom-plugin/skills/general/use-cases/raw-recording.md","partner-built/zoom-plugin/skills/general/use-cases/react-native-meeting-embed.md","partner-built/zoom-plugin/skills/general/use-cases/react-native-video-sessions.md","partner-built/zoom-plugin/skills/general/use-cases/real-time-media-streams.md","partner-built/zoom-plugin/skills/general/use-cases/recording-download-pipeline.md","partner-built/zoom-plugin/skills/general/use-cases/recording-transcription.md","partner-built/zoom-plugin/skills/general/use-cases/retrieve-meeting-and-subscribe-events.md","partner-built/zoom-plugin/skills/general/use-cases/rivet-event-driven-api-orchestrator.md","partner-built/zoom-plugin/skills/general/use-cases/saas-app-oauth-integration.md","partner-built/zoom-plugin/skills/general/use-cases/scribe-transcription-pipeline.md","partner-built/zoom-plugin/skills/general/use-cases/sdk-size-optimization.md","partner-built/zoom-plugin/skills/general/use-cases/sdk-wrappers-gui.md","partner-built/zoom-plugin/skills/general/use-cases/server-to-server-oauth-with-webhooks.md","partner-built/zoom-plugin/skills/general/use-cases/team-chat-llm-bot.md","partner-built/zoom-plugin/skills/general/use-cases/testing-development.md","partner-built/zoom-plugin/skills/general/use-cases/token-and-scope-troubleshooting.md","partner-built/zoom-plugin/skills/general/use-cases/transcription-bot-linux.md","partner-built/zoom-plugin/skills/general/use-cases/usage-reporting-analytics.md","partner-built/zoom-plugin/skills/general/use-cases/user-and-meeting-creation.md","partner-built/zoom-plugin/skills/general/use-cases/video-sdk-bring-your-own-storage.md","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-campaign-web-mobile-wrapper.md","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-knowledge-base-sync-pipeline.md","partner-built/zoom-plugin/skills/general/use-cases/web-sdk-embedding.md","partner-built/zoom-plugin/skills/general/use-cases/zoom-phone-smart-embed-crm.md","partner-built/zoom-plugin/skills/meeting-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/android/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/android/android.md","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/android/examples/join-start-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/android/references/android-reference-map.md","partner-built/zoom-plugin/skills/meeting-sdk/android/references/environment-variables.md","partner-built/zoom-plugin/skills/meeting-sdk/android/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/meeting-sdk/android/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/android/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/authentication-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/join-meeting-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/raw-data-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/setup-guide.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/electron-reference.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/module-map.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/deprecated-and-contradictions.md","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/version-drift.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/examples/join-start-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/ios.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/environment-variables.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/ios-reference-map.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/ios/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/concepts/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/linux.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/meeting-sdk-bot.md","partner-built/zoom-plugin/skills/meeting-sdk/linux/references/linux-reference.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/examples/join-start-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/macos.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/environment-variables.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/macos-reference-map.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/macos/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/auth-and-token-model.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/join-meeting-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/provider-hook-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/setup-guide.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/start-meeting-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/android-setup.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/ios-setup.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/native-bridge-notes.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/official-sources.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/wrapper-api.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/version-drift.md","partner-built/zoom-plugin/skills/meeting-sdk/references/ai-companion.md","partner-built/zoom-plugin/skills/meeting-sdk/references/android.md","partner-built/zoom-plugin/skills/meeting-sdk/references/authorization.md","partner-built/zoom-plugin/skills/meeting-sdk/references/bot-authentication.md","partner-built/zoom-plugin/skills/meeting-sdk/references/breakout-rooms.md","partner-built/zoom-plugin/skills/meeting-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/meeting-sdk/references/forum-top-questions.md","partner-built/zoom-plugin/skills/meeting-sdk/references/ios.md","partner-built/zoom-plugin/skills/meeting-sdk/references/macos.md","partner-built/zoom-plugin/skills/meeting-sdk/references/multiple-meetings.md","partner-built/zoom-plugin/skills/meeting-sdk/references/signature-playbook.md","partner-built/zoom-plugin/skills/meeting-sdk/references/triage-intake.md","partner-built/zoom-plugin/skills/meeting-sdk/references/troubleshooting.md","partner-built/zoom-plugin/skills/meeting-sdk/references/unreal.md","partner-built/zoom-plugin/skills/meeting-sdk/references/webinars.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/examples/join-start-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/environment-variables.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/unreal-reference-map.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/unreal/unreal.md","partner-built/zoom-plugin/skills/meeting-sdk/web/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/references/README.md","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/references/README.md","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/browser-support.md","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/sharedarraybuffer.md","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/client-view-basic.md","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/component-view-react.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-breakout-rooms.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-ui-customization.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/sharedarraybuffer-gallery-view.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-performance-cpu.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-timeout-browser-restriction.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-tracking-id.md","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web.md","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/error-codes.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/RUNBOOK.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-architecture.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-vs-raw-data.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/singleton-hierarchy.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/ai-companion.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/authentication-pattern.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/breakout-rooms.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/captions-transcription.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/chat.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/custom-ui-video-rendering.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/local-recording.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/raw-video-capture.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/send-raw-data.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/service-quality.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/share-raw-data-capture.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/video-advanced.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/deployment.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/interface-methods.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/windows-reference.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/build-errors.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/windows-message-loop.md","partner-built/zoom-plugin/skills/oauth/RUNBOOK.md","partner-built/zoom-plugin/skills/oauth/SKILL.md","partner-built/zoom-plugin/skills/oauth/concepts/oauth-flows.md","partner-built/zoom-plugin/skills/oauth/concepts/pkce.md","partner-built/zoom-plugin/skills/oauth/concepts/scopes-architecture.md","partner-built/zoom-plugin/skills/oauth/concepts/state-parameter.md","partner-built/zoom-plugin/skills/oauth/concepts/token-lifecycle.md","partner-built/zoom-plugin/skills/oauth/examples/device-flow.md","partner-built/zoom-plugin/skills/oauth/examples/pkce-implementation.md","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-basic.md","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-redis.md","partner-built/zoom-plugin/skills/oauth/examples/token-refresh.md","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-basic.md","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-mysql.md","partner-built/zoom-plugin/skills/oauth/references/classic-scopes.md","partner-built/zoom-plugin/skills/oauth/references/environment-variables.md","partner-built/zoom-plugin/skills/oauth/references/granular-scopes.md","partner-built/zoom-plugin/skills/oauth/references/oauth-errors.md","partner-built/zoom-plugin/skills/oauth/troubleshooting/common-errors.md","partner-built/zoom-plugin/skills/oauth/troubleshooting/redirect-uri-issues.md","partner-built/zoom-plugin/skills/oauth/troubleshooting/scope-issues.md","partner-built/zoom-plugin/skills/oauth/troubleshooting/token-issues.md","partner-built/zoom-plugin/skills/phone/RUNBOOK.md","partner-built/zoom-plugin/skills/phone/SKILL.md","partner-built/zoom-plugin/skills/phone/concepts/architecture-and-lifecycle.md","partner-built/zoom-plugin/skills/phone/examples/phone-api-service-pattern.md","partner-built/zoom-plugin/skills/phone/examples/smart-embed-postmessage-bridge.md","partner-built/zoom-plugin/skills/phone/references/call-handling-patterns.md","partner-built/zoom-plugin/skills/phone/references/crm-sample-validation.md","partner-built/zoom-plugin/skills/phone/references/deprecations-and-migrations.md","partner-built/zoom-plugin/skills/phone/references/environment-variables.md","partner-built/zoom-plugin/skills/phone/references/forum-top-questions.md","partner-built/zoom-plugin/skills/phone/references/smart-embed-event-contract.md","partner-built/zoom-plugin/skills/phone/references/source-map.md","partner-built/zoom-plugin/skills/phone/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/phone/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md","partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md","partner-built/zoom-plugin/skills/probe-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/probe-sdk/SKILL.md","partner-built/zoom-plugin/skills/probe-sdk/concepts/architecture-and-lifecycle.md","partner-built/zoom-plugin/skills/probe-sdk/examples/comprehensive-network-pattern.md","partner-built/zoom-plugin/skills/probe-sdk/examples/diagnostic-page-pattern.md","partner-built/zoom-plugin/skills/probe-sdk/probe-sdk.md","partner-built/zoom-plugin/skills/probe-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/probe-sdk/references/probe-reference-map.md","partner-built/zoom-plugin/skills/probe-sdk/references/samples-validation.md","partner-built/zoom-plugin/skills/probe-sdk/references/source-map.md","partner-built/zoom-plugin/skills/probe-sdk/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/probe-sdk/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/probe-sdk/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/rest-api/RUNBOOK.md","partner-built/zoom-plugin/skills/rest-api/SKILL.md","partner-built/zoom-plugin/skills/rest-api/concepts/api-architecture.md","partner-built/zoom-plugin/skills/rest-api/concepts/authentication-flows.md","partner-built/zoom-plugin/skills/rest-api/concepts/meeting-urls-and-sdk-joining.md","partner-built/zoom-plugin/skills/rest-api/concepts/rate-limiting-strategy.md","partner-built/zoom-plugin/skills/rest-api/examples/graphql-queries.md","partner-built/zoom-plugin/skills/rest-api/examples/meeting-lifecycle.md","partner-built/zoom-plugin/skills/rest-api/examples/recording-pipeline.md","partner-built/zoom-plugin/skills/rest-api/examples/user-management.md","partner-built/zoom-plugin/skills/rest-api/examples/webhook-server.md","partner-built/zoom-plugin/skills/rest-api/references/accounts.md","partner-built/zoom-plugin/skills/rest-api/references/ai-companion.md","partner-built/zoom-plugin/skills/rest-api/references/ai-services.md","partner-built/zoom-plugin/skills/rest-api/references/authentication.md","partner-built/zoom-plugin/skills/rest-api/references/auto-dialer.md","partner-built/zoom-plugin/skills/rest-api/references/calendar.md","partner-built/zoom-plugin/skills/rest-api/references/chatbot.md","partner-built/zoom-plugin/skills/rest-api/references/clips.md","partner-built/zoom-plugin/skills/rest-api/references/cobrowse-sdk-api.md","partner-built/zoom-plugin/skills/rest-api/references/commerce.md","partner-built/zoom-plugin/skills/rest-api/references/contact-center.md","partner-built/zoom-plugin/skills/rest-api/references/crc.md","partner-built/zoom-plugin/skills/rest-api/references/environment-variables.md","partner-built/zoom-plugin/skills/rest-api/references/events.md","partner-built/zoom-plugin/skills/rest-api/references/graphql.md","partner-built/zoom-plugin/skills/rest-api/references/healthcare.md","partner-built/zoom-plugin/skills/rest-api/references/mail.md","partner-built/zoom-plugin/skills/rest-api/references/marketplace-apps.md","partner-built/zoom-plugin/skills/rest-api/references/meetings.md","partner-built/zoom-plugin/skills/rest-api/references/number-management.md","partner-built/zoom-plugin/skills/rest-api/references/openapi.md","partner-built/zoom-plugin/skills/rest-api/references/phone.md","partner-built/zoom-plugin/skills/rest-api/references/qss.md","partner-built/zoom-plugin/skills/rest-api/references/quality-management.md","partner-built/zoom-plugin/skills/rest-api/references/rate-limits.md","partner-built/zoom-plugin/skills/rest-api/references/recordings.md","partner-built/zoom-plugin/skills/rest-api/references/reports.md","partner-built/zoom-plugin/skills/rest-api/references/revenue-accelerator.md","partner-built/zoom-plugin/skills/rest-api/references/rooms.md","partner-built/zoom-plugin/skills/rest-api/references/scheduler.md","partner-built/zoom-plugin/skills/rest-api/references/scim2.md","partner-built/zoom-plugin/skills/rest-api/references/tasks.md","partner-built/zoom-plugin/skills/rest-api/references/team-chat.md","partner-built/zoom-plugin/skills/rest-api/references/users.md","partner-built/zoom-plugin/skills/rest-api/references/video-management.md","partner-built/zoom-plugin/skills/rest-api/references/video-sdk-api.md","partner-built/zoom-plugin/skills/rest-api/references/virtual-agent.md","partner-built/zoom-plugin/skills/rest-api/references/webinars.md","partner-built/zoom-plugin/skills/rest-api/references/whiteboard.md","partner-built/zoom-plugin/skills/rest-api/references/workforce-management.md","partner-built/zoom-plugin/skills/rest-api/references/zoom-docs.md","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-errors.md","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/rest-api/troubleshooting/forum-top-questions.md","partner-built/zoom-plugin/skills/rest-api/troubleshooting/token-scope-playbook.md","partner-built/zoom-plugin/skills/rivet-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md","partner-built/zoom-plugin/skills/rivet-sdk/concepts/architecture-and-lifecycle.md","partner-built/zoom-plugin/skills/rivet-sdk/examples/getting-started-pattern.md","partner-built/zoom-plugin/skills/rivet-sdk/examples/multi-client-pattern.md","partner-built/zoom-plugin/skills/rivet-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/rivet-sdk/references/rivet-reference-map.md","partner-built/zoom-plugin/skills/rivet-sdk/references/samples-validation.md","partner-built/zoom-plugin/skills/rivet-sdk/references/source-map.md","partner-built/zoom-plugin/skills/rivet-sdk/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/rivet-sdk/rivet-sdk.md","partner-built/zoom-plugin/skills/rivet-sdk/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/rivet-sdk/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/rtms/RUNBOOK.md","partner-built/zoom-plugin/skills/rtms/SKILL.md","partner-built/zoom-plugin/skills/rtms/concepts/connection-architecture.md","partner-built/zoom-plugin/skills/rtms/concepts/lifecycle-flow.md","partner-built/zoom-plugin/skills/rtms/examples/ai-integration.md","partner-built/zoom-plugin/skills/rtms/examples/manual-websocket.md","partner-built/zoom-plugin/skills/rtms/examples/rtms-bot.md","partner-built/zoom-plugin/skills/rtms/examples/sdk-quickstart.md","partner-built/zoom-plugin/skills/rtms/references/connection.md","partner-built/zoom-plugin/skills/rtms/references/data-types.md","partner-built/zoom-plugin/skills/rtms/references/environment-variables.md","partner-built/zoom-plugin/skills/rtms/references/media-types.md","partner-built/zoom-plugin/skills/rtms/references/quickstart.md","partner-built/zoom-plugin/skills/rtms/references/webhooks.md","partner-built/zoom-plugin/skills/rtms/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/scribe/RUNBOOK.md","partner-built/zoom-plugin/skills/scribe/SKILL.md","partner-built/zoom-plugin/skills/scribe/concepts/auth-and-processing-modes.md","partner-built/zoom-plugin/skills/scribe/examples/batch-webhook-pipeline.md","partner-built/zoom-plugin/skills/scribe/examples/fast-mode-node.md","partner-built/zoom-plugin/skills/scribe/references/api-reference.md","partner-built/zoom-plugin/skills/scribe/references/environment-variables.md","partner-built/zoom-plugin/skills/scribe/references/samples-validation.md","partner-built/zoom-plugin/skills/scribe/references/versioning-and-drift.md","partner-built/zoom-plugin/skills/scribe/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/scribe/troubleshooting/common-drift-and-breaks.md","partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md","partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md","partner-built/zoom-plugin/skills/start/SKILL.md","partner-built/zoom-plugin/skills/team-chat/RUNBOOK.md","partner-built/zoom-plugin/skills/team-chat/SKILL.md","partner-built/zoom-plugin/skills/team-chat/concepts/api-selection.md","partner-built/zoom-plugin/skills/team-chat/concepts/authentication.md","partner-built/zoom-plugin/skills/team-chat/concepts/deployment.md","partner-built/zoom-plugin/skills/team-chat/concepts/environment-setup.md","partner-built/zoom-plugin/skills/team-chat/concepts/message-structure.md","partner-built/zoom-plugin/skills/team-chat/concepts/security.md","partner-built/zoom-plugin/skills/team-chat/concepts/webhooks.md","partner-built/zoom-plugin/skills/team-chat/examples/button-actions.md","partner-built/zoom-plugin/skills/team-chat/examples/channel-management.md","partner-built/zoom-plugin/skills/team-chat/examples/chatbot-setup.md","partner-built/zoom-plugin/skills/team-chat/examples/database-integration.md","partner-built/zoom-plugin/skills/team-chat/examples/dropdown-selects.md","partner-built/zoom-plugin/skills/team-chat/examples/form-submissions.md","partner-built/zoom-plugin/skills/team-chat/examples/llm-integration.md","partner-built/zoom-plugin/skills/team-chat/examples/multi-step-workflows.md","partner-built/zoom-plugin/skills/team-chat/examples/oauth-setup.md","partner-built/zoom-plugin/skills/team-chat/examples/scheduled-alerts.md","partner-built/zoom-plugin/skills/team-chat/examples/send-message.md","partner-built/zoom-plugin/skills/team-chat/examples/slash-commands.md","partner-built/zoom-plugin/skills/team-chat/examples/token-management.md","partner-built/zoom-plugin/skills/team-chat/get-started.md","partner-built/zoom-plugin/skills/team-chat/references/api-reference.md","partner-built/zoom-plugin/skills/team-chat/references/environment-variables.md","partner-built/zoom-plugin/skills/team-chat/references/error-codes.md","partner-built/zoom-plugin/skills/team-chat/references/jid-formats.md","partner-built/zoom-plugin/skills/team-chat/references/message-cards.md","partner-built/zoom-plugin/skills/team-chat/references/rate-limits.md","partner-built/zoom-plugin/skills/team-chat/references/sample-comparison.md","partner-built/zoom-plugin/skills/team-chat/references/samples.md","partner-built/zoom-plugin/skills/team-chat/references/scopes.md","partner-built/zoom-plugin/skills/team-chat/references/webhook-events.md","partner-built/zoom-plugin/skills/team-chat/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/team-chat/troubleshooting/deployment-issues.md","partner-built/zoom-plugin/skills/team-chat/troubleshooting/message-issues.md","partner-built/zoom-plugin/skills/team-chat/troubleshooting/oauth-issues.md","partner-built/zoom-plugin/skills/team-chat/troubleshooting/webhook-issues.md","partner-built/zoom-plugin/skills/ui-toolkit/RUNBOOK.md","partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md","partner-built/zoom-plugin/skills/ui-toolkit/references/environment-variables.md","partner-built/zoom-plugin/skills/ui-toolkit/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/android/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/android/android.md","partner-built/zoom-plugin/skills/video-sdk/android/concepts/architecture.md","partner-built/zoom-plugin/skills/video-sdk/android/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/android/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/android/references/android-reference-map.md","partner-built/zoom-plugin/skills/video-sdk/android/references/environment-variables.md","partner-built/zoom-plugin/skills/video-sdk/android/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/video-sdk/android/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/android/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/flutter/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/event-handling-pattern.md","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/setup-guide.md","partner-built/zoom-plugin/skills/video-sdk/flutter/references/flutter-reference.md","partner-built/zoom-plugin/skills/video-sdk/flutter/references/module-map.md","partner-built/zoom-plugin/skills/video-sdk/flutter/references/official-sources.md","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/deprecated-and-contradictions.md","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/version-drift.md","partner-built/zoom-plugin/skills/video-sdk/ios/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/architecture.md","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/ios/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/ios/ios.md","partner-built/zoom-plugin/skills/video-sdk/ios/references/environment-variables.md","partner-built/zoom-plugin/skills/video-sdk/ios/references/ios-reference-map.md","partner-built/zoom-plugin/skills/video-sdk/ios/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/video-sdk/ios/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/ios/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/linux/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/raw-data-vs-canvas.md","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/singleton-hierarchy.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/chat.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/cloud-recording.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/command-channel.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/live-streaming.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/qt-gtk-integration.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-audio-capture.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-video-capture.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/transcription.md","partner-built/zoom-plugin/skills/video-sdk/linux/examples/virtual-audio-video.md","partner-built/zoom-plugin/skills/video-sdk/linux/linux.md","partner-built/zoom-plugin/skills/video-sdk/linux/references/linux-reference.md","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/build-errors.md","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/pulseaudio-setup.md","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/qt-dependencies.md","partner-built/zoom-plugin/skills/video-sdk/macos/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/architecture.md","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/macos/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/macos/macos.md","partner-built/zoom-plugin/skills/video-sdk/macos/references/environment-variables.md","partner-built/zoom-plugin/skills/video-sdk/macos/references/macos-reference-map.md","partner-built/zoom-plugin/skills/video-sdk/macos/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/video-sdk/macos/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/macos/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/react-native/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/event-handling-pattern.md","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/setup-guide.md","partner-built/zoom-plugin/skills/video-sdk/react-native/references/module-map.md","partner-built/zoom-plugin/skills/video-sdk/react-native/references/official-sources.md","partner-built/zoom-plugin/skills/video-sdk/react-native/references/react-native-reference.md","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/version-drift.md","partner-built/zoom-plugin/skills/video-sdk/references/authorization.md","partner-built/zoom-plugin/skills/video-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/video-sdk/references/forum-top-questions.md","partner-built/zoom-plugin/skills/video-sdk/references/licensing-and-entitlements.md","partner-built/zoom-plugin/skills/video-sdk/references/session-lifecycle.md","partner-built/zoom-plugin/skills/video-sdk/references/token-contract-test-spec.md","partner-built/zoom-plugin/skills/video-sdk/references/triage-intake.md","partner-built/zoom-plugin/skills/video-sdk/references/troubleshooting.md","partner-built/zoom-plugin/skills/video-sdk/references/ui-toolkit.md","partner-built/zoom-plugin/skills/video-sdk/unity/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/architecture.md","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/lifecycle-workflow.md","partner-built/zoom-plugin/skills/video-sdk/unity/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/unity/references/environment-variables.md","partner-built/zoom-plugin/skills/video-sdk/unity/references/unity-reference-map.md","partner-built/zoom-plugin/skills/video-sdk/unity/references/versioning-and-compatibility.md","partner-built/zoom-plugin/skills/video-sdk/unity/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/video-sdk/unity/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/unity/unity.md","partner-built/zoom-plugin/skills/video-sdk/web/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/web/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/video-sdk/web/concepts/singleton-hierarchy.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/chat.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/command-channel.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/event-handling.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/framework-integrations.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/react-hooks.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/recording.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/screen-share.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/transcription.md","partner-built/zoom-plugin/skills/video-sdk/web/examples/video-rendering.md","partner-built/zoom-plugin/skills/video-sdk/web/references/events-reference.md","partner-built/zoom-plugin/skills/video-sdk/web/references/web-reference.md","partner-built/zoom-plugin/skills/video-sdk/web/references/web.md","partner-built/zoom-plugin/skills/video-sdk/web/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/windows/RUNBOOK.md","partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/canvas-vs-raw-data.md","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/sdk-architecture-pattern.md","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/singleton-hierarchy.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/cloud-recording.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/command-channel.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/dotnet-winforms/README.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-audio-capture.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-video-capture.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/screen-share-subscription.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-audio.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-video.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/session-join-pattern.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/transcription.md","partner-built/zoom-plugin/skills/video-sdk/windows/examples/video-rendering.md","partner-built/zoom-plugin/skills/video-sdk/windows/references/delegate-methods.md","partner-built/zoom-plugin/skills/video-sdk/windows/references/samples.md","partner-built/zoom-plugin/skills/video-sdk/windows/references/windows-reference.md","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/build-errors.md","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/windows-message-loop.md","partner-built/zoom-plugin/skills/video-sdk/windows/windows.md","partner-built/zoom-plugin/skills/virtual-agent/RUNBOOK.md","partner-built/zoom-plugin/skills/virtual-agent/SKILL.md","partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md","partner-built/zoom-plugin/skills/virtual-agent/android/concepts/webview-lifecycle.md","partner-built/zoom-plugin/skills/virtual-agent/android/examples/js-bridge-patterns.md","partner-built/zoom-plugin/skills/virtual-agent/android/references/android-reference-map.md","partner-built/zoom-plugin/skills/virtual-agent/android/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/virtual-agent/concepts/architecture-and-lifecycle.md","partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md","partner-built/zoom-plugin/skills/virtual-agent/ios/concepts/webview-lifecycle.md","partner-built/zoom-plugin/skills/virtual-agent/ios/examples/js-bridge-patterns.md","partner-built/zoom-plugin/skills/virtual-agent/ios/references/ios-reference-map.md","partner-built/zoom-plugin/skills/virtual-agent/ios/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/virtual-agent/references/environment-variables.md","partner-built/zoom-plugin/skills/virtual-agent/references/samples-validation.md","partner-built/zoom-plugin/skills/virtual-agent/references/versioning-and-drift.md","partner-built/zoom-plugin/skills/virtual-agent/scenarios/high-level-scenarios.md","partner-built/zoom-plugin/skills/virtual-agent/troubleshooting/common-drift-and-breaks.md","partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md","partner-built/zoom-plugin/skills/virtual-agent/web/concepts/lifecycle-and-events.md","partner-built/zoom-plugin/skills/virtual-agent/web/examples/campaign-and-entry-patterns.md","partner-built/zoom-plugin/skills/virtual-agent/web/references/web-reference-map.md","partner-built/zoom-plugin/skills/virtual-agent/web/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/webhooks/RUNBOOK.md","partner-built/zoom-plugin/skills/webhooks/SKILL.md","partner-built/zoom-plugin/skills/webhooks/references/environment-variables.md","partner-built/zoom-plugin/skills/webhooks/references/events.md","partner-built/zoom-plugin/skills/webhooks/references/signature-verification.md","partner-built/zoom-plugin/skills/webhooks/references/subscriptions.md","partner-built/zoom-plugin/skills/webhooks/references/verification.md","partner-built/zoom-plugin/skills/webhooks/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/websockets/RUNBOOK.md","partner-built/zoom-plugin/skills/websockets/SKILL.md","partner-built/zoom-plugin/skills/websockets/references/connection.md","partner-built/zoom-plugin/skills/websockets/references/environment-variables.md","partner-built/zoom-plugin/skills/websockets/references/events.md","partner-built/zoom-plugin/skills/websockets/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/RUNBOOK.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/architecture.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/meeting-sdk-vs-zoom-apps.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/running-contexts.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/security.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/app-communication.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/breakout-rooms.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/collaborate-mode.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/guest-mode.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/in-client-oauth.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-camera.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-immersive.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/quick-start.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/apis.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/environment-variables.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/events.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/layers-api.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/oauth.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/zmail-sdk.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/common-issues.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/debugging.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/forum-top-questions.md","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/migration.md","partner-built/zoom-plugin/skills/zoom-mcp/RUNBOOK.md","partner-built/zoom-plugin/skills/zoom-mcp/SKILL.md","partner-built/zoom-plugin/skills/zoom-mcp/concepts/mcp-architecture.md","partner-built/zoom-plugin/skills/zoom-mcp/concepts/oauth-setup.md","partner-built/zoom-plugin/skills/zoom-mcp/examples/create-zoom-doc.md","partner-built/zoom-plugin/skills/zoom-mcp/examples/meeting-lifecycle.md","partner-built/zoom-plugin/skills/zoom-mcp/examples/search-and-act.md","partner-built/zoom-plugin/skills/zoom-mcp/examples/transcript-retrieval.md","partner-built/zoom-plugin/skills/zoom-mcp/references/error-codes.md","partner-built/zoom-plugin/skills/zoom-mcp/references/tools.md","partner-built/zoom-plugin/skills/zoom-mcp/troubleshooting/common-errors.md","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/authentication-and-identifiers.md","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/tools.md","pdf-viewer/.claude-plugin/plugin.json","pdf-viewer/skills/view-pdf/SKILL.md","product-management/.claude-plugin/plugin.json","product-management/skills/competitive-brief/SKILL.md","product-management/skills/metrics-review/SKILL.md","product-management/skills/product-brainstorming/SKILL.md","product-management/skills/roadmap-update/SKILL.md","product-management/skills/sprint-planning/SKILL.md","product-management/skills/stakeholder-update/SKILL.md","product-management/skills/synthesize-research/SKILL.md","product-management/skills/write-spec/SKILL.md","productivity/.claude-plugin/plugin.json","productivity/skills/memory-management/SKILL.md","productivity/skills/start/SKILL.md","productivity/skills/task-management/SKILL.md","productivity/skills/update/SKILL.md","sales/.claude-plugin/plugin.json","sales/skills/account-context/SKILL.md","sales/skills/account-plan/SKILL.md","sales/skills/account-research/SKILL.md","sales/skills/account-tiering/SKILL.md","sales/skills/call-prep/SKILL.md","sales/skills/call-summary/SKILL.md","sales/skills/close-plan/SKILL.md","sales/skills/competitive-intelligence/SKILL.md","sales/skills/create-an-asset/SKILL.md","sales/skills/crm-hygiene-check/SKILL.md","sales/skills/customer-health/SKILL.md","sales/skills/customer-voice/SKILL.md","sales/skills/daily-briefing/SKILL.md","sales/skills/deal-advance-gap/SKILL.md","sales/skills/deal-review/SKILL.md","sales/skills/deal-signals/SKILL.md","sales/skills/deal-slip-scenario/SKILL.md","sales/skills/draft-outreach/SKILL.md","sales/skills/end-of-day/SKILL.md","sales/skills/expansion-whitespace/SKILL.md","sales/skills/forecast/SKILL.md","sales/skills/handle-objection/SKILL.md","sales/skills/inbox-sweep/SKILL.md","sales/skills/lead-triage/SKILL.md","sales/skills/log-activity/SKILL.md","sales/skills/pipeline-review/SKILL.md","sales/skills/renewal-radar/SKILL.md","sales/skills/rep-context/SKILL.md","sales/skills/route-lead/SKILL.md","sales/skills/schedule-meeting/SKILL.md","sales/skills/setup/SKILL.md","sales/skills/stakeholder-map/SKILL.md","sales/skills/team-pipeline/SKILL.md","sales/skills/update-opportunity/SKILL.md","sales/skills/weekly-wrap/SKILL.md","sales/skills/win-loss-review/SKILL.md","small-business/.claude-plugin/plugin.json","small-business/skills/ad-manager/SKILL.md","small-business/skills/ad-manager/reference/ad_copy.md","small-business/skills/ad-manager/reference/change_playbook.md","small-business/skills/ad-manager/reference/data_sources.md","small-business/skills/ad-manager/reference/diagnostics.md","small-business/skills/ad-manager/reference/gotchas.md","small-business/skills/ap-processor/SKILL.md","small-business/skills/ap-processor/reference/coding_rules.md","small-business/skills/ap-processor/reference/gotchas.md","small-business/skills/ap-processor/reference/intake_and_extraction.md","small-business/skills/ap-processor/reference/matching_and_exceptions.md","small-business/skills/ap-processor/reference/payment_run.md","small-business/skills/brand-style/SKILL.md","small-business/skills/build-agent/SKILL.md","small-business/skills/build-agent/reference/capture.md","small-business/skills/build-agent/reference/gotchas.md","small-business/skills/build-agent/reference/skill_authoring.md","small-business/skills/build-connector/SKILL.md","small-business/skills/build-connector/reference/discovery.md","small-business/skills/build-connector/reference/gotchas.md","small-business/skills/build-connector/reference/paths.md","small-business/skills/build-connector/reference/use-zapier.md","small-business/skills/business-pulse/SKILL.md","small-business/skills/business-pulse/reference/data_sources.md","small-business/skills/business-pulse/reference/gotchas.md","small-business/skills/business-pulse/reference/output_template.md","small-business/skills/business-pulse/reference/thresholds.md","small-business/skills/business-pulse/reference/v2_sources.md","small-business/skills/call-list/SKILL.md","small-business/skills/canva-creator/SKILL.md","small-business/skills/canva-creator/reference/canva-api.md","small-business/skills/canva-creator/reference/examples/boutique-brief-campaign.md","small-business/skills/canva-creator/reference/gotchas.md","small-business/skills/canva-creator/reference/hubspot-staging.md","small-business/skills/cash-flow-snapshot/SKILL.md","small-business/skills/cash-flow-snapshot/reference/examples/worked-example.md","small-business/skills/cash-flow-snapshot/reference/gotchas.md","small-business/skills/cash-flow-snapshot/reference/v2_sources.md","small-business/skills/close-month/SKILL.md","small-business/skills/content-strategy/SKILL.md","small-business/skills/content-strategy/reference/examples/retail-boutique-example.md","small-business/skills/content-strategy/reference/gotchas.md","small-business/skills/content-strategy/reference/v2_sources.md","small-business/skills/contract-review/SKILL.md","small-business/skills/contract-review/reference/docusign-fetch.md","small-business/skills/contract-review/reference/examples/flagged-summary-saas.md","small-business/skills/contract-review/reference/gmail-fetch.md","small-business/skills/contract-review/reference/gotchas.md","small-business/skills/contract-review/reference/m365-fetch.md","small-business/skills/crm-autopilot/SKILL.md","small-business/skills/crm-autopilot/reference/cleanup-checklist.md","small-business/skills/crm-autopilot/reference/examples/cleanup-deal.md","small-business/skills/crm-autopilot/reference/examples/log-call-happy-path.md","small-business/skills/crm-autopilot/reference/examples/log-email-happy-path.md","small-business/skills/crm-autopilot/reference/gotchas.md","small-business/skills/crm-autopilot/reference/hubspot-fields.md","small-business/skills/crm-autopilot/reference/lightweight_crm.md","small-business/skills/crm-autopilot/reference/salesforce-fields.md","small-business/skills/crm-autopilot/reference/standing_mode.md","small-business/skills/grant-rfp-writer/SKILL.md","small-business/skills/grant-rfp-writer/reference/drafting.md","small-business/skills/grant-rfp-writer/reference/go_no_go.md","small-business/skills/grant-rfp-writer/reference/gotchas.md","small-business/skills/grant-rfp-writer/reference/opportunity_sources.md","small-business/skills/grant-rfp-writer/reference/org_profile.md","small-business/skills/grow-pipeline/SKILL.md","small-business/skills/growth-pulse/SKILL.md","small-business/skills/growth-pulse/reference/data_sources.md","small-business/skills/growth-pulse/reference/gotchas.md","small-business/skills/growth-pulse/reference/output_template.md","small-business/skills/growth-pulse/reference/thresholds.md","small-business/skills/hiring-screener/SKILL.md","small-business/skills/hiring-screener/reference/candidate_comms.md","small-business/skills/hiring-screener/reference/fair_screening.md","small-business/skills/hiring-screener/reference/gotchas.md","small-business/skills/hiring-screener/reference/onboarding.md","small-business/skills/hiring-screener/reference/rubric.md","small-business/skills/inbox-manager/SKILL.md","small-business/skills/inbox-manager/reference/digest_format.md","small-business/skills/inbox-manager/reference/gotchas.md","small-business/skills/inbox-manager/reference/handoffs.md","small-business/skills/inbox-manager/reference/reply_drafting.md","small-business/skills/inbox-manager/reference/triage_rules.md","small-business/skills/inventory-planner/SKILL.md","small-business/skills/inventory-planner/reference/data_sources.md","small-business/skills/inventory-planner/reference/gotchas.md","small-business/skills/inventory-planner/reference/po_drafting.md","small-business/skills/inventory-planner/reference/seasonality.md","small-business/skills/inventory-planner/reference/velocity_and_reorder.md","small-business/skills/invoice-chase/SKILL.md","small-business/skills/invoice-chase/reference/examples/firm-reminder.md","small-business/skills/invoice-chase/reference/examples/gentle-reminder.md","small-business/skills/invoice-chase/reference/gotchas.md","small-business/skills/invoice-chase/reference/tone-matching.md","small-business/skills/invoice-chase/reference/v2_sources.md","small-business/skills/job-post-builder/SKILL.md","small-business/skills/job-post-builder/reference/docusign-routing.md","small-business/skills/job-post-builder/reference/examples/worked-example.md","small-business/skills/job-post-builder/reference/existing-document-merge.md","small-business/skills/job-post-builder/reference/gotchas.md","small-business/skills/job-post-builder/reference/interview-guide-structure.md","small-business/skills/job-post-builder/reference/job-post-structure.md","small-business/skills/job-post-builder/reference/offer-letter-template.md","small-business/skills/job-post-builder/reference/role-intake.md","small-business/skills/lead-finder/SKILL.md","small-business/skills/lead-finder/reference/gotchas.md","small-business/skills/lead-finder/reference/icp_method.md","small-business/skills/lead-finder/reference/output_template.md","small-business/skills/lead-finder/reference/scoring.md","small-business/skills/lead-finder/reference/sourcing.md","small-business/skills/lead-triage/SKILL.md","small-business/skills/lead-triage/reference/examples/happy-path-triage.md","small-business/skills/lead-triage/reference/gotchas.md","small-business/skills/lead-triage/reference/hubspot-scoring.md","small-business/skills/marketing-monday/SKILL.md","small-business/skills/monday-brief/SKILL.md","small-business/skills/month-end-prep/SKILL.md","small-business/skills/month-end-prep/reference/close-packet-format.md","small-business/skills/month-end-prep/reference/examples/pl-narrative.md","small-business/skills/month-end-prep/reference/gotchas.md","small-business/skills/month-end-prep/reference/paypal-settlements.md","small-business/skills/month-end-prep/reference/quickbooks-reconcile.md","small-business/skills/month-end-prep/reference/v2_sources.md","small-business/skills/month-end-prep/reference/xero-reconcile.md","small-business/skills/month-end-prep/reference/zoho-books-reconcile.md","small-business/skills/outreach-composer/SKILL.md","small-business/skills/outreach-composer/reference/gotchas.md","small-business/skills/outreach-composer/reference/output_template.md","small-business/skills/outreach-composer/reference/sequence_patterns.md","small-business/skills/outreach-composer/reference/slop_test.md","small-business/skills/pay-the-bills/SKILL.md","small-business/skills/payroll-prep/SKILL.md","small-business/skills/payroll-prep/reference/anomaly_rules.md","small-business/skills/payroll-prep/reference/books_sync.md","small-business/skills/payroll-prep/reference/gotchas.md","small-business/skills/payroll-prep/reference/run_sheet_format.md","small-business/skills/payroll-prep/reference/timesheet_intake.md","small-business/skills/plan-payroll/SKILL.md","small-business/skills/proposal-builder/SKILL.md","small-business/skills/proposal-builder/reference/discovery_extraction.md","small-business/skills/proposal-builder/reference/gotchas.md","small-business/skills/proposal-builder/reference/output_template.md","small-business/skills/proposal-builder/reference/pricing_method.md","small-business/skills/proposal-builder/reference/proposal_structure.md","small-business/skills/reactivate/SKILL.md","small-business/skills/report-builder/SKILL.md","small-business/skills/report-builder/reference/data_sources.md","small-business/skills/report-builder/reference/gotchas.md","small-business/skills/report-builder/reference/output_template.md","small-business/skills/report-builder/reference/report_spec.md","small-business/skills/report-builder/reference/saved_reports.md","small-business/skills/report-pack/SKILL.md","small-business/skills/restock/SKILL.md","small-business/skills/review-reputation/SKILL.md","small-business/skills/review-reputation/reference/churn-signals.md","small-business/skills/review-reputation/reference/examples/example-report.md","small-business/skills/review-reputation/reference/gotchas.md","small-business/skills/review-reputation/reference/response-patterns.md","small-business/skills/review-reputation/reference/sources.md","small-business/skills/seo-ai-visibility/SKILL.md","small-business/skills/seo-ai-visibility/reference/ai_visibility.md","small-business/skills/seo-ai-visibility/reference/audit_checklist.md","small-business/skills/seo-ai-visibility/reference/catalog_refresh.md","small-business/skills/seo-ai-visibility/reference/content_rewrite.md","small-business/skills/seo-ai-visibility/reference/gotchas.md","small-business/skills/smb-onboard/SKILL.md","small-business/skills/smb-onboard/reference/examples/happy-path.md","small-business/skills/smb-onboard/reference/gotchas.md","small-business/skills/smb-onboard/reference/onboard-checklist.md","small-business/skills/smb-onboard/reference/website-research.md","small-business/skills/smb-router/SKILL.md","small-business/skills/smb-router/reference/connector-map.md","small-business/skills/social-content-engine/SKILL.md","small-business/skills/social-content-engine/reference/calendar.md","small-business/skills/social-content-engine/reference/canva-api.md","small-business/skills/social-content-engine/reference/examples/okonkwo-campaign.md","small-business/skills/social-content-engine/reference/gotchas.md","small-business/skills/social-content-engine/reference/publishing.md","small-business/skills/social-content-engine/reference/shopify-assets.md","small-business/skills/speed-to-lead/SKILL.md","small-business/skills/speed-to-lead/reference/approval.md","small-business/skills/speed-to-lead/reference/gotchas.md","small-business/skills/speed-to-lead/reference/qualification.md","small-business/skills/speed-to-lead/reference/response_patterns.md","small-business/skills/tax-prep/SKILL.md","small-business/skills/tax-season-organizer/SKILL.md","small-business/skills/tax-season-organizer/reference/calculation-assumptions.md","small-business/skills/tax-season-organizer/reference/connector-queries.md","small-business/skills/tax-season-organizer/reference/examples/quarterly-estimate.md","small-business/skills/tax-season-organizer/reference/examples/year-end-1099.md","small-business/skills/tax-season-organizer/reference/gotchas.md","small-business/skills/tax-season-organizer/reference/output-formats.md","small-business/skills/ticket-deflector/SKILL.md","small-business/skills/ticket-deflector/reference/examples/deny-refund-request.md","small-business/skills/ticket-deflector/reference/examples/respond-refund-request.md","small-business/skills/ticket-deflector/reference/gotchas.md"],"skills":{".claude-plugin/marketplace.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=.claude-plugin%2Fmarketplace.json -->","bio-research/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=bio-research%2F.claude-plugin%2Fplugin.json -->","bio-research/skills/instrument-data-to-allotrope/SKILL.md":"---\nname: instrument-data-to-allotrope\ndescription: Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.\n---\n\n# Instrument Data to Allotrope Converter\n\nConvert instrument files into standardized Allotrope Simple Model (ASM) format for LIMS upload, data lakes, or handoff to data engineering teams.\n\n> **Note: This is an Example Skill**\n>\n> This skill demonstrates how skills can support your data engineering tasks—automating schema transformations, parsing instrument outputs, and generating production-ready code.\n>\n> **To customize for your organization:**\n> - Modify the `references/` files to include your company's specific schemas or ontology mappings\n> - Use an MCP server to connect to systems that define your schemas (e.g., your LIMS, data catalog, or schema registry)\n> - Extend the `scripts/` to handle proprietary instrument formats or internal data standards\n>\n> This pattern can be adapted for any data transformation workflow where you need to convert between formats or validate against organizational standards.\n\n## Workflow Overview\n\n1. **Detect instrument type** from file contents (auto-detect or user-specified)\n2. **Parse file** using allotropy library (native) or flexible fallback parser\n3. **Generate outputs**:\n   - ASM JSON (full semantic structure)\n   - Flattened CSV (2D tabular format)\n   - Python parser code (for data engineer handoff)\n4. **Deliver** files with summary and usage instructions\n\n> **When Uncertain:** If you're unsure how to map a field to ASM (e.g., is this raw data or calculated? device setting or environmental condition?), ask the user for clarification. Refer to `references/field_classification_guide.md` for guidance, but when ambiguity remains, confirm with the user rather than guessing.\n\n## Quick Start\n\n```python\n# Install requirements first\npip install allotropy pandas openpyxl pdfplumber --break-system-packages\n\n# Core conversion\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# Convert with allotropy\nasm = allotrope_from_file(\"instrument_data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Output Format Selection\n\n**ASM JSON (default)** - Full semantic structure with ontology URIs\n- Best for: LIMS systems expecting ASM, data lakes, long-term archival\n- Validates against Allotrope schemas\n\n**Flattened CSV** - 2D tabular representation\n- Best for: Quick analysis, Excel users, systems without JSON support\n- Each measurement becomes one row with metadata repeated\n\n**Both** - Generate both formats for maximum flexibility\n\n## Calculated Data Handling\n\n**IMPORTANT:** Separate raw measurements from calculated/derived values.\n\n- **Raw data** → `measurement-document` (direct instrument readings)\n- **Calculated data** → `calculated-data-aggregate-document` (derived values)\n\nCalculated values MUST include traceability via `data-source-aggregate-document`:\n\n```json\n\"calculated-data-aggregate-document\": {\n  \"calculated-data-document\": [{\n    \"calculated-data-identifier\": \"SAMPLE_B1_DIN_001\",\n    \"calculated-data-name\": \"DNA integrity number\",\n    \"calculated-result\": {\"value\": 9.5, \"unit\": \"(unitless)\"},\n    \"data-source-aggregate-document\": {\n      \"data-source-document\": [{\n        \"data-source-identifier\": \"SAMPLE_B1_MEASUREMENT\",\n        \"data-source-feature\": \"electrophoresis trace\"\n      }]\n    }\n  }]\n}\n```\n\n**Common calculated fields by instrument type:**\n| Instrument | Calculated Fields |\n|------------|-------------------|\n| Cell counter | Viability %, cell density dilution-adjusted values |\n| Spectrophotometer | Concentration (from absorbance), 260/280 ratio |\n| Plate reader | Concentrations from standard curve, %CV |\n| Electrophoresis | DIN/RIN, region concentrations, average sizes |\n| qPCR | Relative quantities, fold change |\n\nSee `references/field_classification_guide.md` for detailed guidance on raw vs. calculated classification.\n\n## Validation\n\nAlways validate ASM output before delivering to the user:\n\n```bash\npython scripts/validate_asm.py output.json\npython scripts/validate_asm.py output.json --reference known_good.json  # Compare to reference\npython scripts/validate_asm.py output.json --strict  # Treat warnings as errors\n```\n\n**Validation Rules:**\n- Based on Allotrope ASM specification (December 2024)\n- Last updated: 2026-01-07\n- Source: https://gitlab.com/allotrope-public/asm\n\n**Soft Validation Approach:**\nUnknown techniques, units, or sample roles generate **warnings** (not errors) to allow for forward compatibility. If Allotrope adds new values after December 2024, the validator won't block them—it will flag them for manual verification. Use `--strict` mode to treat warnings as errors if you need stricter validation.\n\n**What it checks:**\n- Correct technique selection (e.g., multi-analyte profiling vs plate reader)\n- Field naming conventions (space-separated, not hyphenated)\n- Calculated data has traceability (`data-source-aggregate-document`)\n- Unique identifiers exist for measurements and calculated values\n- Required metadata present\n- Valid units and sample roles (with soft validation for unknown values)\n\n## Supported Instruments\n\nSee `references/supported_instruments.md` for complete list. Key instruments:\n\n| Category | Instruments |\n|----------|-------------|\n| Cell Counting | Vi-CELL BLU, Vi-CELL XR, NucleoCounter |\n| Spectrophotometry | NanoDrop One/Eight/8000, Lunatic |\n| Plate Readers | SoftMax Pro, EnVision, Gen5, CLARIOstar |\n| ELISA | SoftMax Pro, BMG MARS, MSD Workbench |\n| qPCR | QuantStudio, Bio-Rad CFX |\n| Chromatography | Empower, Chromeleon |\n\n## Detection & Parsing Strategy\n\n### Tier 1: Native allotropy parsing (PREFERRED)\n**Always try allotropy first.** Check available vendors directly:\n\n```python\nfrom allotropy.parser_factory import Vendor\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}\")\n\n# Common vendors:\n# AGILENT_TAPESTATION_ANALYSIS  (for TapeStation XML)\n# BECKMAN_VI_CELL_BLU\n# THERMO_FISHER_NANODROP_EIGHT\n# MOLDEV_SOFTMAX_PRO\n# APPBIO_QUANTSTUDIO\n# ... many more\n```\n\n**When the user provides a file, check if allotropy supports it before falling back to manual parsing.** The `scripts/convert_to_asm.py` auto-detection only covers a subset of allotropy vendors.\n\n### Tier 2: Flexible fallback parsing\n**Only use if allotropy doesn't support the instrument.** This fallback:\n- Does NOT generate `calculated-data-aggregate-document`\n- Does NOT include full traceability\n- Produces simplified ASM structure\n\nUse flexible parser with:\n- Column name fuzzy matching\n- Unit extraction from headers\n- Metadata extraction from file structure\n\n### Tier 3: PDF extraction\nFor PDF-only files, extract tables using pdfplumber, then apply Tier 2 parsing.\n\n## Pre-Parsing Checklist\n\nBefore writing a custom parser, ALWAYS:\n\n1. **Check if allotropy supports it** - Use native parser if available\n2. **Find a reference ASM file** - Check `references/examples/` or ask user\n3. **Review instrument-specific guide** - Check `references/instrument_guides/`\n4. **Validate against reference** - Run `validate_asm.py --reference <file>`\n\n## Common Mistakes to Avoid\n\n| Mistake | Correct Approach |\n|---------|------------------|\n| Manifest as object | Use URL string |\n| Lowercase detection types | Use \"Absorbance\" not \"absorbance\" |\n| \"emission wavelength setting\" | Use \"detector wavelength setting\" for emission |\n| All measurements in one document | Group by well/sample location |\n| Missing procedure metadata | Extract ALL device settings per measurement |\n\n## Code Export for Data Engineers\n\nGenerate standalone Python scripts that scientists can hand off:\n\n```python\n# Export parser code\npython scripts/export_parser.py --input \"data.csv\" --vendor \"VI_CELL_BLU\" --output \"parser_script.py\"\n```\n\nThe exported script:\n- Has no external dependencies beyond pandas/allotropy\n- Includes inline documentation\n- Can run in Jupyter notebooks\n- Is production-ready for data pipelines\n\n## File Structure\n\n```\ninstrument-data-to-allotrope/\n├── SKILL.md                          # This file\n├── scripts/\n│   ├── convert_to_asm.py            # Main conversion script\n│   ├── flatten_asm.py               # ASM → 2D CSV conversion\n│   ├── export_parser.py             # Generate standalone parser code\n│   └── validate_asm.py              # Validate ASM output quality\n└── references/\n    ├── supported_instruments.md     # Full instrument list with Vendor enums\n    ├── asm_schema_overview.md       # ASM structure reference\n    ├── field_classification_guide.md # Where to put different field types\n    └── flattening_guide.md          # How flattening works\n```\n\n## Usage Examples\n\n### Example 1: Vi-CELL BLU file\n```\nUser: \"Convert this cell counting data to Allotrope format\"\n[uploads viCell_Results.xlsx]\n\nClaude:\n1. Detects Vi-CELL BLU (95% confidence)\n2. Converts using allotropy native parser\n3. Outputs:\n   - viCell_Results_asm.json (full ASM)\n   - viCell_Results_flat.csv (2D format)\n   - viCell_parser.py (exportable code)\n```\n\n### Example 2: Request for code handoff\n```\nUser: \"I need to give our data engineer code to parse NanoDrop files\"\n\nClaude:\n1. Generates self-contained Python script\n2. Includes sample input/output\n3. Documents all assumptions\n4. Provides Jupyter notebook version\n```\n\n### Example 3: LIMS-ready flattened output\n```\nUser: \"Convert this ELISA data to a CSV I can upload to our LIMS\"\n\nClaude:\n1. Parses plate reader data\n2. Generates flattened CSV with columns:\n   - sample_identifier, well_position, measurement_value, measurement_unit\n   - instrument_serial_number, analysis_datetime, assay_type\n3. Validates against common LIMS import requirements\n```\n\n## Implementation Notes\n\n### Installing allotropy\n```bash\npip install allotropy --break-system-packages\n```\n\n### Handling parse failures\nIf allotropy native parsing fails:\n1. Log the error for debugging\n2. Fall back to flexible parser\n3. Report reduced metadata completeness to user\n4. Suggest exporting different format from instrument\n\n### ASM Schema Validation\nValidate output against Allotrope schemas when available:\n```python\nimport jsonschema\n# Schema URLs in references/asm_schema_overview.md\n```\n","bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md":"# ASM Schema Overview\n\nThe Allotrope Simple Model (ASM) is a JSON-based standard for representing laboratory instrument data with semantic consistency.\n\n## Core Concepts\n\n### Structure\nASM uses a hierarchical document structure:\n- **Manifest** - Links to ontologies and schemas\n- **Data** - The actual measurement data organized by technique\n\n### Key Components\n\n```json\n{\n  \"$asm.manifest\": {\n    \"vocabulary\": [\"http://purl.allotrope.org/voc/afo/REC/2023/09/\"],\n    \"contexts\": [\"http://purl.allotrope.org/json-ld/afo-context-REC-2023-09.jsonld\"]\n  },\n  \"<technique>-aggregate-document\": {\n    \"device-system-document\": { ... },\n    \"<technique>-document\": [\n      {\n        \"measurement-aggregate-document\": {\n          \"measurement-document\": [ ... ]\n        }\n      }\n    ]\n  }\n}\n```\n\n## Required Metadata Documents\n\n### data system document\nEvery ASM output MUST include this document with:\n- `ASM file identifier`: Output filename\n- `data system instance identifier`: System ID or \"N/A\"\n- `file name`: Source input filename\n- `UNC path`: Path to source file\n- `ASM converter name`: Parser identifier (e.g., \"allotropy_beckman_coulter_biomek\")\n- `ASM converter version`: Version string\n- `software name`: Instrument software that generated the source file\n\n### device system document\nEvery ASM output MUST include this document with:\n- `equipment serial number`: Main instrument serial\n- `product manufacturer`: Vendor name\n- `device document`: Array of sub-components (probes, pods, etc.)\n  - `device type`: Standardized type (e.g., \"liquid handler probe head\")\n  - `device identifier`: Logical name (e.g., \"Pod1\", not serial number)\n  - `equipment serial number`: Component serial\n  - `product manufacturer`: Component vendor\n\n## Available ASM Techniques\n\nThe official ASM repository includes **65 technique schemas**:\n\n```\nabsorbance, automated-reactors, balance, bga, binding-affinity, bulk-density,\ncell-counting, cell-culture-analyzer, chromatography, code-reader, conductance,\nconductivity, disintegration, dsc, dvs, electronic-lab-notebook,\nelectronic-spectrometry, electrophoresis, flow-cytometry, fluorescence,\nfoam-height, foam-qualification, fplc, ftir, gas-chromatography, gc-ms, gloss,\nhot-tack, impedance, lc-ms, light-obscuration, liquid-chromatography,\nloss-on-drying, luminescence, mass-spectrometry, metabolite-analyzer,\nmulti-analyte-profiling, nephelometry, nmr, optical-imaging, optical-microscopy,\nosmolality, oven-kf, pcr, ph, plate-reader, pressure-monitoring, psd, pumping,\nraman, rheometry, sem, solution-analyzer, specific-rotation, spectrophotometry,\nstirring, surface-area-analysis, tablet-hardness, temperature-monitoring,\ntensile-test, thermogravimetric-analysis, titration, ultraviolet-absorbance,\nx-ray-powder-diffraction\n```\n\nSee: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\n## Common ASM Schemas by Technique\n\nBelow are details for frequently-used techniques:\n\n### Cell Counting\nSchema: `cell-counting/REC/2024/09/cell-counting.schema.json`\n\nKey fields:\n- `viable-cell-density` (cells/mL)\n- `viability` (percentage)\n- `total-cell-count`\n- `dead-cell-count`\n- `cell-diameter-distribution-datum`\n\n### Spectrophotometry (UV-Vis)\nSchema: `spectrophotometry/REC/2024/06/spectrophotometry.schema.json`\n\nKey fields:\n- `absorbance` (dimensionless)\n- `wavelength` (nm)\n- `transmittance` (percentage)\n- `pathlength` (cm)\n- `concentration` with units\n\n### Plate Reader\nSchema: `plate-reader/REC/2024/06/plate-reader.schema.json`\n\nKey fields:\n- `absorbance`\n- `fluorescence`\n- `luminescence`\n- `well-location` (A1-H12)\n- `plate-identifier`\n\n### qPCR\nSchema: `pcr/REC/2024/06/pcr.schema.json`\n\nKey fields:\n- `cycle-threshold-result`\n- `amplification-efficiency`\n- `melt-curve-datum`\n- `target-DNA-description`\n\n### Chromatography\nSchema: `liquid-chromatography/REC/2023/09/liquid-chromatography.schema.json`\n\nKey fields:\n- `retention-time` (minutes)\n- `peak-area`\n- `peak-height`\n- `peak-width`\n- `chromatogram-data-cube`\n\n## Data Patterns\n\n### Value Datum\nSimple value with unit:\n```json\n{\n  \"value\": 1.5,\n  \"unit\": \"mL\"\n}\n```\n\n### Aggregate Datum\nCollection of related values:\n```json\n{\n  \"measurement-aggregate-document\": {\n    \"measurement-document\": [\n      { \"viable-cell-density\": {\"value\": 2.5e6, \"unit\": \"(cell/mL)\"} },\n      { \"viability\": {\"value\": 95.2, \"unit\": \"%\"} }\n    ]\n  }\n}\n```\n\n### Data Cube\nMulti-dimensional array data:\n```json\n{\n  \"cube-structure\": {\n    \"dimensions\": [{\"@componentDatatype\": \"double\", \"concept\": \"elapsed time\"}],\n    \"measures\": [{\"@componentDatatype\": \"double\", \"concept\": \"absorbance\"}]\n  },\n  \"data\": {\n    \"dimensions\": [[0, 1, 2, 3, 4]],\n    \"measures\": [[0.1, 0.2, 0.3, 0.4, 0.5]]\n  }\n}\n```\n\n## Validation\n\nValidate ASM output against official schemas:\n\n```python\nimport json\nimport jsonschema\nfrom urllib.request import urlopen\n\n# Load ASM output\nwith open(\"output.json\") as f:\n    asm = json.load(f)\n\n# Get schema URL from manifest\nschema_url = asm.get(\"$asm.manifest\", {}).get(\"$ref\")\n\n# Validate (simplified - real validation more complex)\n# Note: Full validation requires resolving $ref references\n```\n\n## Schema Repository\n\nOfficial schemas: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\nSchema structure:\n```\njson-schemas/adm/\n├── cell-counting/\n│   └── REC/2024/09/\n│       └── cell-counting.schema.json\n├── spectrophotometry/\n│   └── REC/2024/06/\n│       └── spectrophotometry.schema.json\n├── plate-reader/\n│   └── REC/2024/06/\n│       └── plate-reader.schema.json\n└── ...\n```\n\n## Common Issues\n\n### Missing Fields\nNot all instrument exports contain all ASM fields. Report completeness:\n```python\ndef report_completeness(asm, expected_fields):\n    found = set(extract_all_fields(asm))\n    missing = expected_fields - found\n    return len(found) / len(expected_fields) * 100\n```\n\n### Unit Variations\nInstruments may use different unit formats. The allotropy library normalizes these:\n- \"cells/mL\" → \"(cell/mL)\"\n- \"%\" → \"%\"\n- \"nm\" → \"nm\"\n\n### Date Formats\nASM uses ISO 8601: `2024-01-15T10:30:00Z`\n","bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md":"# Field Classification Guide\n\nThis guide helps classify instrument data fields into the correct ASM document locations. Use this when mapping raw instrument output to Allotrope Simple Model structure.\n\n## ASM Document Hierarchy\n\n```\n<technique>-aggregate-document\n├── device-system-document          # Instrument hardware info\n├── data-system-document            # Software/conversion info\n├── <technique>-document[]          # Per-run/sequence data\n│   ├── analyst                     # Who performed the analysis\n│   ├── measurement-aggregate-document\n│   │   ├── measurement-time\n│   │   ├── measurement-document[]  # Individual measurements\n│   │   │   ├── sample-document\n│   │   │   ├── device-control-aggregate-document\n│   │   │   └── [measurement fields]\n│   │   └── [aggregate-level metadata]\n│   ├── processed-data-aggregate-document\n│   │   └── processed-data-document[]\n│   │       ├── data-processing-document\n│   │       └── [processed results]\n│   └── calculated-data-aggregate-document\n│       └── calculated-data-document[]\n```\n\n## Field Classification Categories\n\n### 1. Device/Instrument Information → `device-system-document`\n\nHardware and firmware details about the physical instrument.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Instrument name | `model-number` | \"Vi-CELL BLU\", \"NanoDrop One\" |\n| Serial number | `equipment-serial-number` | \"VCB-12345\", \"SN001234\" |\n| Manufacturer | `product-manufacturer` | \"Beckman Coulter\", \"Thermo Fisher\" |\n| Firmware version | `firmware-version` | \"v2.1.3\" |\n| Device ID | `device-identifier` | \"Instrument_01\" |\n| Brand | `brand-name` | \"Beckman Coulter\" |\n\n**Rule:** If the value describes the physical instrument and doesn't change between runs, it goes in `device-system-document`.\n\n---\n\n### 2. Software/Data System Information → `data-system-document`\n\nInformation about software used for acquisition, analysis, or conversion.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Software name | `software-name` | \"Chromeleon\", \"Gen5\" |\n| Software version | `software-version` | \"7.3.2\" |\n| File name | `file-name` | \"experiment_001.xlsx\" |\n| File path | `file-identifier` | \"/data/runs/2024-01-15/\" |\n| Database ID | `ASM-converter-name` | \"allotropy v0.1.55\" |\n\n**Rule:** If the value describes software, file metadata, or data provenance, it goes in `data-system-document`.\n\n---\n\n### 3. Sample Information → `sample-document`\n\nMetadata about the biological/chemical sample being analyzed.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Sample ID | `sample-identifier` | \"Sample_A\", \"LIMS-001234\" |\n| Sample name | `written-name` | \"CHO Cell Culture Day 5\" |\n| Sample type/role | `sample-role-type` | \"unknown sample role\", \"control sample role\" |\n| Batch ID | `batch-identifier` | \"Batch-2024-001\" |\n| Description | `description` | \"Protein expression sample\" |\n| Well position | `location-identifier` | \"A1\", \"B3\" |\n\n**Rule:** If the value identifies or describes what was measured (not how), it goes in `sample-document`.\n\n---\n\n### 4. Device Control Settings → `device-control-aggregate-document`\n\nInstrument settings and parameters used during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Injection volume | `sample-volume-setting` | 10 µL |\n| Wavelength | `detector-wavelength-setting` | 254 nm |\n| Temperature | `compartment-temperature` | 37°C |\n| Flow rate | `flow-rate` | 1.0 mL/min |\n| Exposure time | `exposure-duration-setting` | 500 ms |\n| Detector gain | `detector-gain-setting` | 1.5 |\n| Illumination | `illumination-setting` | 80% |\n\n**Rule:** If the value is a configurable instrument parameter that affects measurement, it goes in `device-control-aggregate-document`.\n\n---\n\n### 5. Environmental Conditions → `device-control-document` or technique-specific\n\nAmbient or controlled environmental parameters during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Ambient temperature | `ambient-temperature` | 22.5°C |\n| Humidity | `ambient-relative-humidity` | 45% |\n| Column temperature | `compartment-temperature` | 30°C |\n| Sample temperature | `sample-temperature` | 4°C |\n| Electrophoresis temp | (technique-specific) | 26.4°C |\n\n**Rule:** Environmental conditions that affect measurement quality go with device control or in technique-specific locations.\n\n---\n\n### 6. Raw Measurement Data → `measurement-document`\n\nDirect instrument readings - the \"ground truth\" data.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Absorbance | `absorbance` | 0.523 AU |\n| Fluorescence | `fluorescence` | 12500 RFU |\n| Cell count | `total-cell-count` | 2.5e6 cells |\n| Peak area | `peak-area` | 1234.5 mAU·min |\n| Retention time | `retention-time` | 5.67 min |\n| Ct value | `cycle-threshold-result` | 24.5 |\n| Concentration (measured) | `mass-concentration` | 1.5 mg/mL |\n\n**Rule:** If the value is a direct instrument reading that wasn't computed from other values in this analysis, it goes in `measurement-document`.\n\n---\n\n### 7. Calculated/Derived Data → `calculated-data-aggregate-document`\n\nValues computed from raw measurements.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Viability % | `calculated-result` | 95.2% |\n| Concentration (from std curve) | `calculated-result` | 125 ng/µL |\n| Ratio (260/280) | `calculated-result` | 1.89 |\n| Relative quantity | `calculated-result` | 2.5x |\n| % Recovery | `calculated-result` | 98.7% |\n| CV% | `calculated-result` | 2.3% |\n\n**Calculated data document structure:**\n```json\n{\n  \"calculated-data-name\": \"viability\",\n  \"calculated-result\": {\"value\": 95.2, \"unit\": \"%\"},\n  \"calculation-description\": \"viable cells / total cells * 100\"\n}\n```\n\n**Rule:** If the value was computed from other measurements in this analysis, it goes in `calculated-data-aggregate-document`. Include `calculation-description` when possible.\n\n---\n\n### 8. Processed/Analyzed Data → `processed-data-aggregate-document`\n\nResults from data processing algorithms (peak integration, cell classification, etc.).\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Peak list | `peak-list` | Integrated peak results |\n| Cell size distribution | `cell-diameter-distribution` | Histogram data |\n| Baseline-corrected data | (in processed-data-document) | Corrected spectra |\n| Fitted curve | (in processed-data-document) | Standard curve fit |\n\n**Associated `data-processing-document`:**\n```json\n{\n  \"cell-type-processing-method\": \"trypan blue exclusion\",\n  \"cell-density-dilution-factor\": {\"value\": 2, \"unit\": \"(unitless)\"},\n  \"minimum-cell-diameter-setting\": {\"value\": 5, \"unit\": \"µm\"},\n  \"maximum-cell-diameter-setting\": {\"value\": 50, \"unit\": \"µm\"}\n}\n```\n\n**Rule:** If the value results from an algorithm or processing method applied to raw data, it goes in `processed-data-aggregate-document` with its processing parameters in `data-processing-document`.\n\n---\n\n### 9. Timing/Timestamps → Various locations\n\n| Timestamp Type | Location | ASM Field |\n|----------------|----------|-----------|\n| Measurement time | `measurement-document` | `measurement-time` |\n| Run start time | `analysis-sequence-document` | `analysis-sequence-start-time` |\n| Run end time | `analysis-sequence-document` | `analysis-sequence-end-time` |\n| Data export time | `data-system-document` | (custom) |\n\n**Rule:** Use ISO 8601 format: `2024-01-15T10:30:00Z`\n\n---\n\n### 10. Analyst/Operator Information → `<technique>-document`\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Operator name | `analyst` | \"jsmith\" |\n| Reviewer | (custom or extension) | \"Pending\" |\n\n**Rule:** Analyst goes at the technique-document level, not in individual measurements.\n\n---\n\n## Decision Tree\n\n```\nIs this field about...\n\nTHE INSTRUMENT ITSELF?\n├── Hardware specs → device-system-document\n└── Software/files → data-system-document\n\nTHE SAMPLE?\n└── Sample ID, name, type, batch → sample-document\n\nINSTRUMENT SETTINGS?\n└── Configurable parameters → device-control-aggregate-document\n\nENVIRONMENTAL CONDITIONS?\n└── Temp, humidity, etc. → device-control-document\n\nA DIRECT READING?\n└── Raw instrument output → measurement-document\n\nA COMPUTED VALUE?\n├── From other measurements → calculated-data-document\n└── From processing algorithm → processed-data-document\n\nTIMING?\n├── When measured → measurement-document.measurement-time\n└── When run started/ended → analysis-sequence-document\n\nWHO DID IT?\n└── Operator/analyst → <technique>-document.analyst\n```\n\n## Common Instrument-to-ASM Mappings\n\n> **Note:** These mappings are derived from the [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy/tree/main/src/allotropy/parsers). For authoritative mappings, consult the parser source code for your specific instrument.\n\n### Cell Counter (Vi-CELL BLU)\n*Source: `allotropy/parsers/beckman_vi_cell_blu/vi_cell_blu_structure.py`*\n\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Analysis date/time | `measurement_time` |\n| Analysis by | `analyst` |\n| Viability (%) | `viability` |\n| Viable (x10^6) cells/mL | `viable_cell_density` |\n| Total (x10^6) cells/mL | `total_cell_density` |\n| Cell count | `total_cell_count` |\n| Viable cells | `viable_cell_count` |\n| Average diameter (μm) | `average_total_cell_diameter` |\n| Average viable diameter (μm) | `average_live_cell_diameter` |\n| Average circularity | `average_total_cell_circularity` |\n| Cell type | `cell_type_processing_method` (data-processing) |\n| Dilution | `cell_density_dilution_factor` (data-processing) |\n| Min/Max Diameter | `minimum/maximum_cell_diameter_setting` (data-processing) |\n\n### Spectrophotometer (NanoDrop)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample Name | `sample_identifier` |\n| A260, A280 | `absorbance` (with wavelength) |\n| Concentration | `mass_concentration` |\n| 260/280 ratio | `a260_a280_ratio` |\n| Pathlength | `pathlength` |\n\n### Plate Reader\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Well | `location_identifier` |\n| Sample Type | `sample_role_type` |\n| Absorbance/OD | `absorbance` |\n| Fluorescence | `fluorescence` |\n| Plate ID | `container_identifier` |\n\n### Chromatography (HPLC)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Injection Volume | `injection_volume` |\n| Retention Time | `retention_time` |\n| Peak Area | `peak_area` |\n| Peak Height | `peak_height` |\n| Column Temp | `column_oven_temperature` |\n| Flow Rate | `flow_rate` |\n\n## Unit Handling\n\nOnly use units explicitly present in source data. If a value has no unit specified:\n- Use `(unitless)` as the unit value\n- Do NOT infer units based on domain knowledge\n\n## Calculated Data Traceability\n\nWhen creating calculated values, always link them to their source data using `data-source-aggregate-document`:\n\n```json\n{\n    \"calculated-data-name\": \"DIN\",\n    \"calculated-result\": {\"value\": 5.8, \"unit\": \"(unitless)\"},\n    \"calculated-data-identifier\": \"TEST_ID_147\",\n    \"data-source-aggregate-document\": {\n        \"data-source-document\": [{\n            \"data-source-identifier\": \"TEST_ID_145\",\n            \"data-source-feature\": \"sample\"\n        }]\n    }\n}\n```\n\nThis declares: \"DIN 5.8 was calculated from the sample at `TEST_ID_145`.\"\n\n**Why this matters:**\n- **Audits**: Prove a value came from specific raw data\n- **Debugging**: Trace unexpected results back to their source\n- **Reprocessing**: Know which inputs to re-analyze if algorithms change\n\n**Assign unique IDs to:**\n- Measurements, peaks, regions, and calculated values\n- Use a consistent naming pattern (e.g., `INSTRUMENT_TYPE_TEST_ID_N`)\n\nThis enables bidirectional traversal: trace from calculated → raw, or raw → all derived values.\n\n---\n\n## Nested Document Structure (Critical)\n\nA common mistake is \"flattening\" fields directly onto measurement documents when they should be wrapped in nested structures. This breaks schema compliance and loses semantic context.\n\n### Why Nesting Matters\n\nASM uses nested documents for semantic grouping:\n\n| Document | Purpose | Contains |\n|----------|---------|----------|\n| `sample document` | What was measured | Sample ID, locations, plate identifiers |\n| `device control aggregate document` | How instrument operated | Settings, parameters, techniques |\n| `custom information document` | Vendor-specific fields | Non-standard fields that don't map to ASM |\n\n### Sample Document Fields\n\nThese fields MUST be inside `sample document`, not flattened on measurement:\n\n```json\n// ❌ WRONG - Fields flattened on measurement\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample identifier\": \"Sample_A\",\n  \"location identifier\": \"A1\",\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n\n// ✅ CORRECT - Fields nested in sample document\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample document\": {\n    \"sample identifier\": \"Sample_A\",\n    \"location identifier\": \"A1\",\n    \"well plate identifier\": \"96WP001\"\n  },\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n```\n\n**Fields belonging in sample document:**\n- `sample identifier` - Sample ID/name\n- `written name` - Descriptive sample name\n- `batch identifier` - Batch/lot number\n- `sample role type` - Standard, blank, control, unknown\n- `location identifier` - Well position (A1, B3, etc.)\n- `well plate identifier` - Plate barcode\n- `description` - Sample description\n\n### Device Control Document Fields\n\nInstrument settings MUST be inside `device control aggregate document`:\n\n```json\n// ❌ WRONG - Device settings flattened\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device identifier\": \"Pod1\",\n  \"technique\": \"Custom\",\n  \"volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n\n// ✅ CORRECT - Settings nested in device control\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device control aggregate document\": {\n    \"device control document\": [{\n      \"device type\": \"liquid handler\",\n      \"device identifier\": \"Pod1\"\n    }]\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Fields belonging in device control:**\n- `device type` - Type of device\n- `device identifier` - Device ID\n- `detector wavelength setting` - Wavelength for detection\n- `compartment temperature` - Temperature setting\n- `sample volume setting` - Volume setting\n- `flow rate` - Flow rate setting\n\n### Custom Information Document\n\nVendor-specific fields that don't map to standard ASM terms go in `custom information document`:\n\n```json\n\"device control document\": [{\n  \"device type\": \"liquid handler\",\n  \"custom information document\": {\n    \"probe\": \"2\",\n    \"pod\": \"Pod1\",\n    \"source labware name\": \"Inducer\",\n    \"destination labware name\": \"GRP1\"\n  }\n}]\n```\n\n### Liquid Handler: Transfer Pairing\n\nFor liquid handlers, a measurement represents a complete transfer (aspirate + dispense), not separate operations:\n\n```json\n// ❌ WRONG - Separate records for aspirate and dispense\n[\n  {\"measurement identifier\": \"OP_001\", \"transfer type\": \"Aspirate\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}},\n  {\"measurement identifier\": \"OP_002\", \"transfer type\": \"Dispense\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}}\n]\n\n// ✅ CORRECT - Single record with source and destination\n{\n  \"measurement identifier\": \"TRANSFER_001\",\n  \"sample document\": {\n    \"source well location identifier\": \"1\",\n    \"destination well location identifier\": \"2\",\n    \"source well plate identifier\": \"96WP001\",\n    \"destination well plate identifier\": \"96WP002\"\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"},\n  \"transfer volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Pairing logic:**\n1. Match aspirate and dispense operations by probe number\n2. Create one measurement per matched pair\n3. Use `source_*` fields for aspirate location\n4. Use `destination_*` fields for dispense location\n5. Include both `aspiration volume` and `transfer volume`\n\n### Quick Reference: Nesting Decision\n\n```\nIs this field about...\n\nTHE SAMPLE BEING MEASURED?\n├── Sample ID, name, batch → sample document\n├── Well position → sample document.location identifier\n├── Plate barcode → sample document.well plate identifier\n└── Source/destination locations → sample document (with prefixes)\n\nINSTRUMENT SETTINGS?\n├── Standard settings → device control aggregate document\n└── Vendor-specific → custom information document\n\nA MEASUREMENT VALUE?\n└── Direct on measurement document (e.g., absorbance, volume)\n\nTRANSFER OPERATION TYPE?\n└── DON'T use \"transfer type\" - pair into single measurement\n    with source/destination fields instead\n```\n\n### Validation\n\nUse `validate_asm.py` to check for nesting issues:\n```bash\npython scripts/validate_asm.py output.json --reference known_good.json\n```\n\nThe validator checks for:\n- Fields incorrectly flattened on measurements\n- Missing `sample document` wrapper\n- Missing `device control aggregate document` wrapper\n- Missing `custom information document` for vendor fields\n- Liquid handler: separate transfer types instead of paired records\n\n## Sources\n\n- [Allotrope Simple Model Introduction](https://www.allotrope.org/introduction-to-allotrope-simple-model)\n- [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy)\n- [Allotrope Foundation ASM Overview](https://www.allotrope.org/asm)\n","bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md":"# Flattening ASM to 2D CSV\n\nConverting hierarchical ASM JSON to flat 2D tables for LIMS import, spreadsheet analysis, or data engineering pipelines.\n\n## Why Flatten?\n\nASM is semantically rich but hierarchical. Many systems need flat tables:\n- LIMS import (Benchling, STARLIMS, LabWare)\n- Excel/CSV analysis\n- Database loading\n- Quick visual inspection\n\n## Flattening Strategy\n\n### Core Principle\nEach **measurement** becomes one **row**. Metadata is repeated per row.\n\n### What's Excluded\nThe flattening intentionally **omits top-level ASM metadata** such as:\n- `$asm.manifest` (model version, schema URIs)\n- Root-level fields outside the technique aggregate document\n\nThis keeps the output focused on experimental data. If you need schema version tracking for compliance or audit purposes, consider storing the original ASM JSON alongside the flattened CSV, or modify the flattening script to include these fields.\n\n### Hierarchy to Columns\n```\nASM Hierarchy                    → Flat Column\n─────────────────────────────────────────────────\ndevice-system-document.\n  device-identifier              → instrument_serial_number\n  model-number                   → instrument_model\n  \nmeasurement-aggregate-document.\n  analyst                        → analyst\n  measurement-time               → measurement_datetime\n  \nmeasurement-document[].\n  sample-identifier              → sample_id\n  viable-cell-density.value      → viable_cell_density\n  viable-cell-density.unit       → viable_cell_density_unit\n  viability.value                → viability_percent\n```\n\n## Column Naming Convention\n\nUse snake_case with descriptive suffixes:\n\n| ASM Field | Flat Column |\n|-----------|-------------|\n| `viable-cell-density` | `viable_cell_density` |\n| `.value` | `_value` (or omit if obvious) |\n| `.unit` | `_unit` |\n| `measurement-time` | `measurement_datetime` |\n\n## Example: Cell Counting\n\n### ASM Input (simplified)\n```json\n{\n  \"cell-counting-aggregate-document\": {\n    \"device-system-document\": {\n      \"device-identifier\": \"VCB001\",\n      \"model-number\": \"Vi-CELL BLU\"\n    },\n    \"cell-counting-document\": [{\n      \"measurement-aggregate-document\": {\n        \"analyst\": \"jsmith\",\n        \"measurement-time\": \"2024-01-15T10:30:00Z\",\n        \"measurement-document\": [\n          {\n            \"sample-identifier\": \"Sample_A\",\n            \"viable-cell-density\": {\"value\": 2500000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 95.2, \"unit\": \"%\"}\n          },\n          {\n            \"sample-identifier\": \"Sample_B\",\n            \"viable-cell-density\": {\"value\": 1800000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 88.7, \"unit\": \"%\"}\n          }\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nsample_id,viable_cell_density,viable_cell_density_unit,viability_percent,analyst,measurement_datetime,instrument_serial_number,instrument_model\nSample_A,2500000,(cell/mL),95.2,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\nSample_B,1800000,(cell/mL),88.7,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\n```\n\n## Example: Plate Reader\n\n### ASM Input (simplified)\n```json\n{\n  \"plate-reader-aggregate-document\": {\n    \"plate-reader-document\": [{\n      \"measurement-aggregate-document\": {\n        \"plate-identifier\": \"ELISA_001\",\n        \"measurement-document\": [\n          {\"well-location\": \"A1\", \"absorbance\": {\"value\": 0.125, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A2\", \"absorbance\": {\"value\": 0.892, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A3\", \"absorbance\": {\"value\": 1.456, \"unit\": \"mAU\"}}\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nplate_id,well_position,absorbance,absorbance_unit\nELISA_001,A1,0.125,mAU\nELISA_001,A2,0.892,mAU\nELISA_001,A3,1.456,mAU\n```\n\n## Handling Data Cubes\n\nData cubes (time series, spectra) need special handling:\n\n### Option 1: Expand to rows\nEach point becomes a row:\n```csv\nsample_id,time_seconds,absorbance\nSample_A,0,0.100\nSample_A,60,0.125\nSample_A,120,0.150\n```\n\n### Option 2: Wide format\nMeasurements as columns:\n```csv\nsample_id,abs_0s,abs_60s,abs_120s\nSample_A,0.100,0.125,0.150\n```\n\n### Option 3: JSON array in cell\nKeep as array (some systems support this):\n```csv\nsample_id,absorbance_timeseries\nSample_A,\"[0.100,0.125,0.150]\"\n```\n\n## Standard Column Sets by Technique\n\n### Cell Counting\n```\nsample_id, viable_cell_density, viable_cell_density_unit, total_cell_count,\nviability_percent, average_cell_diameter, average_cell_diameter_unit,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Spectrophotometry\n```\nsample_id, wavelength_nm, absorbance, pathlength_cm, concentration,\nconcentration_unit, a260_a280_ratio, a260_a230_ratio,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Plate Reader / ELISA\n```\nplate_id, well_position, sample_type, sample_id, absorbance, absorbance_unit,\nconcentration, concentration_unit, dilution_factor, cv_percent,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### qPCR\n```\nsample_id, target_name, well_position, ct_value, ct_mean, ct_sd,\nquantity, quantity_unit, amplification_efficiency,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n## Python Implementation\n\n```python\nimport json\nimport pandas as pd\n\ndef flatten_asm(asm_dict, technique=\"cell-counting\"):\n    \"\"\"\n    Flatten ASM JSON to pandas DataFrame.\n    \n    Args:\n        asm_dict: Parsed ASM JSON\n        technique: ASM technique type\n        \n    Returns:\n        pandas DataFrame with one row per measurement\n    \"\"\"\n    rows = []\n    \n    # Get aggregate document\n    agg_key = f\"{technique}-aggregate-document\"\n    agg_doc = asm_dict.get(agg_key, {})\n    \n    # Extract device info\n    device = agg_doc.get(\"device-system-document\", {})\n    device_info = {\n        \"instrument_serial_number\": device.get(\"device-identifier\"),\n        \"instrument_model\": device.get(\"model-number\")\n    }\n    \n    # Get technique documents\n    doc_key = f\"{technique}-document\"\n    for doc in agg_doc.get(doc_key, []):\n        meas_agg = doc.get(\"measurement-aggregate-document\", {})\n        \n        # Extract common metadata\n        common = {\n            \"analyst\": meas_agg.get(\"analyst\"),\n            \"measurement_datetime\": meas_agg.get(\"measurement-time\"),\n            **device_info\n        }\n        \n        # Extract each measurement\n        for meas in meas_agg.get(\"measurement-document\", []):\n            row = {**common}\n            \n            # Flatten measurement fields\n            for key, value in meas.items():\n                if isinstance(value, dict) and \"value\" in value:\n                    # Value datum pattern\n                    col = key.replace(\"-\", \"_\")\n                    row[col] = value[\"value\"]\n                    if \"unit\" in value:\n                        row[f\"{col}_unit\"] = value[\"unit\"]\n                else:\n                    row[key.replace(\"-\", \"_\")] = value\n            \n            rows.append(row)\n    \n    return pd.DataFrame(rows)\n\n# Usage\nwith open(\"asm_output.json\") as f:\n    asm = json.load(f)\n\ndf = flatten_asm(asm, \"cell-counting\")\ndf.to_csv(\"flattened_output.csv\", index=False)\n```\n\n## LIMS Import Considerations\n\nWhen importing flattened data into a LIMS:\n- Match column names to your LIMS schema field names\n- Use ISO 8601 date format for timestamps\n- Ensure sample IDs match existing LIMS sample identifiers\n- Check if your LIMS expects units in separate columns or embedded in values\n","bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md":"# Supported Instruments\n\n## What Can This Skill Convert?\n\n**Any instrument data that maps to an Allotrope schema can be converted.** The skill uses a tiered parsing approach:\n\n1. **Native allotropy parsers** (listed below) - Highest fidelity, validated against vendor-specific formats\n2. **Flexible fallback parser** - Handles any tabular data (CSV, Excel, TXT) by mapping columns to ASM fields\n3. **PDF extraction** - Extracts tables from PDFs, then applies flexible parsing\n\nIf your instrument isn't listed below, the skill can still convert it as long as your data contains recognizable measurement fields (sample IDs, values, units, timestamps, etc.) that map to an ASM technique schema.\n\n---\n\n## Instruments with Native Allotropy Parsers\n\nThe following instruments have optimized parsers in the allotropy library with their Vendor enum values.\n\n## Cell Counting\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Beckman Coulter Vi-CELL BLU | `BECKMAN_VI_CELL_BLU` | .csv |\n| Beckman Coulter Vi-CELL XR | `BECKMAN_VI_CELL_XR` | .txt, .xls, .xlsx |\n| ChemoMetec NucleoView NC-200 | `CHEMOMETEC_NUCLEOVIEW` | .xlsx |\n| ChemoMetec NC-View | `CHEMOMETEC_NC_VIEW` | .xlsx |\n| Revvity Matrix | `REVVITY_MATRIX` | .csv |\n\n## Spectrophotometry (UV-Vis)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Thermo Fisher NanoDrop One | `THERMO_FISHER_NANODROP_ONE` | .csv, .xlsx |\n| Thermo Fisher NanoDrop Eight | `THERMO_FISHER_NANODROP_EIGHT` | .tsv, .txt |\n| Thermo Fisher NanoDrop 8000 | `THERMO_FISHER_NANODROP_8000` | .csv |\n| Unchained Labs Lunatic | `UNCHAINED_LABS_LUNATIC` | .csv, .xlsx |\n| Thermo Fisher Genesys 30 | `THERMO_FISHER_GENESYS30` | .csv |\n\n## Plate Readers (Multi-mode, Absorbance, Fluorescence)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| PerkinElmer EnVision | `PERKIN_ELMER_ENVISION` | .csv |\n| Agilent Gen5 (BioTek) | `AGILENT_GEN5` | .xlsx |\n| Agilent Gen5 Image | `AGILENT_GEN5_IMAGE` | .xlsx |\n| BMG MARS (CLARIOstar) | `BMG_MARS` | .csv, .txt |\n| BMG LabTech Smart Control | `BMG_LABTECH_SMART_CONTROL` | .csv |\n| Thermo SkanIt | `THERMO_SKANIT` | .xlsx |\n| Revvity Kaleido | `REVVITY_KALEIDO` | .csv |\n| Tecan Magellan | `TECAN_MAGELLAN` | .xlsx |\n\n## ELISA / Immunoassay\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| MSD Discovery Workbench | `MSD_WORKBENCH` | .txt |\n| MSD Methodical Mind | `METHODICAL_MIND` | .xlsx |\n| BMG MARS | `BMG_MARS` | .csv, .txt |\n\n## qPCR / PCR\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Applied Biosystems QuantStudio | `APPBIO_QUANTSTUDIO` | .xlsx |\n| Applied Biosystems QuantStudio Design & Analysis | `APPBIO_QUANTSTUDIO_DESIGNANALYSIS` | .xlsx, .csv |\n| Bio-Rad CFX Maestro | `BIORAD_CFX_MAESTRO` | .csv, .xlsx |\n| Roche LightCycler | `ROCHE_LIGHTCYCLER` | .txt |\n\n## Chromatography (HPLC, LC)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Waters Empower | `WATERS_EMPOWER` | .xml |\n| Thermo Fisher Chromeleon | `THERMO_FISHER_CHROMELEON` | .xml |\n| Agilent ChemStation | `AGILENT_CHEMSTATION` | .csv |\n\n## Electrophoresis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Agilent TapeStation | `AGILENT_TAPESTATION` | .csv |\n| PerkinElmer LabChip | `PERKIN_ELMER_LABCHIP` | .csv |\n\n## Flow Cytometry\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| BD Biosciences FACSDiva | `BD_BIOSCIENCES_FACSDIVA` | .xml |\n| FlowJo | `FLOWJO` | .wsp |\n\n## Solution Analysis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Roche Cedex BioHT | `ROCHE_CEDEX_BIOHT` | .xlsx |\n| Beckman Coulter Biomek | `BECKMAN_COULTER_BIOMEK` | .csv |\n\n## Auto-Detection Patterns\n\nThe skill attempts to identify instrument type from file contents using these patterns:\n\n### Vi-CELL BLU\n- Column headers: \"Sample ID\", \"Viable cells (x10^6 cells/mL)\", \"Viability (%)\"\n- File structure: CSV with specific column order\n\n### Vi-CELL XR\n- Column headers: \"Sample\", \"Total cells/ml\", \"Viable cells/ml\"\n- Multiple export formats supported\n\n### NanoDrop\n- Column headers: \"Sample Name\", \"Nucleic Acid Conc.\", \"A260\", \"A280\"\n- 260/280 and 260/230 ratio columns\n\n### Plate Readers (General)\n- Well identifiers (A1-H12 pattern)\n- \"Plate\", \"Well\", \"Sample\" columns\n- Block-based structure with metadata headers\n\n### ELISA\n- Standard curve data with concentrations\n- OD/absorbance readings\n- Sample/blank/standard classification\n\n## Using Vendor Enums\n\n```python\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}: {v.value}\")\n\n# Convert file\nasm = allotrope_from_file(\"data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Checking Supported Status\n\n```python\nfrom allotropy.parser_factory import get_parser\n\n# Check if a vendor/file combo is supported\ntry:\n    parser = get_parser(Vendor.BECKMAN_VI_CELL_BLU)\n    print(\"Supported!\")\nexcept Exception as e:\n    print(f\"Not supported: {e}\")\n```\n","bio-research/skills/nextflow-development/SKILL.md":"---\nname: nextflow-development\ndescription: Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation.\n---\n\n# nf-core Pipeline Deployment\n\nRun nf-core bioinformatics pipelines on local or public sequencing data.\n\n**Target users:** Bench scientists and researchers without specialized bioinformatics training who need to run large-scale omics analyses—differential expression, variant calling, or chromatin accessibility analysis.\n\n## Workflow Checklist\n\n```\n- [ ] Step 0: Acquire data (if from GEO/SRA)\n- [ ] Step 1: Environment check (MUST pass)\n- [ ] Step 2: Select pipeline (confirm with user)\n- [ ] Step 3: Run test profile (MUST pass)\n- [ ] Step 4: Create samplesheet\n- [ ] Step 5: Configure & run (confirm genome with user)\n- [ ] Step 6: Verify outputs\n```\n\n---\n\n## Step 0: Acquire Data (GEO/SRA Only)\n\n**Skip this step if user has local FASTQ files.**\n\nFor public datasets, fetch from GEO/SRA first. See [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) for the full workflow.\n\n**Quick start:**\n\n```bash\n# 1. Get study info\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download (interactive mode)\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 --fastq-dir ./fastq -o samplesheet.csv\n```\n\n**DECISION POINT:** After fetching study info, confirm with user:\n- Which sample subset to download (if multiple data types)\n- Suggested genome and pipeline\n\nThen continue to Step 1.\n\n---\n\n## Step 1: Environment Check\n\n**Run first. Pipeline will fail without passing environment.**\n\n```bash\npython scripts/check_environment.py\n```\n\nAll critical checks must pass. If any fail, provide fix instructions:\n\n### Docker issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | Install from https://docs.docker.com/get-docker/ |\n| Permission denied | `sudo usermod -aG docker $USER` then re-login |\n| Daemon not running | `sudo systemctl start docker` |\n\n### Nextflow issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | `curl -s https://get.nextflow.io \\| bash && mv nextflow ~/bin/` |\n| Version < 23.04 | `nextflow self-update` |\n\n### Java issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed / < 11 | `sudo apt install openjdk-11-jdk` |\n\n**Do not proceed until all checks pass.** For HPC/Singularity, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 2: Select Pipeline\n\n**DECISION POINT: Confirm with user before proceeding.**\n\n| Data Type | Pipeline | Version | Goal |\n|-----------|----------|---------|------|\n| RNA-seq | `rnaseq` | 3.22.2 | Gene expression |\n| WGS/WES | `sarek` | 3.7.1 | Variant calling |\n| ATAC-seq | `atacseq` | 2.1.2 | Chromatin accessibility |\n\nAuto-detect from data:\n```bash\npython scripts/detect_data_type.py /path/to/data\n```\n\nFor pipeline-specific details:\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md)\n- [references/pipelines/sarek.md](references/pipelines/sarek.md)\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md)\n\n---\n\n## Step 3: Run Test Profile\n\n**Validates environment with small data. MUST pass before real data.**\n\n```bash\nnextflow run nf-core/<pipeline> -r <version> -profile test,docker --outdir test_output\n```\n\n| Pipeline | Command |\n|----------|---------|\n| rnaseq | `nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq` |\n| sarek | `nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek` |\n| atacseq | `nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq` |\n\nVerify:\n```bash\nls test_output/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\nIf test fails, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 4: Create Samplesheet\n\n### Generate automatically\n\n```bash\npython scripts/generate_samplesheet.py /path/to/data <pipeline> -o samplesheet.csv\n```\n\nThe script:\n- Discovers FASTQ/BAM/CRAM files\n- Pairs R1/R2 reads\n- Infers sample metadata\n- Validates before writing\n\n**For sarek:** Script prompts for tumor/normal status if not auto-detected.\n\n### Validate existing samplesheet\n\n```bash\npython scripts/generate_samplesheet.py --validate samplesheet.csv <pipeline>\n```\n\n### Samplesheet formats\n\n**rnaseq:**\n```csv\nsample,fastq_1,fastq_2,strandedness\nSAMPLE1,/abs/path/R1.fq.gz,/abs/path/R2.fq.gz,auto\n```\n\n**sarek:**\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,/abs/path/tumor_R1.fq.gz,/abs/path/tumor_R2.fq.gz,1\npatient1,normal,L001,/abs/path/normal_R1.fq.gz,/abs/path/normal_R2.fq.gz,0\n```\n\n**atacseq:**\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/abs/path/ctrl_R1.fq.gz,/abs/path/ctrl_R2.fq.gz,1\n```\n\n---\n\n## Step 5: Configure & Run\n\n### 5a. Check genome availability\n\n```bash\npython scripts/manage_genomes.py check <genome>\n# If not installed:\npython scripts/manage_genomes.py download <genome>\n```\n\nCommon genomes: GRCh38 (human), GRCh37 (legacy), GRCm39 (mouse), R64-1-1 (yeast), BDGP6 (fly)\n\n### 5b. Decision points\n\n**DECISION POINT: Confirm with user:**\n\n1. **Genome:** Which reference to use\n2. **Pipeline-specific options:**\n   - **rnaseq:** aligner (star_salmon recommended, hisat2 for low memory)\n   - **sarek:** tools (haplotypecaller for germline, mutect2 for somatic)\n   - **atacseq:** read_length (50, 75, 100, or 150)\n\n### 5c. Run pipeline\n\n```bash\nnextflow run nf-core/<pipeline> \\\n    -r <version> \\\n    -profile docker \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome <genome> \\\n    -resume\n```\n\n**Key flags:**\n- `-r`: Pin version\n- `-profile docker`: Use Docker (or `singularity` for HPC)\n- `--genome`: iGenomes key\n- `-resume`: Continue from checkpoint\n\n**Resource limits (if needed):**\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n---\n\n## Step 6: Verify Outputs\n\n### Check completion\n\n```bash\nls results/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\n### Key outputs by pipeline\n\n**rnaseq:**\n- `results/star_salmon/salmon.merged.gene_counts.tsv` - Gene counts\n- `results/star_salmon/salmon.merged.gene_tpm.tsv` - TPM values\n\n**sarek:**\n- `results/variant_calling/*/` - VCF files\n- `results/preprocessing/recalibrated/` - BAM files\n\n**atacseq:**\n- `results/macs2/narrowPeak/` - Peak calls\n- `results/bwa/mergedLibrary/bigwig/` - Coverage tracks\n\n---\n\n## Quick Reference\n\nFor common exit codes and fixes, see [references/troubleshooting.md](references/troubleshooting.md).\n\n### Resume failed run\n\n```bash\nnextflow run nf-core/<pipeline> -resume\n```\n\n---\n\n## References\n\n- [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) - Downloading public GEO/SRA data\n- [references/troubleshooting.md](references/troubleshooting.md) - Common issues and fixes\n- [references/installation.md](references/installation.md) - Environment setup\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md) - RNA-seq pipeline details\n- [references/pipelines/sarek.md](references/pipelines/sarek.md) - Variant calling details\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md) - ATAC-seq details\n\n---\n\n## Disclaimer\n\nThis skill is provided as a prototype example demonstrating how to integrate nf-core bioinformatics pipelines into Claude Code for automated analysis workflows. The current implementation supports three pipelines (rnaseq, sarek, and atacseq), serving as a foundation that enables the community to expand support to the full set of nf-core pipelines.\n\nIt is intended for educational and research purposes and should not be considered production-ready without appropriate validation for your specific use case. Users are responsible for ensuring their computing environment meets pipeline requirements and for verifying analysis results.\n\nAnthropic does not guarantee the accuracy of bioinformatics outputs, and users should follow standard practices for validating computational analyses. This integration is not officially endorsed by or affiliated with the nf-core community.\n\n## Attribution\n\nWhen publishing results, cite the appropriate pipeline. Citations are available in each nf-core repository's CITATIONS.md file (e.g., https://github.com/nf-core/rnaseq/blob/3.22.2/CITATIONS.md).\n\n## Licenses\n\n- **nf-core pipelines:** MIT License (https://nf-co.re/about)\n- **Nextflow:** Apache License, Version 2.0 (https://www.nextflow.io/about-us.html)\n- **NCBI SRA Toolkit:** Public Domain (https://github.com/ncbi/sra-tools/blob/master/LICENSE)\n","bio-research/skills/nextflow-development/references/geo-sra-acquisition.md":"# GEO/SRA Data Acquisition\n\nDownload raw sequencing data from NCBI GEO/SRA and prepare it for nf-core pipelines.\n\n**Use this when:** Reanalyzing published datasets, validating findings, or comparing results against public cohorts.\n\n## Table of Contents\n\n- [Workflow Overview](#workflow-overview)\n- [Step 1: Fetch Study Information](#step-1-fetch-study-information)\n- [Step 2: Review Sample Groups](#step-2-review-sample-groups)\n- [Step 3: Download FASTQ Files](#step-3-download-fastq-files)\n- [Step 4: Generate Samplesheet](#step-4-generate-samplesheet)\n- [Step 5: Run nf-core Pipeline](#step-5-run-nf-core-pipeline)\n- [Supported Pipelines](#supported-pipelines)\n- [Supported Organisms](#supported-organisms)\n- [Complete Example](#complete-example)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Workflow Overview\n\nExample: \"Find differentially expressed genes in GSE309891 (drug-treated vs control)\"\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                    GEO/SRA DATA ACQUISITION                     │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Fetch study info     │\n                 │   • Query NCBI/SRA     │\n                 │   • Get metadata       │\n                 │   • Detect organism    │\n                 │   • Identify data type │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Present summary      │\n                 │   • Organism: Human    │\n                 │   • Genome: GRCh38     │\n                 │   • Type: RNA-Seq      │\n                 │   • Pipeline: rnaseq   │\n                 │   • Samples: 12        │\n                 │     (6 treated,        │\n                 │      6 control)        │\n                 │   • Size: ~24 GB       │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER CONFIRMS  │◄──── Decision point\n                    │  genome/pipeline│\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Select samples       │\n                 │   • Group by condition │\n                 │   • Show treated/ctrl  │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER SELECTS   │◄──── Decision point\n                    │  sample subset  │\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Download FASTQs      │\n                 │   • 24 files (R1+R2)   │\n                 │   • Parallel transfers │\n                 │   • Auto-resume        │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Generate samplesheet │\n                 │   • Map SRR to files   │\n                 │   • Pair R1/R2         │\n                 │   • Assign conditions  │\n                 └────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                    NF-CORE PIPELINE EXECUTION                   │\n│              (Continue with Step 1 of main workflow)            │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Instructions for Claude\n\nWhen assisting users with GEO/SRA data acquisition:\n\n1. **Always fetch study info first** to show the user what data is available\n2. **Ask for confirmation before downloading** - Present the sample groups and sizes, then ask which subset to download using AskUserQuestion\n3. **Suggest appropriate genome and pipeline** based on the organism and data type\n4. **Return to main SKILL.md workflow** after data preparation is complete\n\nExample confirmation question:\n```\nQuestion: \"Which sample group would you like to download?\"\nOptions:\n  - \"RNA-Seq:PAIRED (42 samples, ~87 GB)\"\n  - \"RNA-Seq:SINGLE (7 samples, ~4.5 GB)\"\n  - \"All samples (49 samples, ~92 GB)\"\n```\n\n---\n\n## Step 1: Fetch Study Information\n\nGet metadata about a GEO study before downloading.\n\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004\n```\n\n**Output includes:**\n- Study title and summary\n- Organism (with auto-suggested genome)\n- Number of samples and runs\n- Data types (RNA-Seq, ATAC-seq, etc.)\n- Estimated download size\n- Suggested nf-core pipeline\n\n**Save info to JSON:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004 -o study_info.json\n```\n\n---\n\n## Step 2: Review Sample Groups\n\nView sample groups organized by data type and layout. This is useful for studies with mixed data types.\n\n```bash\npython scripts/sra_geo_fetch.py groups <GEO_ID>\n```\n\n**Example output:**\n```\nSample Group          Count Layout     GSM Range                    Est. Size\n--------------------------------------------------------------------------------\nRNA-Seq                  42 PAIRED     GSM2879618...(42 samples)      87.4 GB\nRNA-Seq                   7 SINGLE     GSM2976181-GSM2976187           4.5 GB\n--------------------------------------------------------------------------------\nTOTAL                    49                                           91.9 GB\n\nAvailable groups for --subset option:\n  1. \"RNA-Seq:PAIRED\" - 42 samples (~87.4 GB)\n  2. \"RNA-Seq:SINGLE\" - 7 samples (~4.5 GB)\n```\n\n**List individual runs:**\n```bash\npython scripts/sra_geo_fetch.py list <GEO_ID>\n\n# Filter by data type\npython scripts/sra_geo_fetch.py list GSE110004 --filter \"RNA-Seq:PAIRED\"\n```\n\n**DECISION POINT:** Review the sample groups. Decide which subset to download if the study has multiple data types.\n\n---\n\n## Step 3: Download FASTQ Files\n\nDownload FASTQ files from ENA (faster than SRA).\n\n```bash\npython scripts/sra_geo_fetch.py download <GEO_ID> -o <OUTPUT_DIR>\n```\n\n**Options:**\n- `-o, --output`: Output directory (required)\n- `-i, --interactive`: Interactively select sample group to download\n- `-s, --subset`: Filter by data type (e.g., \"RNA-Seq:PAIRED\")\n- `-p, --parallel`: Parallel downloads (default: 4)\n- `-t, --timeout`: Download timeout in seconds (default: 600)\n\n### Interactive Mode (Recommended)\n\nUse `-i` flag for interactive sample selection when the study has multiple data types:\n\n```bash\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n```\n\n**Interactive output:**\n```\n============================================================\n  SELECT SAMPLE GROUP TO DOWNLOAD\n============================================================\n\n  [1] RNA-Seq (paired)\n      Samples: 42\n      GSM: GSM2879618...(42 samples)\n      Size: ~87.4 GB\n\n  [2] RNA-Seq (single)\n      Samples: 7\n      GSM: GSM2976181-GSM2976187\n      Size: ~4.5 GB\n\n  [0] Download ALL (49 samples)\n------------------------------------------------------------\n\nEnter selection (0-2):\n```\n\n### Direct Subset Selection\n\nAlternatively, specify the subset directly:\n\n```bash\n# Download only RNA-Seq paired-end data\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq \\\n    --subset \"RNA-Seq:PAIRED\" --parallel 6\n```\n\n**Note:** Downloads automatically skip existing files. Resume interrupted downloads by re-running the command.\n\n---\n\n## Step 4: Generate Samplesheet\n\nCreate a samplesheet compatible with nf-core pipelines.\n\n```bash\npython scripts/sra_geo_fetch.py samplesheet <GEO_ID> \\\n    --fastq-dir <FASTQ_DIR> \\\n    -o samplesheet.csv\n```\n\n**Options:**\n- `-f, --fastq-dir`: Directory containing downloaded FASTQ files (required)\n- `-o, --output`: Output samplesheet path (default: samplesheet.csv)\n- `-p, --pipeline`: Target pipeline (auto-detected if not specified)\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n```\n\n**Output:** The script will:\n1. Create samplesheet in the format required by the target pipeline\n2. Display suggested genome reference\n3. Show suggested nf-core command\n\n---\n\n## Step 5: Run nf-core Pipeline\n\nAfter generating the samplesheet, the script provides a suggested command.\n\n**Example output:**\n```\nSuggested command:\n   nextflow run nf-core/rnaseq \\\n       --input samplesheet.csv \\\n       --outdir results \\\n       --genome R64-1-1 \\\n       -profile docker\n```\n\n**DECISION POINT:** Review and confirm:\n1. Is the suggested pipeline correct?\n2. Is the genome reference correct for your organism?\n3. Do you need additional pipeline options?\n\nThen return to the main SKILL.md workflow (Step 1: Environment Check) to proceed with pipeline execution.\n\n---\n\n## Supported Pipelines\n\nThe skill auto-detects appropriate pipelines based on library strategy. Pipelines marked with ★ are fully supported with configs, samplesheet generation, and documentation. Others are suggested but require manual setup following nf-core documentation.\n\n| Library Strategy | Suggested Pipeline | Support |\n|------------------|--------------------|---------|\n| RNA-Seq          | nf-core/rnaseq     | ★ Full  |\n| ATAC-seq         | nf-core/atacseq    | ★ Full  |\n| WGS/WXS          | nf-core/sarek      | ★ Full  |\n| ChIP-seq         | nf-core/chipseq    | Manual  |\n| Bisulfite-Seq    | nf-core/methylseq  | Manual  |\n| miRNA-Seq        | nf-core/smrnaseq   | Manual  |\n| Amplicon         | nf-core/ampliseq   | Manual  |\n\n---\n\n## Supported Organisms\n\nCommon organisms with auto-suggested genomes:\n\n| Organism | Genome | Notes |\n|----------|--------|-------|\n| Homo sapiens | GRCh38 | Human reference |\n| Mus musculus | GRCm39 | Mouse reference |\n| Saccharomyces cerevisiae | R64-1-1 | Yeast S288C |\n| Drosophila melanogaster | BDGP6 | Fruit fly |\n| Caenorhabditis elegans | WBcel235 | C. elegans |\n| Danio rerio | GRCz11 | Zebrafish |\n| Arabidopsis thaliana | TAIR10 | Arabidopsis |\n| Rattus norvegicus | Rnor_6.0 | Rat |\n\nSee `scripts/config/genomes.yaml` for the full list.\n\n---\n\n## Complete Example\n\nReanalyze GSE110004 (yeast RNA-seq):\n\n```bash\n# 1. Get study info and sample groups\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download with interactive selection\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n# Select option [1] for RNA-Seq paired-end samples\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n\n# 4. Run nf-core/rnaseq (continue with main SKILL.md workflow)\nnextflow run nf-core/rnaseq \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome R64-1-1 \\\n    -profile docker\n```\n\n### Alternative: Non-interactive Download\n\n```bash\n# Review sample groups first\npython scripts/sra_geo_fetch.py groups GSE110004\n\n# Download specific subset directly\npython scripts/sra_geo_fetch.py download GSE110004 \\\n    --subset \"RNA-Seq:PAIRED\" \\\n    -o ./fastq \\\n    --parallel 4\n```\n\n---\n\n## Troubleshooting\n\n### ENA Download Fails\nIf ENA downloads fail, the data may need to be fetched directly from SRA:\n\n```bash\n# Create SRA tools environment\nconda create -n sra_tools -c bioconda sra-tools\n\n# Download with prefetch + fasterq-dump\nconda run -n sra_tools prefetch SRR6357070\nconda run -n sra_tools fasterq-dump SRR6357070 -O ./fastq\n```\n\n### No SRA Runs Found\nSome GEO datasets only have processed data, not raw sequencing reads. Check:\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\nIf \"Runs: 0\", the dataset may not have raw data in SRA.\n\n### SuperSeries Support\nGEO SuperSeries (which contain multiple SubSeries) are automatically handled. The tool will:\n1. Detect that a GEO ID is a SuperSeries\n2. Find the linked BioProject accession\n3. Fetch all SRA runs from the BioProject\n\nExample: GSE110004 is a SuperSeries that links to BioProject PRJNA432544.\n\n### Genome Not Recognized\nIf the organism is not in the genome mapping, manually specify the genome:\n```bash\n# Check available iGenomes\npython scripts/manage_genomes.py list\n\n# Or provide custom reference files to nf-core\nnextflow run nf-core/rnaseq --fasta /path/to/genome.fa --gtf /path/to/genes.gtf\n```\n\n---\n\n## Requirements\n\n- Python 3.8+\n- `requests` library (optional but recommended)\n- `pyyaml` library (optional, for genome config)\n- Network access to NCBI and ENA\n\nInstall optional dependencies:\n```bash\npip install requests pyyaml\n```\n","bio-research/skills/nextflow-development/references/installation.md":"# Installation\n\n## Contents\n- [Quick install](#quick-install)\n- [Docker setup](#docker-setup)\n- [Singularity setup (HPC)](#singularity-setup-hpc)\n- [nf-core tools (optional)](#nf-core-tools-optional)\n- [Verify installation](#verify-installation)\n- [Common issues](#common-issues)\n\n## Quick install\n\n```bash\n# Nextflow\ncurl -s https://get.nextflow.io | bash\nmv nextflow ~/bin/\nexport PATH=\"$HOME/bin:$PATH\"\n\n# Verify\nnextflow -version\njava -version  # Requires 11+\n```\n\n## Docker setup\n\n### Linux\n```bash\nsudo apt-get update && sudo apt-get install docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n### macOS\nDownload Docker Desktop: https://docker.com/products/docker-desktop\n\n### Verify\n```bash\ndocker run hello-world\n```\n\n## Singularity setup (HPC)\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install singularity-container\n\n# Or via conda\nconda install -c conda-forge singularity\n```\n\n### Configure cache\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\necho 'export NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"' >> ~/.bashrc\n```\n\n## nf-core tools (optional)\n\n```bash\npip install nf-core\n```\n\nUseful commands:\n```bash\nnf-core list                    # Available pipelines\nnf-core launch rnaseq           # Interactive parameter selection\nnf-core download rnaseq -r 3.14.0  # Download for offline use\n```\n\n## Verify installation\n\n```bash\nnextflow run nf-core/demo -profile test,docker --outdir test_demo\nls test_demo/\n```\n\n## Common issues\n\n**Java version wrong:**\n```bash\nexport JAVA_HOME=/path/to/java11\n```\n\n**Docker permission denied:**\n```bash\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n**Nextflow not found:**\n```bash\necho 'export PATH=\"$HOME/bin:$PATH\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n","bio-research/skills/nextflow-development/references/pipelines/atacseq.md":"# nf-core/atacseq\n\n**Version:** 2.1.2\n\n**Official Documentation:** https://nf-co.re/atacseq/2.1.2/\n**GitHub:** https://github.com/nf-core/atacseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/atacseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Quality metrics](#quality-metrics)\n\n## Test command\n\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\n```\n\nExpected: ~15 min, creates peaks and BigWig tracks.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/path/to/ctrl_rep1_R1.fq.gz,/path/to/ctrl_rep1_R2.fq.gz,1\nCONTROL,/path/to/ctrl_rep2_R1.fq.gz,/path/to/ctrl_rep2_R2.fq.gz,2\nTREATMENT,/path/to/treat_rep1_R1.fq.gz,/path/to/treat_rep1_R2.fq.gz,1\nTREATMENT,/path/to/treat_rep2_R1.fq.gz,/path/to/treat_rep2_R2.fq.gz,2\n```\n\n| Column | Required | Description |\n|--------|----------|-------------|\n| sample | Yes | Condition/group identifier |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | Yes | Absolute path to R2 (paired-end required) |\n| replicate | Yes | Replicate number (integer) |\n\n### Design file for differential analysis\n```csv\nsample,condition\nCONTROL,control\nTREATMENT,treatment\n```\n\nUse with `--deseq2_design design.csv`.\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 --read_length 50\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10` |\n| `--read_length` | 50 | Read length for MACS2 optimization |\n| `--narrow_peak` | true | Narrow peaks (false for broad) |\n| `--mito_name` | chrM | Mitochondrial chromosome name |\n| `--keep_mito` | false | Keep mitochondrial reads |\n| `--min_reps_consensus` | 1 | Min replicates for consensus peaks |\n\n### Differential accessibility\n```bash\n--deseq2_design design.csv\n```\n\n## Output files\n\n```\nresults/\n├── bwa/mergedLibrary/\n│   ├── *.mLb.mkD.sorted.bam     # Filtered, deduplicated alignments\n│   └── bigwig/\n│       └── *.bigWig             # Coverage tracks\n├── macs2/narrowPeak/\n│   ├── *.narrowPeak             # Peak calls\n│   └── consensus/\n│       └── consensus_peaks.bed  # Merged peaks across replicates\n├── deeptools/\n│   ├── plotFingerprint/         # Library complexity\n│   └── plotProfile/             # TSS enrichment\n├── deseq2/                      # If --deseq2_design provided\n└── multiqc/\n```\n\n**Key outputs:**\n- `*.mLb.mkD.sorted.bam`: Analysis-ready alignments\n- `*.narrowPeak`: MACS2 peak calls (BED format)\n- `consensus_peaks.bed`: Consensus peaks across replicates\n- `*.bigWig`: Genome browser tracks\n\n## Quality metrics\n\n| Metric | Good | Acceptable | Poor |\n|--------|------|------------|------|\n| Mapped reads | >80% | 60-80% | <60% |\n| Mitochondrial | <20% | 20-40% | >40% |\n| Duplicates | <30% | 30-50% | >50% |\n| FRiP | >30% | 15-30% | <15% |\n| TSS enrichment | >6 | 4-6 | <4 |\n\n**Fragment size**: Should show nucleosomal periodicity (~50bp nucleosome-free, ~200bp mono-nucleosome).\n\n## Downstream analysis\n\n```r\nlibrary(ChIPseeker)\nlibrary(GenomicRanges)\npeaks <- import(\"consensus_peaks.bed\")\npeakAnno <- annotatePeak(peaks, TxDb = TxDb.Hsapiens.UCSC.hg38.knownGene)\n```\n\n**Motif analysis:**\n```bash\nfindMotifsGenome.pl consensus_peaks.bed hg38 motifs/ -size 200\n```\n\n## Troubleshooting\n\n**Low FRiP**: Check library complexity in `plotFingerprint/`. May indicate over-transposition.\n\n**Few peaks**: Lower threshold with `--macs_qvalue 0.1` or use `--narrow_peak false` for broader peaks.\n\n**High duplicates**: Normal for low-input; pipeline removes by default.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/atacseq/2.1.2/parameters/\n- **Output documentation:** https://nf-co.re/atacseq/2.1.2/docs/output/\n- **Usage documentation:** https://nf-co.re/atacseq/2.1.2/docs/usage/\n","bio-research/skills/nextflow-development/references/pipelines/rnaseq.md":"# nf-core/rnaseq\n\n**Version:** 3.22.2\n\n**Official Documentation:** https://nf-co.re/rnaseq/3.22.2/\n**GitHub:** https://github.com/nf-core/rnaseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/rnaseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Downstream analysis](#downstream-analysis)\n\n## Test command\n\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\n```\n\nExpected: ~15 min, creates `multiqc/multiqc_report.html`.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,strandedness\nCONTROL_REP1,/path/to/ctrl1_R1.fq.gz,/path/to/ctrl1_R2.fq.gz,auto\nCONTROL_REP2,/path/to/ctrl2_R1.fq.gz,/path/to/ctrl2_R2.fq.gz,auto\nTREATMENT_REP1,/path/to/treat1_R1.fq.gz,/path/to/treat1_R2.fq.gz,auto\n```\n\n| Column | Required | Values |\n|--------|----------|--------|\n| sample | Yes | Alphanumeric, underscores allowed |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | No | Absolute path to R2 (empty for single-end) |\n| strandedness | Yes | `auto`, `forward`, `reverse`, `unstranded` |\n\n**Strandedness guide:**\n- `auto`: Inferred from data (recommended)\n- `forward`: TruSeq Stranded, dUTP protocols\n- `reverse`: Ligation-based protocols\n- `unstranded`: Non-stranded protocols\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--aligner` | `star_salmon` | Options: `star_salmon`, `star_rsem`, `hisat2` |\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10`, `BDGP6` |\n| `--pseudo_aligner` | - | Set to `salmon` for pseudo-alignment only |\n| `--skip_trimming` | false | Skip adapter trimming |\n| `--skip_alignment` | false | Pseudo-alignment only |\n\n### Custom reference\n```bash\n--fasta /path/to/genome.fa \\\n--gtf /path/to/annotation.gtf \\\n--star_index /path/to/star/  # Optional, builds if absent\n```\n\n## Output files\n\n```\nresults/\n├── star_salmon/\n│   ├── salmon.merged.gene_counts.tsv    # Raw counts for DESeq2\n│   ├── salmon.merged.gene_tpm.tsv       # TPM values\n│   └── *.bam                            # Alignments\n├── multiqc/\n│   └── multiqc_report.html              # QC summary\n└── pipeline_info/\n```\n\n**Key outputs:**\n- `salmon.merged.gene_counts.tsv`: Input for DESeq2/edgeR\n- `salmon.merged.gene_tpm.tsv`: Normalized expression\n\n## Downstream analysis\n\n```r\nlibrary(DESeq2)\ncounts <- read.delim(\"salmon.merged.gene_counts.tsv\", row.names=1)\ncoldata <- data.frame(\n    condition = factor(c(\"control\", \"control\", \"treatment\", \"treatment\"))\n)\ndds <- DESeqDataSetFromMatrix(\n    countData = round(counts),\n    colData = coldata,\n    design = ~ condition\n)\ndds <- DESeq(dds)\nres <- results(dds, contrast = c(\"condition\", \"treatment\", \"control\"))\n```\n\n## Troubleshooting\n\n**STAR index fails**: Increase memory with `--max_memory '64.GB'` or provide pre-built `--star_index`.\n\n**Low alignment rate**: Verify genome matches species; check FastQC for adapter contamination.\n\n**Strandedness detection fails**: Specify explicitly with `--strandedness reverse`.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/rnaseq/3.22.2/parameters/\n- **Output documentation:** https://nf-co.re/rnaseq/3.22.2/docs/output/\n- **Usage documentation:** https://nf-co.re/rnaseq/3.22.2/docs/usage/\n","bio-research/skills/nextflow-development/references/pipelines/sarek.md":"# nf-core/sarek\n\n**Version:** 3.7.1\n\n**Official Documentation:** https://nf-co.re/sarek/3.7.1/\n**GitHub:** https://github.com/nf-core/sarek\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/sarek/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Variant calling modes](#variant-calling-modes)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n\n## Test command\n\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\n```\n\nExpected: ~20 min, creates aligned BAMs and variant calls.\n\n## Samplesheet format\n\n### From FASTQ\n```csv\npatient,sample,lane,fastq_1,fastq_2\npatient1,tumor,L001,/path/to/tumor_L001_R1.fq.gz,/path/to/tumor_L001_R2.fq.gz\npatient1,tumor,L002,/path/to/tumor_L002_R1.fq.gz,/path/to/tumor_L002_R2.fq.gz\npatient1,normal,L001,/path/to/normal_R1.fq.gz,/path/to/normal_R2.fq.gz\n```\n\n### From BAM/CRAM\n```csv\npatient,sample,bam,bai\npatient1,tumor,/path/to/tumor.bam,/path/to/tumor.bam.bai\npatient1,normal,/path/to/normal.bam,/path/to/normal.bam.bai\n```\n\n### With tumor/normal status\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,tumor_R1.fq.gz,tumor_R2.fq.gz,1\npatient1,normal,L001,normal_R1.fq.gz,normal_R2.fq.gz,0\n```\n\n`status`: 0 = normal, 1 = tumor\n\n## Variant calling modes\n\n### Germline (single sample)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools haplotypecaller,snpeff\n```\n\n### Somatic (tumor-normal pair)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools mutect2,strelka,snpeff\n```\n\n### WES (exome)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --wes --intervals /path/to/targets.bed \\\n    --tools haplotypecaller,snpeff\n```\n\n### Joint germline (cohort)\n```bash\n--tools haplotypecaller --joint_germline\n```\n\n## Parameters\n\n### Available tools\n\n**Germline callers:**\n- `haplotypecaller`: GATK HaplotypeCaller\n- `freebayes`: FreeBayes\n- `deepvariant`: DeepVariant (GPU optional)\n- `strelka`: Strelka2 germline\n\n**Somatic callers:**\n- `mutect2`: GATK Mutect2\n- `strelka`: Strelka2 somatic\n- `manta`: Structural variants\n\n**CNV callers:**\n- `ascat`: Copy number\n- `controlfreec`: CNV detection\n- `tiddit`: SV calling\n\n**Annotation:**\n- `snpeff`: Functional annotation\n- `vep`: Variant Effect Predictor\n\n### Key parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--tools` | - | Comma-separated list of tools |\n| `--genome` | - | `GRCh38`, `GRCh37` |\n| `--wes` | false | Exome mode (requires `--intervals`) |\n| `--intervals` | - | BED file for targeted regions |\n| `--joint_germline` | false | Joint calling for cohorts |\n| `--skip_bqsr` | false | Skip base quality recalibration |\n\n## Output files\n\n```\nresults/\n├── preprocessing/\n│   └── recalibrated/           # Analysis-ready BAMs\n│       └── *.recal.bam\n├── variant_calling/\n│   ├── haplotypecaller/        # Germline VCFs\n│   ├── mutect2/                # Somatic VCFs (filtered)\n│   └── strelka/\n├── annotation/\n│   └── snpeff/                 # Annotated VCFs\n└── multiqc/\n```\n\n## Troubleshooting\n\n**BQSR fails**: Check known sites available for genome. Skip with `--skip_bqsr` for non-standard references.\n\n**Mutect2 no variants**: Verify tumor/normal pairing in samplesheet (check `status` column).\n\n**Out of memory**: `--max_memory '128.GB'` for WGS.\n\n**DeepVariant GPU**: Ensure NVIDIA Docker runtime configured.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/sarek/3.7.1/parameters/\n- **Output documentation:** https://nf-co.re/sarek/3.7.1/docs/output/\n- **Usage documentation:** https://nf-co.re/sarek/3.7.1/docs/usage/\n","bio-research/skills/nextflow-development/references/troubleshooting.md":"# Troubleshooting\n\nQuick fixes for common nf-core pipeline issues.\n\n## Contents\n- [Exit Codes](#exit-codes)\n- [HPC/Singularity Issues](#hpcsingularity-issues)\n- [Pipeline Failures](#pipeline-failures)\n- [RNA-seq Specific](#rna-seq-specific)\n- [Sarek Specific](#sarek-specific)\n- [ATAC-seq Specific](#atac-seq-specific)\n- [Resource Management](#resource-management)\n- [Getting Help](#getting-help)\n\n## Exit Codes\n\nCommon exit codes indicating resource issues (per [nf-core docs](https://nf-co.re/docs/usage/troubleshooting/crash_halfway)):\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 137 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 143 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 104, 134, 139, 247 | Out of memory | Increase `--max_memory` |\n| 1 | General error | Check `.nextflow.log` for details |\n\nMost pipelines auto-retry with 2x then 3x resources before failing.\n\n## HPC/Singularity Issues\n\n### Singularity cache issues\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\n```\n\n### Using Singularity instead of Docker\nOn HPC systems without Docker, use Singularity:\n```bash\nnextflow run nf-core/<pipeline> -profile singularity ...\n```\n\n> **Note**: For basic environment setup (Docker, Nextflow, Java installation), see the inline instructions in Step 1 of SKILL.md.\n\n## Pipeline Failures\n\n### Container pull failed\n- Check network connectivity\n- Try: `-profile singularity` instead of docker\n- For offline: `nf-core download <pipeline> -r <version>`\n\n### \"No such file\" errors\n- Use **absolute paths** in samplesheet\n- Verify files exist: `ls /path/to/file`\n\n### Resume not working\n```bash\n# Check work directory exists\nls -la work/\n\n# Force clean restart (loses cache)\nrm -rf work/ .nextflow*\nnextflow run nf-core/<pipeline> ...\n```\n\n## RNA-seq Specific\n\n### STAR index fails\n- Increase memory: `--max_memory '64.GB'`\n- Or provide pre-built: `--star_index /path/to/star/`\n\n### Low alignment rate\n- Verify genome matches species\n- Check FastQC for adapter contamination\n- Try different aligner: `--aligner hisat2`\n\n### Strandedness detection fails\n- Specify explicitly: `--strandedness reverse`\n- Common values: `forward`, `reverse`, `unstranded`\n\n## Sarek Specific\n\n### BQSR fails\n- Check known sites for genome\n- Skip for non-standard references: `--skip_bqsr`\n\n### Mutect2 no variants\n- Verify tumor/normal pairing\n- Check samplesheet `status` column: 0=normal, 1=tumor\n\n### Out of memory for WGS\n```bash\n--max_memory '128.GB' --max_cpus 16\n```\n\n### DeepVariant GPU issues\n- Ensure NVIDIA Docker runtime configured\n- Or use CPU mode (slower)\n\n## ATAC-seq Specific\n\n### Low FRiP score\n- Check library complexity in `plotFingerprint/`\n- May indicate over-transposition\n\n### Few peaks called\n- Lower threshold: `--macs_qvalue 0.1`\n- Use broad peaks: `--narrow_peak false`\n\n### High duplicates\n- Normal for low-input samples\n- Pipeline removes by default\n- Consider deeper sequencing\n\n## Resource Management\n\n### Set resource limits\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n### Check available resources\n```bash\n# CPUs\nnproc\n\n# Memory\nfree -h\n\n# Disk\ndf -h .\n```\n\n## Getting Help\n\n1. Check `.nextflow.log` for error details\n2. Search nf-core Slack: https://nf-co.re/join\n3. Open issue on GitHub: https://github.com/nf-core/<pipeline>/issues\n","bio-research/skills/nextflow-development/scripts/config/genomes.yaml":"# Organism to Genome Mapping for nf-core Pipelines\n# Maps organism names (as they appear in GEO/SRA) to iGenomes keys\n\norganisms:\n  # Human\n  \"Homo sapiens\":\n    genome: \"GRCh38\"\n    taxid: 9606\n    aliases: [\"human\", \"hg38\", \"GRCh38\"]\n    notes: \"Primary human reference genome\"\n\n  \"Homo sapiens (legacy)\":\n    genome: \"GRCh37\"\n    taxid: 9606\n    aliases: [\"hg19\", \"GRCh37\"]\n    notes: \"Legacy human reference, still used for some clinical data\"\n\n  # Mouse\n  \"Mus musculus\":\n    genome: \"GRCm39\"\n    taxid: 10090\n    aliases: [\"mouse\", \"mm39\", \"GRCm39\"]\n    notes: \"Current mouse reference genome\"\n\n  \"Mus musculus (legacy)\":\n    genome: \"GRCm38\"\n    taxid: 10090\n    aliases: [\"mm10\", \"GRCm38\"]\n    notes: \"Legacy mouse reference\"\n\n  # Yeast\n  \"Saccharomyces cerevisiae\":\n    genome: \"R64-1-1\"\n    taxid: 4932\n    aliases: [\"yeast\", \"sacCer3\", \"S288C\", \"budding yeast\"]\n    notes: \"S288C reference strain\"\n\n  # Fruit fly\n  \"Drosophila melanogaster\":\n    genome: \"BDGP6\"\n    taxid: 7227\n    aliases: [\"fly\", \"dm6\", \"fruit fly\", \"Dmel\"]\n    notes: \"Berkeley Drosophila Genome Project release 6\"\n\n  # Worm\n  \"Caenorhabditis elegans\":\n    genome: \"WBcel235\"\n    taxid: 6239\n    aliases: [\"worm\", \"ce11\", \"C. elegans\", \"Cele\"]\n    notes: \"WormBase reference\"\n\n  # Zebrafish\n  \"Danio rerio\":\n    genome: \"GRCz11\"\n    taxid: 7955\n    aliases: [\"zebrafish\", \"danRer11\", \"Drer\"]\n    notes: \"Genome Reference Consortium Zebrafish Build 11\"\n\n  # Arabidopsis\n  \"Arabidopsis thaliana\":\n    genome: \"TAIR10\"\n    taxid: 3702\n    aliases: [\"arabidopsis\", \"thale cress\", \"Atha\"]\n    notes: \"The Arabidopsis Information Resource v10\"\n\n  # Rat\n  \"Rattus norvegicus\":\n    genome: \"Rnor_6.0\"\n    taxid: 10116\n    aliases: [\"rat\", \"rn6\", \"Rnor\"]\n    notes: \"Rnor 6.0 reference\"\n\n  # Chicken\n  \"Gallus gallus\":\n    genome: \"GRCg6a\"\n    taxid: 9031\n    aliases: [\"chicken\", \"galGal6\", \"Ggal\"]\n    notes: \"Genome Reference Consortium Chicken Build 6a\"\n\n  # Pig\n  \"Sus scrofa\":\n    genome: \"Sscrofa11.1\"\n    taxid: 9823\n    aliases: [\"pig\", \"susScr11\", \"Sscr\"]\n    notes: \"Swine genome assembly 11.1\"\n\n  # Cow\n  \"Bos taurus\":\n    genome: \"ARS-UCD1.2\"\n    taxid: 9913\n    aliases: [\"cow\", \"bosTau9\", \"cattle\", \"Btau\"]\n    notes: \"USDA ARS assembly\"\n\n  # Dog\n  \"Canis lupus familiaris\":\n    genome: \"CanFam3.1\"\n    taxid: 9615\n    aliases: [\"dog\", \"canFam3\", \"Clup\"]\n    notes: \"Broad Institute CanFam3.1\"\n\n  # Frog\n  \"Xenopus tropicalis\":\n    genome: \"JGI_4.2\"\n    taxid: 8364\n    aliases: [\"frog\", \"xenTro9\", \"Xtro\"]\n    notes: \"JGI assembly version 4.2\"\n\n  # Maize/Corn\n  \"Zea mays\":\n    genome: \"Zm-B73-REFERENCE-NAM-5.0\"\n    taxid: 4577\n    aliases: [\"maize\", \"corn\", \"Zmay\"]\n    notes: \"B73 reference genome v5\"\n\n  # Rice\n  \"Oryza sativa\":\n    genome: \"IRGSP-1.0\"\n    taxid: 39947\n    aliases: [\"rice\", \"Osat\"]\n    notes: \"International Rice Genome Sequencing Project\"\n\n  # E. coli (common bacterial model)\n  \"Escherichia coli\":\n    genome: null\n    taxid: 562\n    aliases: [\"E. coli\", \"Ecol\"]\n    notes: \"Use specific strain reference; K-12 MG1655 common\"\n\n  # Fission yeast\n  \"Schizosaccharomyces pombe\":\n    genome: \"ASM294v2\"\n    taxid: 4896\n    aliases: [\"fission yeast\", \"S. pombe\", \"Spom\"]\n    notes: \"PomBase reference\"\n\n# Pipeline mapping based on library strategy\npipeline_suggestions:\n  \"RNA-SEQ\": \"rnaseq\"\n  \"ATAC-SEQ\": \"atacseq\"\n  \"CHIP-SEQ\": \"chipseq\"\n  \"WGS\": \"sarek\"\n  \"WXS\": \"sarek\"\n  \"EXOME\": \"sarek\"\n  \"AMPLICON\": \"ampliseq\"\n  \"BISULFITE-SEQ\": \"methylseq\"\n  \"HI-C\": \"hic\"\n  \"MIRNA-SEQ\": \"smrnaseq\"\n  \"RRBS\": \"methylseq\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml":"name: atacseq\nversion: \"2.1.2\"\ndescription: \"Chromatin accessibility analysis and peak calling\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/atacseq/{version}/\"\n  parameters: \"https://nf-co.re/atacseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/atacseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/atacseq\"\n  releases: \"https://github.com/nf-core/atacseq/releases\"\n\ndata_types:\n  - ATAC-seq\n  - chromatin accessibility\n  - open chromatin\n\ndetection_hints:\n  filename:\n    - atac\n    - atacseq\n    - chromatin\n    - accessibility\n  directory:\n    - atac\n    - atacseq\n    - chromatin\n    - epigenome\n    - epigenetics\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Condition/group identifier (replicates share same name)\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (paired-end required)\"\n\n    - name: replicate\n      required: true\n      type: integer\n      default: 1\n      inference: filename\n      description: \"Replicate number (integer)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: read_length\n    prompt: \"What is the read length of your sequencing data?\"\n    options:\n      - value: 50\n        label: \"50 bp\"\n        description: \"Short reads\"\n      - value: 75\n        label: \"75 bp\"\n        description: \"Standard length\"\n      - value: 100\n        label: \"100 bp\"\n        description: \"Common for modern sequencers\"\n      - value: 150\n        label: \"150 bp\"\n        description: \"Long reads\"\n    default: 50\n    recommendation: \"Check FASTQ files or sequencing report for exact length\"\n\n  - parameter: narrow_peak\n    prompt: \"What type of peaks are you expecting?\"\n    options:\n      - value: \"true\"\n        label: \"Narrow peaks (default for ATAC-seq)\"\n        description: \"Standard ATAC-seq open chromatin regions\"\n      - value: \"false\"\n        label: \"Broad peaks\"\n        description: \"For histone marks or broader accessibility regions\"\n    default: \"true\"\n    recommendation: \"Use narrow peaks for standard ATAC-seq\"\n\ntest_profile:\n  command: \"nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_atacseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/atacseq \\\n        -r 2.1.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --read_length {read_length} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"bwa/mergedLibrary/*.mLb.mkD.sorted.bam\"\n      description: \"Filtered, deduplicated alignments\"\n    - path: \"bwa/mergedLibrary/bigwig/*.bigWig\"\n      description: \"Coverage tracks for genome browsers\"\n    - path: \"macs2/narrowPeak/*.narrowPeak\"\n      description: \"Peak calls (BED format)\"\n    - path: \"macs2/narrowPeak/consensus/consensus_peaks.bed\"\n      description: \"Consensus peaks across replicates\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"macs2/narrowPeak\"\n      check: exists\n      description: \"Peak calls directory\"\n\nquality_metrics:\n  - name: mapped_reads\n    good: \">80%\"\n    acceptable: \"60-80%\"\n    poor: \"<60%\"\n  - name: mitochondrial\n    good: \"<20%\"\n    acceptable: \"20-40%\"\n    poor: \">40%\"\n  - name: duplicates\n    good: \"<30%\"\n    acceptable: \"30-50%\"\n    poor: \">50%\"\n  - name: frip\n    good: \">30%\"\n    acceptable: \"15-30%\"\n    poor: \"<15%\"\n  - name: tss_enrichment\n    good: \">6\"\n    acceptable: \"4-6\"\n    poor: \"<4\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"Low FRiP score\"\n    fix: \"Check library complexity in plotFingerprint. May indicate over-transposition or low quality\"\n  - error: \"Few peaks called\"\n    fix: \"Lower threshold with --macs_qvalue 0.1 or use --narrow_peak false for broader peaks\"\n  - error: \"High duplicates\"\n    fix: \"Normal for low-input samples. Pipeline removes by default. Consider deeper sequencing\"\n  - error: \"High mitochondrial reads\"\n    fix: \"Sample quality issue. Pipeline filters mito by default (--keep_mito false)\"\n\nreplicate_patterns:\n  - \"_rep(\\\\d+)\"\n  - \"_R(\\\\d+)_\"\n  - \"_(\\\\d+)$\"\n  - \"_replicate(\\\\d+)\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml":"name: rnaseq\nversion: \"3.22.2\"\ndescription: \"Gene expression quantification and differential expression analysis\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/rnaseq/{version}/\"\n  parameters: \"https://nf-co.re/rnaseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/rnaseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/rnaseq\"\n  releases: \"https://github.com/nf-core/rnaseq/releases\"\n\ndata_types:\n  - RNA-seq\n  - mRNA-seq\n  - bulk RNA-seq\n\ndetection_hints:\n  filename:\n    - rna\n    - rnaseq\n    - mrna\n    - expression\n  directory:\n    - rnaseq\n    - rna\n    - expression\n    - transcriptome\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (empty for single-end)\"\n\n    - name: strandedness\n      required: true\n      type: enum\n      allowed:\n        - auto\n        - forward\n        - reverse\n        - unstranded\n      default: \"auto\"\n      inference: default\n      description: \"Library strandedness (auto recommended)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended for human)\"\n        description: \"Latest human reference assembly\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference for compatibility\"\n      - value: mm10\n        label: \"Mouse mm10/GRCm38\"\n        description: \"Mouse reference genome\"\n      - value: BDGP6\n        label: \"Drosophila BDGP6\"\n        description: \"Fruit fly reference\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: aligner\n    prompt: \"Which alignment strategy would you prefer?\"\n    options:\n      - value: star_salmon\n        label: \"STAR + Salmon (recommended)\"\n        description: \"Most accurate, standard for differential expression\"\n      - value: star_rsem\n        label: \"STAR + RSEM\"\n        description: \"Better for isoform-level quantification\"\n      - value: hisat2\n        label: \"HISAT2\"\n        description: \"Lower memory requirements, faster\"\n    default: star_salmon\n    recommendation: \"Use star_salmon unless memory-constrained or need isoforms\"\n\ntest_profile:\n  command: \"nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_rnaseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/rnaseq \\\n        -r 3.22.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --aligner {aligner} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      description: \"Raw gene counts for DESeq2/edgeR\"\n    - path: \"star_salmon/salmon.merged.gene_tpm.tsv\"\n      description: \"TPM normalized expression values\"\n    - path: \"star_salmon/*.bam\"\n      description: \"Aligned reads\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      check: non_empty\n      description: \"Count matrix must have data\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"STAR index fails\"\n    fix: \"Increase memory with --max_memory '64.GB' or provide pre-built --star_index\"\n  - error: \"Low alignment rate\"\n    fix: \"Verify genome matches species; check FastQC for adapter contamination\"\n  - error: \"Strandedness detection fails\"\n    fix: \"Specify explicitly with --strandedness reverse (or forward/unstranded)\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml":"name: sarek\nversion: \"3.7.1\"\ndescription: \"Variant calling for WGS/WES data (germline and somatic)\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/sarek/{version}/\"\n  parameters: \"https://nf-co.re/sarek/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/sarek/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/sarek\"\n  releases: \"https://github.com/nf-core/sarek/releases\"\n\ndata_types:\n  - WGS\n  - WES\n  - whole genome sequencing\n  - whole exome sequencing\n  - tumor-normal\n  - germline\n  - somatic\n\ndetection_hints:\n  filename:\n    - tumor\n    - normal\n    - germline\n    - wgs\n    - wes\n    - exome\n    - dna\n    - variant\n  directory:\n    - variant\n    - wgs\n    - wes\n    - exome\n    - germline\n    - somatic\n\nsamplesheet:\n  input_types:\n    - fastq\n    - bam\n    - cram\n\n  columns:\n    - name: patient\n      required: true\n      type: string\n      inference: filename\n      description: \"Patient/subject identifier for grouping samples\"\n\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier (e.g., tumor, normal)\"\n\n    - name: lane\n      required: false\n      type: string\n      default: \"L001\"\n      inference: filename\n      description: \"Sequencing lane\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R2 FASTQ\"\n\n    - name: bam\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM file\"\n\n    - name: bai\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM index\"\n\n    - name: status\n      required: false\n      type: integer\n      allowed:\n        - 0\n        - 1\n      default: 0\n      inference: filename\n      description: \"0=normal, 1=tumor (critical for somatic calling)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome should be used?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference with most annotation support\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"For compatibility with older datasets\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human data\"\n\n  - parameter: tools\n    prompt: \"What type of variant calling do you need?\"\n    options:\n      - value: \"haplotypecaller,snpeff\"\n        label: \"Germline variants (single samples)\"\n        description: \"For finding inherited variants in normal samples\"\n        condition: \"no tumor samples detected\"\n      - value: \"mutect2,strelka,snpeff\"\n        label: \"Somatic variants (tumor-normal pairs)\"\n        description: \"For finding cancer mutations with matched normal\"\n        condition: \"tumor-normal pairs detected\"\n      - value: \"haplotypecaller,deepvariant,snpeff\"\n        label: \"Germline with DeepVariant\"\n        description: \"Higher accuracy germline calling (requires GPU)\"\n      - value: \"mutect2,manta,snpeff\"\n        label: \"Somatic with structural variants\"\n        description: \"Comprehensive tumor analysis including SVs\"\n    default: \"haplotypecaller,snpeff\"\n    recommendation: \"Use somatic tools if tumor/normal pairs detected, otherwise germline\"\n\n  - parameter: wes\n    prompt: \"Is this whole exome sequencing (WES) data?\"\n    options:\n      - value: \"false\"\n        label: \"No - Whole Genome Sequencing (WGS)\"\n        description: \"Full genome coverage\"\n      - value: \"true\"\n        label: \"Yes - Whole Exome Sequencing (WES)\"\n        description: \"Requires --intervals BED file\"\n    default: \"false\"\n    recommendation: \"If WES, user must provide intervals BED file\"\n\ntest_profile:\n  command: \"nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\"\n  duration: \"20 minutes\"\n  success_indicators:\n    - \"test_sarek/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        -resume\n\n  wes_template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        --wes \\\n        --intervals {intervals} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"preprocessing/recalibrated/*.recal.bam\"\n      description: \"Analysis-ready BAM files\"\n    - path: \"variant_calling/*/*.vcf.gz\"\n      description: \"Variant call files\"\n    - path: \"annotation/snpeff/*.ann.vcf.gz\"\n      description: \"Annotated variants\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"preprocessing/recalibrated\"\n      check: exists\n      description: \"Recalibrated BAMs directory\"\n\nresources:\n  min_memory: \"16.GB\"\n  recommended_memory: \"64.GB\"\n  wgs_memory: \"128.GB\"\n  min_cpus: 4\n  recommended_cpus: 16\n  disk_space: \"500.GB\"\n\ntroubleshooting:\n  - error: \"BQSR fails\"\n    fix: \"Check known sites available for genome. Skip with --skip_bqsr for non-standard references\"\n  - error: \"Mutect2 no variants\"\n    fix: \"Verify tumor/normal pairing in samplesheet (check status column: 0=normal, 1=tumor)\"\n  - error: \"Out of memory\"\n    fix: \"--max_memory '128.GB' for WGS data\"\n  - error: \"DeepVariant GPU issues\"\n    fix: \"Ensure NVIDIA Docker runtime configured, or use CPU mode\"\n\ntumor_normal_keywords:\n  tumor:\n    - tumor\n    - tumour\n    - met\n    - metastasis\n    - primary\n    - cancer\n    - malignant\n  normal:\n    - normal\n    - germline\n    - blood\n    - pbmc\n    - control\n    - healthy\n    - matched\n","bio-research/skills/scientific-problem-selection/SKILL.md":"---\nname: scientific-problem-selection\ndescription: This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include \"I have an idea for a project\", \"I'm stuck on my research\", \"help me evaluate this project\", \"what should I work on\", or \"I need strategic advice about my research\".\n---\n\n# Scientific Problem Selection Skills\n\nA conversational framework for systematic scientific problem selection based on Fischbach & Walsh's \"Problem choice and decision trees in science and engineering\" (Cell, 2024).\n\n## Getting Started\n\nPresent users with three entry points:\n\n**1) Pitch an idea for a new project** — to work it up together\n\n**2) Share a problem in a current project** — to troubleshoot together\n\n**3) Ask a strategic question** — to navigate the decision tree together\n\nThis conversational entry meets scientists where they are and establishes a collaborative tone.\n\n---\n\n## Option 1: Pitch an Idea\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your idea (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their idea, return a quick summary (no more than one paragraph) demonstrating understanding. Note the general area of research and rephrase the idea in a way that highlights its kernel—showing alignment and readiness to dive into details.\n\n### Follow-up Prompt\nThen ask for more detail: \"Now give me a bit more detail. You might include, however briefly or even say where you are unsure:\n1. What exactly you want to do\n2. How you currently plan to do it\n3. If it works, why will it be a big deal\n4. What you think are the major risks\"\n\n### Workflow\nFrom there, guide the user through the early stages of problem selection and evaluation:\n- **Skill 1: Intuition Pumps** - Refine and strengthen the idea\n- **Skill 2: Risk Assessment** - Identify and manage project risks\n- **Skill 3: Optimization Function** - Define success metrics\n- **Skill 4: Parameter Strategy** - Determine what to fix vs. keep flexible\n\nSee `references/01-intuition-pumps.md`, `references/02-risk-assessment.md`, `references/03-optimization-function.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 2: Troubleshoot a Problem\n\n### Initial Prompt\nAsk: **\"Tell me a short version of your problem (1-2 sentences or whatever is easy).\"**\n\n### Response Approach\nAfter the user shares their problem, return a quick summary (no more than one paragraph) demonstrating understanding. Note the context of the project where the problem occurred and rephrase the problem—highlighting its core essence—so the user knows the situation is understood. Also raise additional questions that seem important to discuss.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The overall goal of your project (if we have not talked about it before)\n2. What exactly went wrong\n3. Your current ideas for fixing it\"\n\n### Workflow\nFrom there, guide the user through troubleshooting and decision tree navigation:\n- **Skill 5: Decision Tree Navigation** - Plan decision points and navigate between execution and strategic thinking\n- **Skill 4: Parameter Strategy** - Fix one parameter at a time, let others float\n- **Skill 6: Adversity Response** - Frame problems as opportunities for growth\n- **Skill 7: Problem Inversion** - Strategies for navigating around obstacles\n\nAlways include workarounds that might be useful whether or not the problem can be fixed easily.\n\nSee `references/05-decision-tree.md`, `references/06-adversity-planning.md`, `references/07-problem-inversion.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 3: Ask a Strategic Question\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your question (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their question, return a quick summary (no more than one paragraph) demonstrating understanding. Note the broader context and rephrase the question—highlighting its crux—to confirm alignment with their thinking.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The setting (i.e., is this about a current or future project)\n2. A bit more detail about what you're thinking\"\n\n### Workflow\nFrom there, draw on the specific modules from the problem choice framework most appropriate to the question:\n- **Skills 1-4** for future project planning (ideation, risk, optimization, parameters)\n- **Skills 5-7** for current project navigation (decision trees, adversity, inversion)\n- **Skill 8** for communication and synthesis\n- **Skill 9** for comprehensive workflow orchestration\n\nSee the complete reference materials in the `references/` folder.\n\n---\n\n## Core Framework Concepts\n\n### The Central Insight\n**Problem Choice >> Execution Quality**\n\nEven brilliant execution of a mediocre problem yields incremental impact. Good execution of an important problem yields substantial impact.\n\n### The Time Paradox\nScientists typically spend:\n- **Days** choosing a problem\n- **Years** solving it\n\nThis imbalance limits impact. These skills help invest more time choosing wisely.\n\n### Evaluation Axes\n**For Evaluating Ideas:**\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nSkills help move ideas rightward (more feasible) and upward (more impactful).\n\n### The Risk Paradox\n- Don't avoid risk—befriend it\n- No risk = incremental work\n- But: Multiple miracles = avoid or refine\n- **Balance:** Understood, quantified, manageable risk\n\n### The Parameter Paradox\n- Too many fixed = brittleness\n- Too few fixed = paralysis\n- **Sweet spot:** Fix ONE meaningful constraint\n\n### The Adversity Principle\n- Crises are inevitable (don't be surprised)\n- Crises are opportune (don't waste them)\n- **Strategy:** Fix problem AND upgrade project simultaneously\n\n---\n\n## The 9 Skills Overview\n\n| Skill | Purpose | Output | Time |\n|-------|---------|--------|------|\n| 1. Intuition Pumps | Generate high-quality research ideas | Problem Ideation Document | ~1 week |\n| 2. Risk Assessment | Identify and manage project risks | Risk Assessment Matrix | 3-5 days |\n| 3. Optimization Function | Define success metrics | Impact Assessment Document | 2-3 days |\n| 4. Parameter Strategy | Decide what to fix vs. keep flexible | Parameter Strategy Document | 2-3 days |\n| 5. Decision Tree Navigation | Plan decision points and altitude dance | Decision Tree Map | 2 days |\n| 6. Adversity Response | Prepare for crises as opportunities | Adversity Playbook | 2 days |\n| 7. Problem Inversion | Navigate around obstacles | Problem Inversion Analysis | 1 day |\n| 8. Integration & Synthesis | Synthesize into coherent plan | Project Communication Package | 3-5 days |\n| 9. Meta-Framework | Orchestrate complete workflow | Complete Project Package | 1-6 weeks |\n\n---\n\n## Skill Workflow\n\n```\nSKILL 1: Intuition Pumps\n         | (generates idea)\n         v\nSKILL 2: Risk Assessment\n         | (evaluates feasibility)\n         v\nSKILL 3: Optimization Function\n         | (defines success metrics)\n         v\nSKILL 4: Parameter Strategy\n         | (determines flexibility)\n         v\nSKILL 5: Decision Tree\n         | (plans execution and evaluation)\n         v\nSKILL 6: Adversity Planning\n         | (prepares for failure modes)\n         v\nSKILL 7: Problem Inversion\n         | (provides pivot strategies)\n         v\nSKILL 8: Integration & Communication\n         | (synthesizes into coherent plan)\n         v\nSKILL 9: Meta-Skill\n         (orchestrates complete workflow)\n```\n\n---\n\n## Key Design Principles\n\n1. **Conversational Entry** - Meet users where they are with three clear starting points\n2. **Thoughtful Interaction** - Ask clarifying questions; low confidence prompts additional input\n3. **Literature Integration** - Use PubMed searches at strategic points for validation\n4. **Concrete Outputs** - Every skill produces tangible 1-2 page documents\n5. **Building Specificity** - Progressive detail emerges through targeted questions\n6. **Flexibility** - Skills work independently, sequentially, or iteratively\n7. **Scientific Rigor** - Claims about generality and feasibility should be evidence-based\n\n---\n\n## Who Should Use These Skills\n\n### Graduate Students (Primary Audience)\n- **When:** Choosing thesis projects, qualifying exams, committee meetings\n- **Focus:** Skills 1-3 (ideation, risk, impact) + Skill 9 (complete workflow)\n- **Timeline:** 2-4 weeks for comprehensive planning\n\n### Postdocs\n- **When:** Starting new position, planning independent projects, fellowship applications\n- **Focus:** All skills, emphasizing independence and risk management\n- **Timeline:** 1-2 weeks intensive planning\n\n### Principal Investigators\n- **When:** New lab, new direction, mentoring trainees, grant cycles\n- **Focus:** Skills 1, 3, 4, 6 (ideation, impact, parameters, adversity)\n- **Timeline:** Ongoing, integrate into lab culture\n\n### Startup Founders\n- **When:** Company inception, pivot decisions, investor pitches\n- **Focus:** Skills 1-4 (ideation through parameters) + Skill 8 (communication)\n- **Timeline:** 1-2 weeks for initial planning, revisit quarterly\n\n---\n\n## Reference Materials\n\nDetailed skill documentation is available in the `references/` folder:\n\n| File | Content | Search Patterns |\n|------|---------|-----------------|\n| `01-intuition-pumps.md` | Generate research ideas | `Intuition Pump #`, `Trap #`, `Phase [0-9]` |\n| `02-risk-assessment.md` | Risk identification | `Risk.*1-5`, `go/no-go`, `assumption` |\n| `03-optimization-function.md` | Success metrics | `Generality.*Learning`, `optimization`, `impact` |\n| `04-parameter-strategy.md` | Parameter fixation | `fixed.*float`, `constraint`, `parameter` |\n| `05-decision-tree.md` | Decision tree navigation | `altitude`, `Level [0-9]`, `decision` |\n| `06-adversity-planning.md` | Adversity response | `adversity`, `crisis`, `ensemble` |\n| `07-problem-inversion.md` | Problem inversion strategies | `Strategy [0-9]`, `inversion`, `goal` |\n| `08-integration-synthesis.md` | Integration and synthesis | `narrative`, `communication`, `story` |\n| `09-meta-framework.md` | Complete workflow | `Phase`, `workflow`, `orchestrat` |\n\n---\n\n## Expected Outcomes\n\n### Immediate (After Completing Workflow)\n- Clear project vision\n- Honest risk assessment\n- Contingency plans\n- Communication materials ready\n- Confidence in problem choice\n\n### 6-Month\n- Faster decisions (have framework)\n- Productive adversity handling\n- No existential crises (risks mitigated)\n\n### 2-Year\n- Published results or strong progress\n- Avoided dead-end projects\n- Career aligned with goals\n- **Time well-spent** (ultimate measure)\n\n---\n\n## Foundational Reference\n\n**Fischbach, M.A., & Walsh, C.T. (2024).** \"Problem choice and decision trees in science and engineering.\" *Cell*, 187, 1828-1833.\n\nBased on course BIOE 395 taught at Stanford University.\n","bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md":"# SKILL: Intuition Pumps for Scientific Problem Ideation\n\n## Overview\nThis skill helps scientists generate high-quality research ideas by providing systematic prompts (\"intuition pumps\") and identifying common ideation traps. Based on the framework that most biological and chemical science projects involve **perturbing a system, measuring it, and analyzing the data**, this skill guides users through structured ideation that can significantly impact how they spend years of their career.\n\n## Core Framework\n\n### The Three Pillars of Scientific Work\nResearch advances generally fall into one of these categories, each with two dimensions:\n\n**PERTURBATION**\n- *Logic*: Novel ways to manipulate biological systems (e.g., using CRISPR for deep mutational scanning)\n- *Technology*: New tools for manipulation (e.g., developing base editors, creating whole-genome CRISPR libraries)\n\n**MEASUREMENT**  \n- *Logic*: Novel applications of existing measurement tools (e.g., using tissue clearing to study liver fibrosis)\n- *Technology*: New measurement capabilities (e.g., developing tissue-clearing techniques, super-resolution microscopy)\n\n**THEORY/COMPUTATION**\n- *Logic*: Using computational tools to make discoveries (e.g., applying AlphaFold to identify protein functions)\n- *Technology*: Building new algorithms or models (e.g., developing machine learning architectures for biological data)\n\nUnderstanding which quadrant resonates with the user can help identify their niche and guide ideation.\n\n## The Skill Workflow\n\n### Phase 1: Initial Discovery Questions (5-10 minutes)\n\nBefore diving into intuition pumps, Claude should gather context by asking the user:\n\n1. **What is the user's general research area or field?** (e.g., immunology, synthetic biology, neuroscience, protein engineering)\n\n2. **What excites the user most about science?**\n   - Building new tools/technologies?\n   - Discovering fundamental principles?\n   - Solving practical problems?\n   - Understanding dynamic processes?\n\n3. **What are the user's existing strengths?** (Select all that apply)\n   - Specific techniques (please list)\n   - Computational skills\n   - Access to unique systems/models\n   - Domain expertise in a particular area\n\n4. **Current constraints:**\n   - Time horizon for this project? (months/years)\n   - Resources available?\n   - Must it connect to existing work, or can the user start fresh?\n\n5. **On a scale of 1-5, how would the user rate their current idea?**\n   - Likelihood of success: 1 (very risky) to 5 (highly feasible)\n   - Potential impact: 1 (incremental) to 5 (transformative)\n\n### Phase 2: Applying Intuition Pumps\n\nBased on the user's responses, Claude should guide them through relevant intuition pumps from this list:\n\n#### Intuition Pump #1: Make It Systematic\n**Prompt:** Take any one-off perturbation or measurement and make it systematic.\n\n**Examples:**\n- Instead of mutating one enzyme, measure kinetic parameters across an entire enzyme family\n- Instead of one CRISPR mutant → genome-wide screen with transcriptomic readout\n- Instead of imaging one condition → high-throughput imaging across thousands of conditions\n\n**Prompt for User:** What one-off experiment in your field could become a systematic survey?\n\n#### Intuition Pump #2: Identify Technology Limitations\n**Prompt:** What are the fundamental limitations of technologies you use? These limitations are opportunities.\n\n**Examples:**\n- Microscopy can't resolve beyond diffraction limit → super-resolution microscopy\n- DNA synthesis can't make complete genomes → develop assembly methods\n- Genetic screens have precise input but imprecise output → develop high-dimensional readouts\n- We do single gene KOs but networks are complex → develop combinatorial perturbation methods\n\n**Prompt for User:** What technology limitation frustrates you most? How might you turn that limitation into an opportunity?\n\n#### Intuition Pump #3: The \"I Can't Imagine\" Test\n**Prompt:** I can't imagine a future in which we don't have ____, but it doesn't exist yet.\n\n**Examples:**\n- The ability to design highly efficient enzymes like we design other proteins\n- The ability to deliver genome editing payloads to any cell type in vivo\n- 3D tomographic imaging of live cells at molecular resolution\n- Proteome-scale sequencing with the throughput of RNA-seq\n\n**Prompt for User:** What capability seems inevitable but doesn't exist yet in your field?\n\n#### Intuition Pump #4: Static vs. Dynamic Understanding\n**Prompt:** We understand biological \"parts lists\" but rarely understand dynamic processes.\n\n**Key Insight:** Most observations are single-timepoint, single-perturbation format. But biological systems are dynamic—like humans flowing through Grand Central Station or money through financial systems.\n\n**Examples:**\n- Understanding growth factor signaling like we understand turning a key in a car engine\n- Time-resolved cell atlases with lineage tracing through entire development\n- Following metabolite flux through pathways in real-time\n\n**Prompt for User:** What dynamic process in your field do we observe as static snapshots? How might you capture the full temporal or spatial dynamics?\n\n#### Intuition Pump #5: Pick a New Axis\n**Prompt:** We almost always use time as the x-axis for dynamic processes. What other coordinate could you use?\n\n**Example:** Instead of time, use \"infection progression\" markers to enable monitoring asynchronous cells\n\n**Prompt for User:** What non-temporal coordinate could reveal new biology in your system?\n\n#### Intuition Pump #6: Create a Technology Platform\n**Prompt:** Instead of answering one question, could you build a platform that enables many questions?\n\n**Examples:**\n- Antibodies for intracellular targets (not just extracellular)\n- AI that predicts perturbations needed to reach desired cell states\n- Universal genome delivery vehicles\n\n**Prompt for User:** What platform would transform how your field asks questions?\n\n#### Intuition Pump #7: Dogs That Don't Bark\n**Prompt:** Why doesn't something exist or occur? Absence can be as informative as presence.\n\n**Examples:**\n- Why are there no Gram-negative bacteria on human skin?\n- Why do some catalytically inactive enzymes persist through evolution?\n- Why don't certain cell types exist in certain tissues?\n\n**Prompt for User:** What absence puzzles you in your field?\n\n### Phase 3: Avoiding Common Traps\n\nAfter generating ideas, we must evaluate them critically. Here are the most common traps:\n\n#### Trap #1: The Truffle Hound\n**Warning:** Don't become so good at one system or technique that you fail to ask questions of biological import.\n\n**Bad:** \"What is the role of p190 RhoGAP in wing development?\"  \n**Better:** \"How do signaling pathways and cytoskeleton coordinate to control wing development?\"\n\n**Self-Check:** Is the question driven by biological curiosity or by what the user is technically capable of?\n\n#### Trap #2: Applying Existing Tool to New System\n**Warning:** \"Let's use CRISPR in my organism\" can be valuable but risks crowding and incrementalism.\n\n**When It Works:** The user is enabling a field that truly needs this capability\n**When It Fails:** The tool is already widely applied; the contribution will be incremental\n\n**Self-Check:** Will this tool application open new biological questions, or just extend existing observations? Claude should help the user evaluate this honestly.\n\n#### Trap #3: Jumping on the First Idea\n**Warning:** Treating ideas with reverence instead of skepticism. Confirmation bias sets in quickly.\n\n**Better Approach:** Users should treat new ideas like leeches trying to steal their time. Look for the warts. Develop several ideas in parallel and comparison shop.\n\n**Self-Check:** Has the user critically evaluated at least 3-5 alternative approaches?\n\n#### Trap #4: Too Many Fixed Parameters\n**Warning:** Fixing too many parameters at the outset creates a poor technique-application match.\n\n**Example of Over-Constraining:** \"I will use spatial transcriptomics to study antigen-presenting cell and T cell interactions in the tumor microenvironment.\"\n- This fixes: technique (spatial transcriptomics), cell types, and context\n- If any assumption fails, the project fails\n\n**Self-Check:** Has the user fixed more than 2 parameters before starting?\n\n#### Trap #5: Too Few Fixed Parameters\n**Warning:** \"I want to do impactful work in cell engineering\" → paralysis\n\n**Resolution:** Constraints engender creativity. Fix ONE parameter at a time and let creativity flow.\n\n**Self-Check:** Does the user have at least one concrete constraint to work with?\n\n### Phase 4: Literature Integration\n\nTo ensure the idea has appropriate scope and hasn't been thoroughly explored, Claude should ask:\n\n1. **What are 2-3 key questions or gaps the idea addresses?**\n\n2. **What should be searched in PubMed to:**\n   - Understand the current state of the field?\n   - Identify related approaches?\n   - Find empirical knowledge from adjacent domains that could inform the approach?\n\nClaude should use PubMed to:\n- Assess how general/specific the problem is\n- Identify relevant methodological advances\n- Find analogous systems or approaches in other fields\n- Determine the degree of competition\n\n### Phase 5: Idea Refinement and Output\n\nAfter working through intuition pumps, avoiding traps, and reviewing literature, Claude should help the user:\n\n1. **Crystallize the Idea:**\n   - Biological question\n   - Technical approach (perturbation/measurement/theory: logic vs. technology)\n   - What's novel about this angle?\n\n2. **Articulate Fixed vs. Floating Parameters:**\n   - What MUST remain constant in the approach?\n   - What can be flexible if obstacles arise?\n\n3. **Identify Key Assumptions:**\n   - What must be true for this to work?\n   - Which assumptions are about biology vs. technology capabilities?\n\n4. **Sketch Alternative Paths:**\n   - If the primary approach fails, what's Plan B?\n   - Can the project be designed to succeed regardless of outcome?\n\n## Output Deliverable\n\nAt the end of this skill, Claude should produce a **2-page Problem Ideation Document** containing:\n\n### Page 1: Core Idea\n- **Title:** Concise project name\n- **The Question:** What biological question is being asked?\n- **The Approach:** How will it be answered? (Specify perturbation/measurement/computation: logic vs. technology)\n- **What's Novel:** The unique angle\n- **Why It Matters:** Potential impact (generality × learning, or technology development)\n- **Intuition Pump(s) Used:** Which prompted this idea\n\n### Page 2: Critical Analysis\n- **Fixed vs. Floating Parameters:**\n  - Fixed: What must stay constant\n  - Floating: What can adapt\n\n- **Key Assumptions & Risk Assessment:**\n  - Biological assumptions (risk level 1-5)\n  - Technical assumptions (risk level 1-5)\n\n- **Traps Avoided:** Which pitfalls were navigated around?\n\n- **Alternative Approaches:** Plan B and Plan C\n\n- **Literature Context:**\n  - 3-5 key papers that inform or relate to this work\n  - Degree of competition (low/medium/high)\n  - The user's edge/advantage\n\n- **Next Steps:** First 3 concrete experiments or analyses\n\n## Key Principles to Remember\n\n1. **Reversal of Polarity:** Treat ideas with skepticism, not reverence. Look for flaws before falling in love.\n\n2. **Comparison Shopping:** Develop multiple ideas in parallel. The act of comparison improves decision-making.\n\n3. **Fix One Parameter at a Time:** Constraints engender creativity, but too many constraints prevent it.\n\n4. **Think in Ensembles:** The user is picking a family of possible projects, not a singular path. Flexibility is essential.\n\n5. **Balance Logic and Technology:** Novel biology can come from new tools OR clever application of existing tools.\n\n6. **Systematic Over One-Off:** High-throughput and systematic approaches often reveal more than single observations.\n\n7. **Dynamic Over Static:** Biological systems are dynamic. How can process be captured rather than snapshot?\n\n## Getting Started\n\nWhen the user is ready, Claude should guide them through the Phase 1 questions to begin the systematic ideation process. The key message: spending extra time on problem choice is the highest-leverage activity in science. A well-chosen problem executed reasonably well will have more impact than a mediocre problem executed brilliantly.\n\n---\n\n*This skill is based on the problem choice framework developed by Michael A. Fischbach and Christopher T. Walsh, as described in \"Problem choice and decision trees in science and engineering\" (Cell, 2024).*\n","bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md":"# SKILL 2: Risk Assessment and Assumption Analysis\n\n## Overview\nThis skill helps scientists systematically identify, quantify, and manage project risk through rigorous assumption analysis. The goal is not to eliminate risk—risk-free projects tend to be incremental—but to name it, quantify it, and work steadily to chip away at it. This skill builds directly on the Problem Ideation Document from Skill 1.\n\n## Core Principle\n\n**\"Don't avoid risk; befriend it.\"**\n\nThe most important concept in problem choice is the two-axis evaluation:\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nThis skill focuses on the X-axis, helping users move their project rightward through systematic risk analysis.\n\n## Why This Matters\n\nA project with a high-risk assumption that won't read out for >2 years is problematic. One that requires multiple miracles to succeed should be avoided or refined. The human tendency is to stay in a safe local space, work laterally, and put off facing existential risks—like an ostrich burying its head in the sand. This skill helps users face risk head-on.\n\n## The Skill Workflow\n\n### Phase 1: Extract Project Assumptions (10-15 minutes)\n\nFirst, Claude should gather information about the user's project from Skill 1:\n\n1. **Project Summary** (from Skill 1):\n   - The biological question\n   - The technical approach\n   - What's novel about it\n\n2. **Project Horizon:**\n   - How long is this project expected to take? (months/years)\n   - What is the user's role? (graduate student, postdoc, PI, startup founder)\n\n3. **Initial Risk Sense:**\n   - What keeps the user up at night about this project?\n   - What's the scariest assumption?\n\n### Phase 2: Comprehensive Assumption Listing\n\nClaude should work with the user to list EVERY assumption the project makes from inception through conclusion. Assumptions fall into two categories:\n\n#### Type A: Assumptions About Biological Reality\nThese are facts about the world that either are or aren't true. They won't change during the project.\n\n**Examples:**\n- New cell types exist beyond what's currently known\n- A particular gene regulates the process being studied\n- Two proteins physically interact\n- A pathway functions in the organism of interest\n- The biological effect size is detectable\n\n#### Type B: Assumptions About Technical Capability\nThese are about whether technology can do what's needed. These CAN change during the project as methods improve.\n\n**Examples:**\n- A specific cell type can be isolated\n- Sequencing will generate high-quality data\n- An assay has sufficient throughput\n- Computational analysis can distinguish signal from noise\n- Gene editing will work in the system\n\n**Claude should ask:**\n1. What must be true about the biology for this to work?\n2. What must the technology be able to do?\n3. What about the experimental design—what assumptions are built in?\n4. What about the analysis—can it deliver what's needed?\n5. If everything works, can the findings be validated?\n6. Will the findings be interpretable and meaningful?\n\n### Phase 3: Risk Scoring (The Assumption Analysis Table)\n\nFor each assumption, Claude should help the user assign two scores:\n\n#### Risk Level (1-5 scale):\n- **1** = Very likely to be true/work (>90% confidence)\n- **2** = Likely (70-90% confidence)\n- **3** = Uncertain (40-70% confidence)\n- **4** = Unlikely (10-40% confidence)\n- **5** = Very unlikely (<10% confidence)\n\n#### Time to Test (months):\nHow long before the user will know if this assumption is valid?\n\n**Critical Rules:**\n1. Be brutally honest—try to convince oneself of being WRONG, not right\n2. Distinguish between biological vs. technical assumptions\n3. Consider whether technical assumptions might improve over time\n4. Note which assumptions depend on earlier assumptions succeeding\n\n### Phase 4: Risk Profile Evaluation\n\nOnce the complete table is ready, Claude should analyze the risk profile:\n\n#### Red Flags to Identify:\n1. **The Late High-Risk Problem:** Risk level 4-5 assumption that won't read out until >18 months\n2. **The Multiple Miracles:** More than 2-3 assumptions with risk level 4-5\n3. **The Dependency Chain:** High-risk assumptions stacked in sequence\n4. **The Ostrich Pattern:** Starting with low-risk work while avoiding the high-risk tests\n\n#### Green Lights:\n1. **Early Go/No-Go:** Highest-risk assumption testable in <6 months\n2. **Multiple Candidates:** Project can succeed with several different outcomes\n3. **Graceful Degradation:** If assumption X fails, assumption Y provides alternative path\n4. **Risk Distribution:** High-risk assumptions balanced across timeline\n\n**Rule of Thumb:** If you have a risk level 5 assumption three years out, pick another project.\n\n### Phase 5: Risk Mitigation Strategies\n\nFor each high-risk assumption (level 4-5), Claude should help develop mitigation strategies:\n\n#### Strategy 1: Move High-Risk Tests Earlier\n**Question:** Can a quicker, cruder test be designed that answers most of what's needed?\n\n**Example:** Instead of waiting 2 years to validate a new cell type exists, consider:\n- Using existing markers as a proxy\n- Testing in a simpler model system first\n- Using computational predictions to increase confidence\n\n#### Strategy 2: Multiple Candidates Approach\n**Question:** Can multiple candidates be tested in parallel to increase likelihood of success?\n\n**Example:** Instead of:\n- Testing one kinase → Test a panel of 10 kinases\n- Building one engineered organism → Build and test a library\n- Pursuing one therapeutic target → Pursue 3 related targets\n\n#### Strategy 3: Reframe the Question\n**Question:** Can the project scope be adjusted to reduce critical assumptions while maintaining impact?\n\n**Example from lecture:**\n- **Original:** Identify NEW enteroendocrine cell types (high risk: they may not exist)\n- **Reframed:** Better characterize KNOWN but incompletely understood cell types (lower risk)\n\n#### Strategy 4: Change the System\n**Question:** Is there a different biological system with similar scientific value but lower technical risk?\n\n**Example from lecture:**\n- **Original:** Intestinal epithelium (hard to manipulate genetically)\n- **Alternative:** Liver (easier genetic manipulation options exist)\n\n#### Strategy 5: Add Complementary Approaches\n**Question:** Can a parallel approach be added that de-risks the main assumption?\n\n**Example from lecture:**\n- Add spatial transcriptomics to scRNA-seq\n- This provides biogeographic context and validates cell type existence earlier\n\n### Phase 6: Go/No-Go Experiment Design\n\nFor the top 3 highest-risk assumptions, Claude should help design the critical go/no-go experiments:\n\n**For each, specify:**\n1. **The Question:** Exactly what is being tested?\n2. **The Experiment:** Most direct test possible (even if crude)\n3. **Success Criteria:** What result means \"go\"?\n4. **Failure Response:** What result means \"pivot\" or \"stop\"?\n5. **Timeline:** How soon can this be run?\n6. **Resources:** What is needed?\n\n**Key Principle:** Cut right to the critical go/no-go experiment. Don't just start with easy stuff—the risk points aren't going away.\n\n### Phase 7: Literature Validation\n\nClaude should search PubMed to help calibrate risk assessments:\n\n**Search for:**\n1. **Precedents:** Has anyone done something similar? (Reduces technical risk)\n2. **Biological Evidence:** What's known about the system? (Informs biological risk)\n3. **Technical Benchmarks:** How well do the methods work in practice?\n4. **Adjacent Successes:** Has anyone solved related problems?\n\n**Questions to ask the user:**\n- What specific searches would help calibrate risk?\n- Are there particular papers that informed the assumptions?\n- Are there technical benchmarks to look up?\n\n### Phase 8: Revised Project Plan\n\nBased on the risk analysis, Claude should help create a revised plan:\n\n#### Option A: De-Risk the Current Plan\n- Reorder experiments to test high-risk assumptions early\n- Add complementary approaches\n- Design multiple-candidate strategies\n\n#### Option B: Reframe the Project\n- Adjust scope while maintaining impact\n- Change biological system\n- Modify technical approach\n\n#### Option C: Pick a Different Project\nSometimes the honest answer is: \"This has too many miracles.\" That's valuable to know BEFORE investing years.\n\n## Output Deliverable\n\nClaude should produce a **2-page Risk Assessment Document**:\n\n### Page 1: Assumption Analysis Table\n\n| Assumption | Type* | Risk† | Time‡ | Notes |\n|------------|-------|-------|-------|-------|\n| [Assumption 1] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| [Assumption 2] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| ... | ... | ... | ... | ... |\n\n*Bio = Biological reality, Tech = Technical capability  \n†Risk: 1=very likely to 5=very unlikely  \n‡Time to test in months\n\n#### Risk Profile Summary:\n- **Total Assumptions:** X\n- **High Risk (4-5):** X assumptions\n- **Late High Risk (>18mo):** X assumptions\n- **Critical Path:** [Identify the chain of dependent assumptions]\n- **Overall Assessment:** [Green/Yellow/Red light with explanation]\n\n### Page 2: Risk Mitigation Plan\n\n#### Top 3 High-Risk Assumptions:\nFor each:\n1. **The Assumption:** [Stated clearly]\n2. **Current Risk Level & Timeline:** X (risk) at Y months\n3. **Why This Risk Exists:** [Explanation]\n4. **Mitigation Strategy:** [From Strategies 1-5 above]\n5. **Go/No-Go Experiment:**\n   - Experiment design\n   - Success criteria\n   - Timeline\n   - What you'll do if it fails\n\n#### Revised Project Timeline:\n```\nMonth 0-6:   [Early go/no-go experiments]\nMonth 6-12:  [Based on go/no-go results]\nMonth 12-18: [...]\nMonth 18+:   [...]\n```\n\n#### Contingency Plans:\n- **If assumption X fails:** [Plan B]\n- **If assumption Y fails:** [Plan C]\n- **Multiple success paths:** [How project can succeed different ways]\n\n#### Decision Points:\n- **Month X:** Evaluate [assumptions A, B] → Go/Pivot/Stop decision\n- **Month Y:** Evaluate [assumptions C, D] → Go/Pivot/Stop decision\n\n## Practical Examples\n\n### Example 1: ScRNA-Seq for Enteroendocrine Cells\n\n**High-Risk Assumptions Identified:**\n1. \"New cell types can be validated experimentally\" (Risk 5, 24 months)\n2. \"Knockout will yield biologically relevant phenotype\" (Risk 5, 30 months)\n\n**Problem:** Two risk-5 assumptions at 24+ months = RED FLAG\n\n**Mitigation Applied:**\n- Reframe to study known but poorly characterized cells (reduces Risk 5→3)\n- Switch to liver instead of intestine (improves validation timeline: 30→18 months)\n- Add spatial transcriptomics (provides earlier validation checkpoint at 16 months)\n\n### Example 2: Bacterial Therapy for Chronic Kidney Disease\n\n**High-Risk Assumption Identified:**\n\"Key uremic toxins leading to effects can be determined\" (Risk 4, unknown timeline)\n\n**Problem:** Critical assumption with unclear path to resolution\n\n**Mitigation Applied:**\n- Focus on known lead toxins (IS and PCS) rather than discovering new ones\n- Add parallel track: test multiple toxin candidates\n- Design study where learning toxin identity IS the outcome (multiple success paths)\n\n## Key Principles to Remember\n\n1. **Try to Convince Yourself You're Wrong:** The goal is critical evaluation, not confirmation bias.\n\n2. **Ignore Everything But Key Risk Points:** Don't get distracted by easy tasks. The high-risk assumptions aren't going away.\n\n3. **Early and Often:** Design go/no-go experiments at the earliest feasible moment.\n\n4. **Be Candid About Risk:** When presenting ideas, acknowledging risk makes your case MORE convincing, not less.\n\n5. **No Risk, No Interest:** The goal isn't zero risk—it's understood, quantified, manageable risk.\n\n6. **Risk Can Change:** Technical assumptions may improve as methods advance. Build this into your planning.\n\n7. **Compare Risk Profiles:** Evaluate multiple projects in parallel to compare risk profiles and make better choices.\n\n8. **Watch for the Ostrich Pattern:** Are you avoiding the scary experiment? That's human nature, but a critical failure mode.\n\n## Warning Signs\n\n**Warning signs include:**\n- Risk level 5 assumptions >2 years out\n- More than 3 assumptions at risk level 4-5\n- Highest-risk assumptions at the END of the timeline\n- Rationalizing why high-risk assumptions will \"probably work out\"\n- Planning to \"start with the easy stuff\" while avoiding risk tests\n- Inability to articulate clear go/no-go criteria\n\n**Good shape indicators:**\n- Highest-risk tests happen in first 6 months\n- Multiple paths to success exist\n- Clear plans for what to do if key assumptions fail\n- Risk is distributed across the timeline\n- Testing assumptions, not confirming hopes\n\n## Getting Started\n\nClaude should begin with Phase 1 by asking for:\n1. The project summary from Skill 1\n2. Project timeline expectations\n3. What concerns the user most about this project\n\nTogether, Claude and the user will build a rigorous risk assessment that dramatically improves the likelihood of success by helping avoid years of work on projects with insurmountable obstacles.\n\n---\n\n*Remember: Spending time on risk analysis is the most valuable investment a scientist can make. A well-understood risk profile enables moving forward with confidence or pivoting with clarity—both are valuable outcomes.*\n","bio-research/skills/scientific-problem-selection/references/03-optimization-function.md":"# SKILL 3: Optimization Function Selection\n\n## Overview\nThis skill helps scientists articulate HOW their project should be evaluated and define what success means. While Skill 2 focused on likelihood of success (the X-axis), this skill focuses on impact if successful (the Y-axis). The key insight: **value is in the eye of a belief system**—the value creation framework must be explicitly stated and led with.\n\n## Core Principle\n\n**\"Pick the right optimization function.\"**\n\nDifferent types of projects should be evaluated by different metrics. A common source of conflict between trainees and PIs, or authors and referees, is a misunderstanding about which category a project falls under. The root cause is often failure to articulate evaluation criteria clearly.\n\n## The Fundamental Truth\n\nThe default state of:\n1. Every new discovery is **irrelevance**\n2. Every new technology is **non-use**\n3. Every company is **death**\n\nScientists must actively work against these defaults by choosing the right metrics and scoring well on at least one axis.\n\n## The Skill Workflow\n\n### Phase 1: Project Categorization (5 minutes)\n\nFirst, Claude should determine what type of project the user is pursuing:\n\n**Question 1: What is the primary goal?**\nA. Understand how biology works (fundamental knowledge)\nB. Enable new experiments or capabilities (tool/technology)\nC. Solve a practical problem (invention/application)\nD. Something else (please describe)\n\n**Question 2: What would \"success\" look like in 3-5 years?**\n- 1-2 sentences describing the ideal outcome\n\n**Question 3: Who cares if this succeeds?**\n- Academic researchers in the subfield?\n- Broader scientific community across fields?\n- Clinicians or practitioners?\n- Industry partners or companies?\n- General public or specific communities?\n- All of the above?\n\nBased on the answers, Claude should help identify the right optimization function.\n\n### Phase 2: Understanding the Three Main Frameworks\n\n#### Framework 1: Basic Science\n**Axes:** How much did we learn? × How general/fundamental is the object of study?\n\n**Philosophy:** A high score on EITHER axis yields substantial impact. You don't need both.\n\n**Examples:**\n- **High Generality, Medium Learning:** Ribosome stalling complex\n  - Updates understanding of translation (fundamental process)\n  - Scores well because translation is universal\n  \n- **Medium Generality, High Learning:** Oxytricha germ-line nucleus\n  - Genomic acrobatics may not be common to other organisms\n  - BUT elegant mapping scores highly on how much we learned\n  - May yield tools for genome editing (bonus)\n  \n- **High on Both Axes (Landmark):** RNA interference, biomolecular condensates\n  - These are rare—don't expect every project to be here\n  - But aim to score well on at least one axis\n\n**Key Questions:**\n- How many systems/organisms does this apply to?\n- Does it update understanding of a fundamental process?\n- Will textbooks need to be rewritten?\n- What new questions does this open?\n\n#### Framework 2: Technology Development\n**Axes:** How widely will it be used? × How critical is it for the application?\n\n**Philosophy:** Again, high score on EITHER axis is sufficient.\n\n**Examples:**\n- **Widely Used, Not Critical:** BLAST\n  - Used in countless projects\n  - Rarely THE critical tool, but enormous cumulative impact\n  \n- **Not Widely Used, Highly Critical:** Cryo-electron tomography\n  - Too complicated for broad adoption\n  - But generates stunning data that's impossible to get otherwise\n  - When you need it, nothing else works\n  \n- **High on Both Axes (Game-Changing):** \n  - GFP, CRISPR, AlphaFold (the famous ones)\n  - But also: lentiviral delivery, cell sorting, massively parallel sequencing\n  - Technologies we cannot imagine living without\n\n**Key Questions:**\n- How many labs would adopt this?\n- For what fraction of experiments is this THE enabling technology?\n- What becomes possible that wasn't before?\n- How hard is it to implement?\n\n**Critical Rule:** A tool that won't be widely used AND isn't critical for an application probably isn't worth building.\n\n#### Framework 3: Typical Invention/Application\n**Axes:** How much good? × For how many people?\n\n**Philosophy:** Useful for translational work, frugal science, global health.\n\n**Examples:**\n- Foldscope: Paper microscope accessible to millions of students globally\n- Neglected tropical disease intervention: Quality-adjusted life years per $100\n- Medical device: Number of patients who can access treatment\n\n**Key Questions:**\n- What problem does this solve?\n- How many people have this problem?\n- How much better is their life if you solve it?\n- What's the cost per person helped?\n\n### Phase 3: Selecting and Articulating Your Framework\n\nBased on your Phase 1 responses, let me help you choose:\n\n**If you selected A (fundamental knowledge):** → Basic Science Framework\n**If you selected B (enable experiments):** → Technology Development Framework  \n**If you selected C (solve practical problem):** → Invention Framework\n\n**Now, let's be explicit:**\n\n1. **State Your Framework:** \"This project should be evaluated as [basic science/technology development/invention].\"\n\n2. **Define Your Axes:** \n   - X-axis measures: [specific metric]\n   - Y-axis measures: [specific metric]\n\n3. **Make Your Case:**\n   - X-axis score (Low/Medium/High): [Your assessment + reasoning]\n   - Y-axis score (Low/Medium/High): [Your assessment + reasoning]\n\n4. **Threshold Check:** \n   - Do you score at least MEDIUM-HIGH on one axis?\n   - If both are LOW-MEDIUM, you have a problem\n\n### Phase 4: Alternative or Custom Metrics\n\nSometimes standard frameworks don't fit. Examples where custom metrics work:\n\n**Alternative Metric Examples:**\n- **Frugal Science:** How many children in low/middle-income countries gain access to microscopy?\n- **Neglected Disease:** Quality-adjusted life years saved per $100 invested\n- **Sustainability:** Tons of CO₂ equivalent prevented × cost-effectiveness\n- **Equity:** Reduction in disparity metric × number of people affected\n\n**When to propose alternative metrics:**\n- Your work addresses a specific underserved need\n- Standard metrics miss your core value proposition\n- You're working in an emerging area without established norms\n- Your work crosses traditional boundaries\n\n**How to propose alternative metrics:**\n1. Explain why standard metrics are insufficient\n2. Define your proposed metric clearly\n3. Provide a value creation index (two axes)\n4. Show how your project scores on these axes\n\n### Phase 5: Comparative Assessment\n\nEven if absolute impact is hard to estimate, comparative assessment is valuable:\n\n**Exercise: Compare 3 Related Projects**\n\nFor your project and two alternatives (either from literature or hypothetical):\n\n| Project | Framework | X-Axis Score | Y-Axis Score | Overall |\n|---------|-----------|--------------|--------------|---------|\n| Yours | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 1 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 2 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n\n**Comparative Questions:**\n- Which would be most impactful if they all work?\n- Which has the best risk-adjusted impact?\n- Are you pursuing the best option?\n- If not, why? (Sometimes there are good reasons: resources, expertise, timing)\n\n### Phase 6: Avoiding Metric Mismatch\n\n**Common Mismatches:**\n\n#### Mismatch 1: Basic Science vs. Technology Evaluation\n**Scenario:** You're doing fundamental biology, but reviewers ask \"How widely will this be used?\"\n\n**Problem:** They're evaluating basic science with technology metrics\n\n**Solution:** Explicitly frame as basic science. Lead with: \"This updates our understanding of [fundamental process], which is conserved across [many systems].\"\n\n#### Mismatch 2: Technology vs. Basic Science Evaluation\n**Scenario:** You're building a tool, but reviewers ask \"How much did we learn about biology?\"\n\n**Problem:** They're evaluating technology with basic science metrics\n\n**Solution:** Explicitly frame as technology development. Lead with: \"This enables experiments that are currently impossible, which [X] labs need for [Y] applications.\"\n\n#### Mismatch 3: Within-Category Confusion\n**Scenario:** Your basic science is specific but deep, but reviewers want broad generality\n\n**Problem:** They think both axes are required, rather than either/or\n\n**Solution:** Explicitly acknowledge: \"While this may not be universal, the depth of mechanistic insight scores highly on the learning axis.\"\n\n#### Mismatch 4: Time Horizon Mismatch\n**Scenario:** You're working on long-term fundamental research, but reviewers want immediate impact\n\n**Problem:** Different value systems about when impact should materialize\n\n**Solution:** Articulate your time horizon explicitly and provide historical examples of similar timelines\n\n### Phase 7: Value System Discussion\n\nThis is where Claude explicitly discusses the user's belief system about what matters:\n\n**Questions for Reflection:**\n\n1. **What drives the user?**\n   - Discovery and understanding?\n   - Enabling others?\n   - Solving problems?\n   - Building things?\n\n2. **What would make the user proud?**\n   - Paper in Cell/Nature/Science?\n   - Tool used by hundreds of labs?\n   - Treatment reaching patients?\n   - Opening a new field?\n\n3. **How does the user want to be remembered?**\n   - \"Discovered X\"\n   - \"Built Y that enabled Z\"\n   - \"Solved problem W\"\n   - \"Trained students who went on to...\"\n\n4. **Whose approval matters?**\n   - Specific senior scientists in the field?\n   - Broader community across fields?\n   - Practitioners who use tools?\n   - People whose lives are improved?\n\n**There are no wrong answers—but alignment matters:**\n- The project should match the user's value system\n- The evaluation framework should match the project type\n- Communication should lead with the framework\n\n### Phase 8: Literature Benchmarking\n\nClaude should use PubMed to benchmark impact in the user's area:\n\n**Searches should include:**\n\n1. **Impact Exemplars:** Papers the user considers high-impact in the field\n   - What framework did they use (implicitly or explicitly)?\n   - How did they score on the axes?\n   - What made them successful?\n\n2. **Analogous Projects:** Similar approaches or systems\n   - How were they evaluated?\n   - What impact did they achieve?\n   - What can be learned from their framing?\n\n3. **Field Expectations:** What's typical for the area?\n   - Are basic science papers common?\n   - Is technology development valued?\n   - What level of impact is \"good enough\"?\n\n**Questions to ask the user:**\n- What papers should be analyzed as benchmarks?\n- What search terms capture the field's impact exemplars?\n- Are there specific journals or authors whose framing to emulate?\n\n### Phase 9: Communication Strategy\n\nOnce the framework is selected, here's how to lead with it:\n\n#### In Talks:\n**Opening Frame (within first 2 slides):**\n- \"The goal of this work is to understand [fundamental process X] in [general system Y]\" → Basic science\n- \"We're developing a technology that will enable [critical experiment X] for [community Y]\" → Technology\n- \"This invention addresses [problem X] affecting [N] people\" → Application\n\n#### In Papers:\n**Abstract Structure:**\n- State your framework implicitly through word choice\n- Basic science: \"reveals,\" \"demonstrates,\" \"shows that\"\n- Technology: \"enables,\" \"provides,\" \"makes it possible to\"\n- Application: \"solves,\" \"addresses,\" \"improves\"\n\n#### In Grants:\n**Broader Impact Section:**\n- Explicitly name your evaluation framework\n- Provide the two-axis assessment\n- Score yourself on each axis with evidence\n\n#### With Your PI/Committee:\n**Alignment Conversation:**\n- \"I want to make sure we're aligned on how this should be evaluated\"\n- \"I see this as [framework], scoring [X] on [axis 1] and [Y] on [axis 2]\"\n- \"Do you agree, or do you see it differently?\"\n- \"This matters because...\" [explain downstream implications]\n\n## Output Deliverable\n\nClaude should produce a **2-page Impact Assessment Document**:\n\n### Page 1: Framework and Scoring\n\n#### Project Categorization:\n- **Type:** Basic Science / Technology Development / Invention / Custom\n- **Rationale:** [Why this categorization fits]\n\n#### Optimization Function:\n- **X-Axis:** [Metric name and definition]\n- **Y-Axis:** [Metric name and definition]\n- **Custom Rationale (if applicable):** [Why standard metrics don't fit]\n\n#### Self-Assessment:\n\n**X-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Y-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Overall Assessment:**\n- Score on at least one axis: ☑ Yes / ☐ No\n- Strong justification: ☑ Yes / ☐ No\n- Aligned with your values: ☑ Yes / ☐ No\n\n#### Visual Framework:\n```\n         [Your Project Type]\n              \nY-Axis    |           ★ Your Project\n[Metric]  |         /\n          |       /\n          |     /\n          |   /\n          |_________________\n              X-Axis [Metric]\n              \n★ = Your project\nReference projects plotted for context\n```\n\n### Page 2: Communication and Alignment\n\n#### Value System Alignment:\n- **What Drives You:** [Discovery/Enabling/Problem-solving/Building]\n- **Success Definition:** [What would make this worthwhile]\n- **Approval Sources:** [Whose opinion matters and why]\n- **Framework Fit:** [How project aligns with values]\n\n#### Potential Mismatches to Avoid:\n1. [Specific mismatch type]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n2. [Another mismatch]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n#### Communication Strategy:\n\n**For Talks:**\n- Opening frame: [Exact language to use in first 2 slides]\n- Key phrases: [Vocabulary that signals your framework]\n\n**For Papers:**\n- Abstract structure: [Framework-appropriate language]\n- Impact statement: [How to articulate in discussion]\n\n**For Grants:**\n- Broader impact: [How to score yourself explicitly]\n- Justification: [Evidence for scores]\n\n**For Mentors:**\n- Alignment question: [Exact question to ask]\n- Your perspective: [How you see it]\n- Discussion points: [What matters for alignment]\n\n#### Comparative Analysis:\n\n| Project | Type | X-Score | Y-Score | Notes |\n|---------|------|---------|---------|-------|\n| Yours | [Type] | [L/M/H] | [L/M/H] | [Key strengths] |\n| Benchmark 1 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Benchmark 2 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Alternative | [Type] | [L/M/H] | [L/M/H] | [Why not pursuing] |\n\n#### Action Items:\n1. [Specific step to strengthen X-axis score or argument]\n2. [Specific step to strengthen Y-axis score or argument]\n3. [Communication alignment with key stakeholders]\n\n## Practical Examples\n\n### Example 1: Ribosome Stalling (Basic Science)\n- **Framework:** Basic science\n- **X-Axis (Generality):** HIGH—translation is universal\n- **Y-Axis (Learning):** MEDIUM—mechanism of one quality control system\n- **Assessment:** High on generality alone = substantial impact\n- **Communication:** \"Updates our understanding of translation quality control\"\n\n### Example 2: BLAST (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** VERY HIGH—used by virtually all molecular biologists\n- **Y-Axis (Critical):** LOW-MEDIUM—helpful but rarely essential\n- **Assessment:** Extreme breadth of use = enormous cumulative impact\n- **Communication:** \"Enables rapid sequence comparison across all biological databases\"\n\n### Example 3: Cryo-EM Tomography (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** LOW—complex, expensive, specialized\n- **Y-Axis (Critical):** VERY HIGH—generates impossible-to-get-otherwise data\n- **Assessment:** Extreme criticality for niche = high impact\n- **Communication:** \"Enables 3D visualization of molecular machines in native cellular context\"\n\n### Example 4: Foldscope (Invention)\n- **Framework:** Invention (custom metric)\n- **X-Axis (Good):** MEDIUM—functional microscopy\n- **Y-Axis (People):** VERY HIGH—millions of students globally\n- **Assessment:** Massive reach × modest utility = transformative for education\n- **Communication:** \"Democratizes microscopy for global education\"\n\n## Key Principles to Remember\n\n1. **Value Is in the Eye of a Belief System:** Make yours explicit.\n\n2. **Lead with Your Metric:** Don't assume others share your framework.\n\n3. **Either Axis Suffices:** You don't need both—just score well on one.\n\n4. **Articulate Early:** Discuss with mentors before you're 2 years in.\n\n5. **Avoid Default State:** Work actively against irrelevance/non-use.\n\n6. **Compare, Don't Absolute:** Even rough comparison beats ignoring impact.\n\n7. **Align Communication:** Your words should signal your framework.\n\n8. **Match Project to Values:** Life is too short for misaligned work.\n\n## Warning Signs\n\n**Warning signs include:**\n- Inability to articulate which framework applies\n- Scoring LOW on both axes\n- Project type and evaluation framework don't match\n- User and PI have different frameworks but haven't discussed it\n- Using basic science metrics for a tool or vice versa\n- Never explicitly discussing impact assessment\n\n**Good shape indicators:**\n- Clear statement of optimization function\n- MEDIUM-HIGH score on at least one axis\n- Framework matches project type\n- Alignment with key stakeholders\n- Communication signals framework clearly\n- Benchmarking against comparable work\n\n## Getting Started\n\nClaude should begin Phase 1 by asking:\n1. What is the primary goal? (A/B/C/D)\n2. What would success look like in 3-5 years?\n3. Who cares if this succeeds?\n\nTogether, Claude and the user will select the right optimization function and position the work for maximum impact.\n\n---\n\n*Remember: Impact assessment isn't about ego—it's about ensuring work matters in the way the scientist wants it to matter. Explicit framing prevents years of misalignment.*\n","bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md":"# SKILL 4: Parameter Fixation Strategy\n\n## Overview\nThis skill helps scientists strategically decide which parameters to fix and which to keep flexible in their project. The paradox: too many fixed parameters creates brittleness, but too few causes paralysis. The key is fixing ONE parameter thoughtfully and letting others float—constraints engender creativity.\n\n## Core Principle\n\n**\"Fix one parameter; let the others float.\"**\n\nMost failure modes in ideation involve fixing too many parameters at the outset (system + method + application). Conversely, statements like \"I want to do impactful work in cell engineering\" are so broad they cause paralysis. The sweet spot: fix one meaningful constraint and let creativity flow within that boundary.\n\n## What Are Project Parameters?\n\nParameters are the choices that define your project:\n\n**Common Parameters:**\n- **System:** Which organism/cell type/tissue/molecule?\n- **Question:** What biological phenomenon to study?\n- **Tool/Method:** Which experimental approach?\n- **Application:** What practical use or goal?\n- **Output:** What form will results take?\n- **Collaborators:** Who will you work with?\n- **Timeline:** How fast must you move?\n- **Resources:** What's available/necessary?\n\n## The Skill Workflow\n\n### Phase 1: Parameter Inventory (10 minutes)\n\nFirst, let's identify what's already fixed in your current project idea:\n\n**Question 1: List your project parameters**\n\nFor each category, indicate if it's **FIXED** (must stay) or **FLOATING** (could change):\n\n| Parameter Type | Your Choice | Status (F/FL) | Why Fixed? |\n|----------------|-------------|---------------|------------|\n| **System** | [organism/cell/tissue] | F / FL | [reason] |\n| **Question** | [biological phenomenon] | F / FL | [reason] |\n| **Tool/Method** | [techniques] | F / FL | [reason] |\n| **Application** | [use case/goal] | F / FL | [reason] |\n| **Timeline** | [duration] | F / FL | [reason] |\n| **Resources** | [equipment/funding] | F / FL | [reason] |\n\n**Question 2: Count your fixed parameters**\n- How many did you mark as FIXED? _____\n- If >2, you may have over-constrained the problem\n\n**Question 3: Why are they fixed?**\nFor each fixed parameter, is it because:\nA. Your expertise/passion\nB. Lab resources/capabilities  \nC. Advisor requirements\nD. You think it's the \"best\" solution\nE. Historical accident (you started this way)\n\n### Phase 2: The GLP-1 Example (Case Study)\n\nLet's learn from a concrete example:\n\n**Proposed Project:** Engineer a T cell to produce GLP-1 (glucagon-like peptide-1) for continuous supply.\n\n**Analysis: What's Fixed?**\n1. Improving GLP-1 receptor agonist delivery characteristics (the problem)\n2. Using an engineered T cell (the solution)\n\n**Problem:** Two parameters fixed = poor technique-application match\n\n**Alternative Framings:**\n\n**If you fix Parameter 1 (GLP-1 delivery):**\n- Let the solution float\n- Better options: peptide engineering for extended half-life, oral peptides, small molecules, B cells (better protein secretion)\n- Why T cell is suboptimal: Not designed for protein secretion\n- **Best for:** Trainee in metabolism lab who cares about GLP-1\n\n**If you fix Parameter 2 (Engineered T cell):**\n- Let the application float\n- Better options: local-acting peptides (cytokines, chemokines, growth factors) for oncology/autoimmunity/regeneration\n- Why GLP-1 is suboptimal: Doesn't leverage T cell's natural capabilities\n- **Best for:** Trainee in immunology/cell engineering lab\n\n**Key Insight:** Which parameter you fix depends on YOUR interests and your lab's expertise. Both can lead to great projects, but they're DIFFERENT projects.\n\n### Phase 3: Diagnostic Questions\n\n**The Goldilocks Test:**\n\n**Too Many Fixed Parameters (>2):**\n- Are you forcing a technique-application match?\n- If one assumption fails, does everything fail?\n- Are you more attached to HOW than WHAT?\n- Does your project sound like: \"Use X to do Y in Z\"?\n\n**Too Few Fixed Parameters (0-1 very broad):**\n- Do you feel paralyzed where to start?\n- Is your statement super generic? (\"Do impactful work in...\")\n- Are you avoiding commitment?\n- Do you have decision fatigue?\n\n**Just Right (1-2 well-chosen):**\n- Do you have creative constraints?\n- Can you articulate why THIS constraint matters?\n- If one approach fails, do alternatives exist?\n- Does the constraint energize you?\n\n### Phase 4: The Illumina Example (Constraints Drive Innovation)\n\n**Historical Context:** Next-generation sequencing wasn't designed; we got Illumina's approach (many short reads).\n\n**Initial Constraint:** Short reads seemed like a limitation\n- Not what we would have \"asked for\"\n- Seemed inferior to long reads\n\n**Innovation Unleashed:**\n- Computational methods (assembly algorithms)\n- Novel applications (RNA-seq, ChIP-seq, ATAC-seq)\n- Unexpected uses (protein folding via sequencing)\n- Biochemical creativity to work within constraints\n\n**Lesson:** Constraints don't limit creativity—they focus it. If you feel stuck, fix ONE parameter and watch resourcefulness emerge.\n\n### Phase 5: Which Parameter Should You Fix?\n\n**Strategic Questions to Identify the Right Fixed Parameter:**\n\n1. **What can you prototype quickly?**\n   - What test article could you build rapidly?\n   - Which experimental conditions enable early go/no-go?\n   - What gives you fastest feedback?\n\n2. **What are people around you unusually good at?**\n   - Lab expertise?\n   - Core facility capabilities?\n   - Collaborator strengths?\n   - Your unique skill combination?\n\n3. **What do you enjoy so much you don't think of it as work?**\n   - System you're passionate about?\n   - Technique you love?\n   - Type of question that excites you?\n\n4. **What's your competitive advantage?**\n   - Unique resource access?\n   - Rare skill combination?\n   - Proprietary data/reagents?\n   - First-mover opportunity?\n\n**Common Strategic Choices:**\n\n**Fix the System (Let question & tool float):**\n- Good if: You're an expert in the organism/tissue/cell type\n- Enables: Asking multiple questions, trying various tools\n- Example: \"I study *Drosophila* neural development; I'll let the specific questions and methods emerge\"\n\n**Fix the Question (Let system & tool float):**\n- Good if: You care deeply about a biological phenomenon\n- Enables: Testing across systems, using best tool for each\n- Example: \"I want to understand phase separation; I'll study it wherever it's clearest\"\n\n**Fix the Tool (Let system & question float):**\n- Good if: You're developing or mastering a technology\n- Enables: Finding best applications, comparing across systems\n- Example: \"I'm building a new microscopy method; I'll find the most impactful uses\"\n\n**Fix the Application (Let system & tool float):**\n- Good if: You have a specific translational goal\n- Enables: Trying multiple approaches, testing in different models\n- Example: \"I want to treat disease X; I'm open to any validated approach\"\n\n### Phase 6: Parameter Flexibility Matrix\n\nFor your project, let's create a flexibility assessment:\n\n| Parameter | Currently | Should Be? | If Problem Arises, Could This Float? |\n|-----------|-----------|------------|--------------------------------------|\n| System | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Question | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Tool | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Application | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Timeline | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Resources | [F/FL] | [F/FL] | Yes / No / Maybe |\n\n**Analysis:**\n- **Flexibility Score:** How many \"Yes\" or \"Maybe\"? _____\n- **Risk Assessment:** If <3 can float, you're brittle\n- **Pivot Potential:** Which parameters provide escape routes?\n\n### Phase 7: Scenario Planning\n\nFor each fixed parameter, let's plan what happens if it becomes untenable:\n\n**Fixed Parameter 1: [Name it]**\n- **Why it's fixed:** [Your reason]\n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n**Fixed Parameter 2: [Name it]**\n- **Why it's fixed:** [Your reason]  \n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n### Phase 8: The Unfixing Exercise\n\nSometimes you need to unfix parameters to escape a rut:\n\n**Current State:** [Describe your over-constrained project]\n\n**Unfixing Experiment:**\n\n**Try 1: Unfix the System**\n- Keep question & tool\n- What other systems could you study?\n- Which would be easier/faster/more informative?\n\n**Try 2: Unfix the Tool**\n- Keep system & question\n- What other methods exist?\n- Which are more mature/accessible/powerful?\n\n**Try 3: Unfix the Question**\n- Keep system & tool\n- What other questions could you ask?\n- Which would be more impactful/feasible?\n\n**Evaluation:** Does any \"unfixed\" version seem better than your original? If yes, you over-constrained.\n\n### Phase 9: Literature Reality Check\n\nLet's use PubMed to see how others handled parameter fixation:\n\n**Search 1: Successful projects in your area**\n- What did they fix?\n- What did they let float?\n- Did they pivot from their initial parameter choices?\n\n**Search 2: Failed or stalled projects**\n- (Often in discussion sections or preprints)\n- Did they over-constrain?\n- What parameters trapped them?\n\n**Search 3: Method papers**\n- How did technology developers choose applications?\n- Did they fix the tool and let applications emerge?\n\n**Your Searches:**\nWhat specific papers should we analyze for parameter lessons?\n\n## Output Deliverable\n\n**2-Page Parameter Strategy Document**\n\n### Page 1: Current State and Analysis\n\n#### Parameter Inventory:\n| Parameter | Current Status | Strategic Rationale | Flexibility |\n|-----------|----------------|---------------------|-------------|\n| System | Fixed: [X] | [Why] | Can float if: [condition] |\n| Question | Floating: [Y,Z] | [Why] | Constrained by: [X] |\n| Tool | [Status] | [Why] | [Contingency] |\n| Application | [Status] | [Why] | [Contingency] |\n\n#### Diagnostic Summary:\n- **Fixed Parameters:** [Count and list]\n- **Assessment:** ☐ Too Many (>2) / ☐ Just Right (1-2) / ☐ Too Few (0, too broad)\n- **Primary Fixed Parameter:** [The one that matters most]\n- **Reason for Fixation:** [Expertise/Passion/Resources/Other]\n\n#### Goldilocks Test Results:\n- Over-constrained indicators: [Yes/No to each test]\n- Under-constrained indicators: [Yes/No to each test]\n- Verdict: [Analysis]\n\n### Page 2: Strategy and Contingencies\n\n#### Recommended Parameter Strategy:\n\n**Core Fixed Parameter:** [The one to keep]\n- **Rationale:** [Why this one]\n- **Your advantage:** [Expertise/access/passion]\n- **Enables:** [What becomes possible]\n\n**Parameters That Should Float:** [List]\n- [Parameter 1]: [How to explore alternatives]\n- [Parameter 2]: [How to explore alternatives]\n\n#### If Core Assumptions Fail:\n\n**Scenario 1: [Specific failure mode]**\n- **Unfix:** [Which parameter to let float]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n**Scenario 2: [Another failure mode]**\n- **Unfix:** [Which parameter]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n#### Project Ensemble:\n```\nCore Fixed: [X]\n\nPossible Projects:\n1. [X] + [A] + [B1] → [Outcome]\n2. [X] + [A] + [B2] → [Outcome]\n3. [X] + [C] + [B1] → [Outcome]\n\nAll share [X], but float other parameters\n```\n\n#### Strategic Questions Answered:\n1. **Quick prototype:** [How to test quickly]\n2. **Team strengths:** [Who's good at what]\n3. **Your passion:** [What energizes you]\n4. **Competitive advantage:** [Your edge]\n\n#### Historical Parallel:\n[Example like Illumina where constraints drove innovation in your field]\n- The constraint: [What seemed limiting]\n- The innovation: [How people worked within it]\n- Your application: [How this applies to your project]\n\n## Practical Examples\n\n### Example 1: GLP-1 T Cell Project (Over-Constrained)\n- **Fixed:** GLP-1 delivery + T cell engineering\n- **Problem:** Poor technique-application match\n- **Solution:** Unfix one parameter\n  - Fix delivery, float cell type → Better options emerge\n  - Fix T cell, float payload → Better applications emerge\n\n### Example 2: Drosophila Neurobiologist (Well-Constrained)\n- **Fixed:** *Drosophila* nervous system\n- **Floating:** Specific questions, methods\n- **Works because:** Deep system expertise, many tools available\n- **Enables:** Pursuing most impactful questions as field evolves\n\n### Example 3: \"Impactful Cell Engineering\" (Under-Constrained)\n- **Fixed:** Nothing specific\n- **Problem:** Paralysis from too many options\n- **Solution:** Fix one meaningful constraint\n  - Option A: Fix CAR-T platform → Find best applications\n  - Option B: Fix autoimmune disease → Find best cell engineering approach\n  - Option C: Fix specific rare disease → Let methods emerge\n\n## Key Principles to Remember\n\n1. **Constraints Engender Creativity:** Limitations focus resourcefulness\n\n2. **One Parameter Rule:** Fix one meaningful constraint, let others float\n\n3. **Match to Your Strengths:** Fix the parameter you have advantage in\n\n4. **Technique-Application Match:** Don't force tools into wrong problems\n\n5. **Flexibility = Resilience:** Floating parameters provide pivot options\n\n6. **Historical Lesson:** Best technologies emerged from working within constraints (Illumina)\n\n7. **Not Forever:** Parameters can unfix mid-project when stuck\n\n## Warning Signs\n\n**Over-Constrained (Too Many Fixed):**\n- Project sounds like: \"Use X to study Y in Z\"\n- When one assumption fails, everything fails\n- You're attached to HOW more than WHAT\n- Forcing a technique-application match\n\n**Under-Constrained (Too Few/Vague):**\n- Statement is incredibly broad (\"impactful work in...\")\n- Feeling paralyzed about where to start\n- Avoiding commitment due to infinite options\n- No clear next experimental step\n\n**Well-Constrained:**\n- One clear fixed parameter with good rationale\n- Multiple paths within that constraint\n- Energized by the focused challenge\n- If one approach fails, alternatives exist\n\n## Ready to Begin?\n\nLet's start with Phase 1. Please provide:\n1. Your current project description\n2. List of what you think is fixed vs. floating\n3. Your lab's core expertise\n4. What aspect excites you most\n\nTogether we'll optimize your parameter strategy for maximum creativity and resilience.\n\n---\n\n*Remember: The right constraint is liberating, not limiting. It channels creativity into productive directions while maintaining flexibility for pivots.*\n","bio-research/skills/scientific-problem-selection/references/05-decision-tree.md":"# SKILL 5: Decision Tree Navigation (\"The Altitude Dance\")\n\n## Overview\nThis skill teaches you to move fluidly between execution (Level 1: getting stuff done) and strategic evaluation (Level 2: critical thinking). Projects rarely unfold linearly—they require frequent course correction. Most trainees should spend MORE time on their project's decision tree.\n\n## Core Principle\n**\"Learn the altitude dance\"**\n\nMove back and forth frequently between:\n- **Level 1:** Full immersion in experimental details or coding\n- **Level 2:** Step back, clear your head, evaluate as if someone else did the work\n\nThese cannot be done simultaneously. The key to navigating a project's decision tree is alternating between these levels deliberately.\n\n## Key Concepts\n\n**Why Decision Trees Matter:**\nOnce you're in a project, the landscape changes:\n- You've learned from initial experiments\n- New papers have been published\n- Technology has advanced\n- Your assumptions have been tested\n\nAt any decision point, you should rarely follow your plan from 2 years ago—there will be a better alternative.\n\n**The Altitude Levels:**\n- **Level 1 (Ground Level):** Doing the work, troubleshooting, optimizing\n- **Level 2 (Strategic Altitude):** What did we learn? What should we do next?\n- **Level 3 (Field Altitude):** How does this fit in the broader landscape?\n- **Level 4 (Career Altitude):** Is this the right use of my finite time?\n\n**Common Failure Modes:**\n1. **Stuck in Level 1:** Troubleshooting endlessly without reassessing the plan\n2. **Only Level 2:** Brilliant strategist but never rolls up sleeves\n3. **No rhythm:** Switching randomly instead of deliberately\n\n## Workflow\n\n### Phase 1: Map Your Decision Tree\n\nFor your project, identify:\n1. **Initial plan:** What was the intended path?\n2. **Branch points:** Where might alternative paths emerge?\n3. **Decision criteria:** What determines which branch to take?\n4. **New information:** What could change the landscape?\n\n### Phase 2: Establish Your Rhythm\n\n**Recommended Schedule:**\n- **Daily:** Level 1 work (experiments, coding, analysis)\n- **Weekly:** Level 2 evaluation (1-2 hours, ideally Friday afternoon)\n- **Monthly:** Level 3 field review (read new papers, attend seminars)\n- **Quarterly:** Level 4 career check-in (with mentor)\n\n**Level 2 Weekly Protocol:**\n1. Clear your head (walk, coffee, change of scene)\n2. Review what happened this week\n3. Ask: What did we learn?\n4. Ask: What should happen next?\n5. Update decision tree\n6. Plan next week's Level 1 work\n\n### Phase 3: Decision Points\n\nAt each major branch point:\n\n**Example: Genetic Screen Hits Wall**\n\nInstead of endless troubleshooting:\n- **Alternative 1:** Redo computational analysis with larger genome dataset\n- **Alternative 2:** Use AlphaFold models to search for similar folds\n- **Alternative 3:** Print and test larger candidate set (DNA synthesis cheaper now)\n\n**Framework:**\n1. **Acknowledge the stuck point**\n2. **Step to Level 2:** Evaluate with fresh eyes\n3. **Consider: What's newly possible?** (technology, knowledge)\n4. **Generate 3 alternatives**\n5. **Decide:** Troubleshoot more vs. pursue alternative\n\n## Output: Decision Tree Map\n- Visual map of your project's decision points\n- Update frequency schedule\n- Criteria for each branch point\n- Protocol for getting unstuck\n","bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md":"# SKILL 6: Adversity Response Planning (\"The Adversity Feature\")\n\n## Overview\nThis skill helps you prepare for inevitable crises and reframe them as opportunities. The term \"adversity feature\" (like a \"rock garden\" on a mountain bike trail) captures the mindset: adversity is not an obstacle—it's an opportunity to develop skill and improve your project.\n\n## Core Principle\n**\"Capitalize on the 'adversity feature'\"**\n\nAdversity in a project is inevitable AND opportune:\n- **Inevitable:** Almost every project suffers existential crisis or sharp turn\n- **Opportune:** Two valuable outcomes possible:\n  1. Fix the problem AND upgrade the project simultaneously\n  2. Develop reasoning-your-way-out skills (best growth opportunity)\n\n## Key Concepts\n\n**Why Adversity Is Inevitable:**\n- Technology doesn't work as advertised\n- Biological assumptions prove false\n- You get scooped\n- Key collaborator leaves\n- Funding runs out\n- Results don't support hypothesis\n\n**Why Adversity Is Opportune:**\n- Forces you to think deeply about alternatives\n- Removes sunk-cost bias (path is blocked anyway)\n- Often leads to better projects than original plan\n- Develops critical problem-solving skills\n- Makes you resourceful\n\n**The Crisis Mindset:**\n- **Wrong:** \"This is a disaster that delays me\"\n- **Right:** \"This is the crisis I've been waiting for—don't waste it\"\n\n## Workflow\n\n### Phase 1: Anticipate Failure Modes\n\nFor your project, list likely adversity scenarios:\n1. **Technical failures:** Method doesn't work, signal too low, etc.\n2. **Biological surprises:** System behaves unexpectedly\n3. **Competition:** Someone scoops you\n4. **Resource issues:** Funding, equipment, access\n5. **Timeline pressures:** Takes longer than expected\n\nFor each, rate:\n- Likelihood (Low/Medium/High)\n- Impact if it happens (Low/Medium/High)\n- When it might surface (early/mid/late)\n\n### Phase 2: Upgrade Opportunities\n\nFor each high-likelihood or high-impact failure mode:\n\n**Question 1: How could you fix this AND make the project better?**\nNot just: \"Get it working\"\nInstead: \"Use this as opportunity to improve the approach\"\n\n**Example: Your Cell Type Can't Be Isolated**\n- Fix: Develop new isolation method\n- Upgrade: Make method work for whole class of cell types\n- Result: Better project (technology paper) + original biology\n\n**Question 2: What skill would you develop by solving this?**\n- Computational: Learn new analysis method\n- Technical: Master challenging technique\n- Conceptual: Reason through biological complexity\n\n### Phase 3: The Ensemble View\n\n**Critical Insight:** You're not picking ONE project path—you're picking an ENSEMBLE of possible projects that share core elements.\n\n**Your Project Ensemble:**\n```\nCore Theme: [What stays constant]\n\nPath 1: [Original plan]\nPath 2: [If assumption A fails]\nPath 3: [If technical barrier B encountered]\nPath 4: [If scooped on C]\n\nAll paths lead to impactful results, just different ones\n```\n\nThis reframing is liberating: when adversity strikes, you're not failing—you're discovering which path in the ensemble you're actually on.\n\n### Phase 4: Historical Examples\n\n**Example 1: PROTAC Discovery**\n- **Original Plan:** Create molecules to degrade specific kinase\n- **Crisis:** Didn't work for intended target\n- **Upgrade:** Test across kinome systematically\n- **Result:** Better project (mapped degradable kinome, discovered that target engagement ≠ degradation)\n- **Impact:** More influential than if original plan succeeded\n\n**Example 2: Steroid Receptor Study**\n- **Original Plan:** Identify THE receptor for a steroid\n- **Crisis:** Binds multiple receptors at different affinities\n- **Upgrade:** Reframe question: How does finite receptor pool sense infinite lipids?\n- **Result:** Combinatorial sensing model (like piano chords)\n- **Impact:** More interesting than \"receptor X binds steroid Y\"\n\n## Output: Adversity Playbook\n\n**Page 1: Anticipated Crises**\n| Crisis | Likelihood | Impact | Timeline | Growth Opportunity |\n|--------|-----------|--------|----------|-------------------|\n| [Crisis 1] | H/M/L | H/M/L | Early/Mid/Late | [Skill developed] |\n\n**Page 2: Upgrade Strategies**\nFor each high-priority crisis:\n- **The Crisis:** [Description]\n- **Fix Strategy:** [How to solve it]\n- **Upgrade Strategy:** [How to make project better while fixing]\n- **Alternative Path:** [New direction if fix doesn't work]\n- **Ensemble Position:** [How this fits in project family]\n\n**Page 3: Resilience Rituals**\n- **Weekly check-in:** Review what went wrong, what was learned\n- **Monthly ensemble review:** Update the family of possible projects\n- **Crisis protocol:** When major setback hits, take 2 days to think before acting\n- **Growth tracking:** Document skills developed through adversity\n","bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md":"# SKILL 7: Problem Inversion Strategies (\"Turn It On Its Head\")\n\n## Overview\nThis skill provides three concrete strategies for navigating around obstacles by reframing problems. When stuck, instead of pushing harder on the current approach, try inverting the problem.\n\n## Core Principle\n**\"Turn a problem on its head\"**\n\nThree powerful strategies:\n1. **Unfix parameters** (covered in Skill 4, applied here in crisis)\n2. **Don't achieve goal A? Achieve comparable goal B**\n3. **\"I have the answer; what is the question?\"**\n\n## Strategy 1: Unfix Parameters (In Crisis Mode)\n\n**When to Use:** Run-of-the-mill issues in project execution\n\n**Approach:** Let a \"sacred\" fixed parameter float\n\n**Example from Lecture:**\n- **Stuck:** Spatial transcriptomics of APC-T cell interactions in tumor microenvironment\n- **All fixed:** Technique, cell types, context\n- **Inversion:**\n  - Unfix technique → What else could measure these interactions?\n  - Unfix cell types → What other interactions matter in tumors?\n  - Unfix context → Where else do APC-T interactions matter?\n\n**Your Application:**\nFor each fixed parameter in your project:\n- What if this floated?\n- What alternatives exist?\n- Which would be easier/faster/more informative?\n\n## Strategy 2: Comparable Goal Substitution\n\n**When to Use:** Existential threats to project (can't achieve original goal)\n\n**Approach:** Achieve a different but equally valuable goal\n\n**Mindset Shift:**\n- **Wrong:** \"I failed to do X\"\n- **Right:** \"The world needs Y instead, which I CAN do\"\n\n**Example from Lectures: PROTAC Story**\n- **Goal A (Failed):** Degrade specific therapeutic target\n- **Goal B (Achieved):** Map which kinases ARE degradable\n- **Value:** B is more impactful (general principle + method validation)\n- **Learning:** Target engagement ≠ degradation (important discovery)\n\n**Framework:**\n1. **Original goal:** [What you wanted]\n2. **Why it failed:** [Specific reason]\n3. **What CAN you do with current data/tools:** [Capabilities]\n4. **Comparable goals:**\n   - Option 1: [Different but related goal]\n   - Option 2: [Another alternative]\n   - Option 3: [Yet another]\n5. **Which is most valuable:** [Analysis]\n6. **How to frame it:** [Communication strategy]\n\n## Strategy 3: Answer Seeking Question\n\n**When to Use:** End-of-project challenges (interpretation, framing, application)\n\n**Approach:** You got an answer, but not to your original question. What question DOES your data answer?\n\n**Mindset Shift:**\n- **Wrong:** \"This doesn't answer my question\"\n- **Right:** \"What interesting question does this answer?\"\n\n**Example from Lectures: Steroid Receptor**\n- **Original Question:** What is THE receptor for this steroid?\n- **Answer Obtained:** Binds multiple receptors at different affinities\n- **Problem:** Can't answer original question (no single receptor)\n- **Inversion:** \"What question does this answer?\"\n- **New Question:** How does finite receptor pool sense infinite lipids?\n- **Answer:** Combinatorial sensing (pattern = unique \"chord\")\n- **Impact:** More interesting than intended finding\n\n**Framework:**\n1. **Original question:** [What you asked]\n2. **Data obtained:** [What you actually found]\n3. **Why it doesn't answer:** [The mismatch]\n4. **What DOES the data show clearly:** [Solid findings]\n5. **What questions could these answer:**\n   - Question 1: [Option]\n   - Question 2: [Option]\n   - Question 3: [Option]\n6. **Which is most interesting:** [Assessment]\n7. **How to reframe paper/project:** [New framing]\n\n## Workflow\n\n### Phase 1: Identify Your Obstacle\n- **Type:** Technical / Biological / Competitive / Interpretive\n- **Severity:** Run-of-mill / Existential / End-stage\n- **Description:** [What's blocking you]\n\n### Phase 2: Select Strategy\n\n| Obstacle Type | Recommended Strategy |\n|--------------|---------------------|\n| Technical barrier, mid-project | Strategy 1 (Unfix parameters) |\n| Can't achieve original goal | Strategy 2 (Comparable goal) |\n| Have data, unclear what it means | Strategy 3 (Answer seeking question) |\n\n### Phase 3: Apply Strategy\n\nWork through the relevant framework above with your specific situation.\n\n### Phase 4: Evaluate Alternatives\n\nFor each alternative generated:\n- **Scientific value:** How interesting is this?\n- **Feasibility:** How hard to execute?\n- **Timeline:** How long will it take?\n- **Impact:** How does this compare to original plan?\n- **Your advantage:** Do you still have edge here?\n\n## Output: Problem Inversion Analysis\n\n**Page 1: Current Situation**\n- **Obstacle:** [Clear description]\n- **Why you're stuck:** [Root cause]\n- **Original plan:** [What you intended]\n- **Current capability:** [What you CAN do]\n\n**Page 2: Strategy Applications**\n\n**Strategy 1 (Unfix Parameters):**\n| Fixed Parameter | If This Floated | Alternative Approaches | Assessment |\n|----------------|-----------------|----------------------|------------|\n| [Param 1] | [Consequences] | [Options] | [Value] |\n\n**Strategy 2 (Comparable Goals):**\n| Original Goal | Why It Failed | Comparable Goal | Value Assessment |\n|--------------|---------------|----------------|------------------|\n| [Goal A] | [Reason] | [Goal B] | [Compare impact] |\n\n**Strategy 3 (Answer → Question):**\n- **Data obtained:** [What you have]\n- **Question 1 it could answer:** [Option 1]\n- **Question 2 it could answer:** [Option 2]\n- **Question 3 it could answer:** [Option 3]\n- **Most interesting:** [Selection + reasoning]\n\n**Page 3: Recommended Path**\n- **Selected strategy:** [1, 2, or 3]\n- **New direction:** [Specific plan]\n- **Why this is better:** [Not just \"it works\" but \"it's more interesting\"]\n- **Communication approach:** [How to frame this pivot]\n- **Timeline:** [New schedule]\n","bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md":"# SKILL 8: Integration and Synthesis\n\n## Overview\nThis final individual skill synthesizes all previous skills into a coherent project plan and communication strategy. You'll create a complete package that demonstrates thoughtful problem selection and rigorous planning.\n\n## Core Principle\n**\"Tell a compelling story with your choices\"**\n\nHumans love stories. Your project should have:\n- **Setting:** Background and problem framing\n- **Problem statement:** Clear, general enough to be interesting, specific enough to be distinctive\n- **New idea/approach:** Your angle (perturbation/measurement/theory: logic vs. technology)\n- **Iteration:** Loop of \"we wondered X → did Y → found Z → interpreted as W\"\n- **Conclusion:** What we learned and/or what's now possible\n- **Passion:** Authentic enthusiasm\n\n## Workflow\n\n### Phase 1: Gather Your Skill Outputs\n\nCollect your completed documents:\n- ☐ Skill 1: Problem Ideation Document\n- ☐ Skill 2: Risk Assessment Matrix\n- ☐ Skill 3: Impact Assessment Document\n- ☐ Skill 4: Parameter Strategy Document\n- ☐ Skill 5: Decision Tree Map\n- ☐ Skill 6: Adversity Playbook\n- ☐ Skill 7: Problem Inversion Analysis (if applicable)\n\n### Phase 2: Create Narrative Arc\n\n**Story Structure for Your Project:**\n\n**1. Setting (Background)**\n- What's known in the field?\n- What's the gap or opportunity?\n- Why does this matter?\n\n**2. Problem Statement**\n- General enough: connects to broad principle\n- Specific enough: distinctive and tractable\n- Your framing from Skill 1\n\n**3. Your Approach**\n- Perturbation/Measurement/Theory\n- Logic vs. Technology\n- What's novel about your angle (from Skill 1)\n- How your optimization function shapes approach (from Skill 3)\n\n**4. Strategy**\n- Fixed vs. floating parameters (from Skill 4)\n- Decision points mapped out (from Skill 5)\n- Risk mitigation built in (from Skill 2)\n- Adversity contingencies (from Skill 6)\n\n**5. Why You**\n- Your competitive advantage\n- Lab expertise\n- Your passion and alignment\n- Timeline and resources\n\n### Phase 3: Communication Formats\n\n**Format 1: 3-Slide, 5-Minute Presentation**\n\n**Slide 1: The Opportunity**\n- Setting + Problem statement\n- One key figure or schematic\n- Why this matters (optimization function)\n\n**Slide 2: Your Approach**\n- New idea/angle\n- Key experiments or analyses\n- What makes this feasible\n- Decision tree highlights\n\n**Slide 3: Impact and Timeline**\n- What you'll learn or enable\n- Success metrics\n- Timeline with milestones\n- Your advantage\n\n**Slide Design Tips:**\n- Minimal text (bullets are fine here)\n- Strong visuals\n- Tell story, don't catalog facts\n- Passion shows through\n\n**Format 2: 1-Page Written Summary**\n\n**Paragraph 1:** Setting and problem (2-3 sentences)\n**Paragraph 2:** Your approach and novelty (3-4 sentences)\n**Paragraph 3:** Why it will work (risk mitigation, your advantage) (2-3 sentences)\n**Paragraph 4:** Impact and timeline (2-3 sentences)\n\n**Total:** ~250-300 words that could be abstract or summary\n\n**Format 3: 1-Minute Elevator Pitch**\n\n**Structure:**\n- \"I'm working on [problem] because [why it matters]\"\n- \"Current approaches are limited by [gap]\"\n- \"My angle is [approach] which is novel because [what's new]\"\n- \"This will [impact] and I have [advantage]\"\n\n**Practice until:** Natural, passionate, memorable\n\n### Phase 4: Integration Document\n\n**Complete Project Plan Integrating All Skills:**\n\n**Section 1: Problem Selection Rationale**\n- How you generated this idea (Skill 1 intuition pumps)\n- Why this problem matters (Skill 3 optimization function)\n- Your competitive advantage\n\n**Section 2: Risk Management**\n- Assumption analysis table (Skill 2)\n- Go/no-go experiments\n- Timeline with checkpoints\n- Mitigation strategies\n\n**Section 3: Execution Strategy**\n- Fixed vs. floating parameters (Skill 4)\n- Decision tree navigation plan (Skill 5)\n- Adversity response protocols (Skill 6)\n- Project ensemble (alternative paths)\n\n**Section 4: Communication Plan**\n- Presentations (3-slide deck)\n- Written summary (1-page)\n- Elevator pitch (1-minute)\n- Key messages for different audiences\n\n**Section 5: Career Alignment**\n- How this fits your trajectory\n- Skills you'll develop\n- Network you'll build\n- Next steps after this project\n\n## Output: Complete Project Package\n\n**Document 1: Integrated Project Plan (4-6 pages)**\n- All sections above\n- References to individual skill outputs\n- Timeline and milestones\n- Resource requirements\n\n**Document 2: Communication Materials**\n- 3-slide presentation\n- 1-page summary\n- Elevator pitch script\n- Talking points for different audiences\n\n**Document 3: Living Documents**\n- Decision tree (to update regularly)\n- Risk assessment (to review quarterly)\n- Adversity playbook (to consult in crisis)\n- Parameter strategy (to revisit if stuck)\n\n## Key Principles\n\n1. **Integration, Not Duplication:** Each skill output serves a purpose in the whole\n2. **Story Over Catalog:** Communicate choices, not just facts\n3. **Passion Matters:** Authentic enthusiasm is persuasive\n4. **Living Plan:** This evolves; revisit quarterly\n5. **Alignment:** Project, values, and career fit together\n6. **Preparation:** You've thought through contingencies\n7. **Communication:** You can pitch this clearly to anyone\n\n## Ready to Synthesize\n\nWith all skills complete, you now have a comprehensive, thoughtful, rigorous approach to problem selection and project planning. This is the highest-leverage work you can do in science.\n","bio-research/skills/scientific-problem-selection/references/09-meta-framework.md":"# SKILL 9: Meta-Framework - Complete Problem Selection Workflow\n\n## Overview\nThis meta-skill orchestrates the complete problem selection process, guiding users through Skills 1-8 in a systematic, iterative way. This skill should be used when comprehensive support is needed from ideation through execution planning, with integrated literature searches and coherent documentation.\n\n## When to Use This Skill\n\n**Use Skill 9 (Complete Workflow) when:**\n- Starting a new project from scratch\n- Major project pivot or reframe needed\n- Grant/fellowship application requiring systematic planning\n- Thesis committee meeting preparation\n- Startup company planning\n- Want comprehensive, documented problem selection process\n\n**Use Individual Skills when:**\n- You're at a specific stage (e.g., just need risk assessment)\n- Quick consultation on one aspect\n- Updating one component of existing plan\n- Teaching/learning one concept\n\n## The Complete Workflow\n\n### Overview of the Journey\n\n```\nSTART: Vague idea or area of interest\n    ↓\n[SKILL 1] → Problem Ideation Document\n    ↓\n[SKILL 2] → Risk Assessment Matrix\n    ↓\n[SKILL 3] → Impact Assessment Document\n    ↓\n[SKILL 4] → Parameter Strategy Document\n    ↓\n[SKILL 5] → Decision Tree Map\n    ↓\n[SKILL 6] → Adversity Playbook\n    ↓\n[SKILL 7] → Problem Inversion Analysis (if needed)\n    ↓\n[SKILL 8] → Integrated Project Plan + Communication Materials\n    ↓\nEND: Comprehensive, rigorous project ready to execute\n```\n\n**Estimated Time:**\n- **Intensive:** 1 week of focused work (full-time)\n- **Distributed:** 4-6 weeks with other commitments\n- **With iterations:** Add 50% more time\n\n**You'll invest time once to save years of potential missteps.**\n\n## Phase-by-Phase Workflow\n\n### Phase 1: Preparation (Before Starting)\n\n**Gather Your Context:**\n1. **Your background:**\n   - Research area/field\n   - Current position (grad student, postdoc, PI, etc.)\n   - Lab expertise and resources\n   - Timeline constraints\n\n2. **Your starting point:**\n   - Vague area of interest?\n   - Specific problem in mind?\n   - Must build on existing work?\n   - Starting completely fresh?\n\n3. **Your goals:**\n   - Publication target (journal tier, timeline)?\n   - Degree requirement (thesis chapter)?\n   - Funding application?\n   - Startup foundation?\n   - Career development?\n\n**Set Expectations:**\n- This process will challenge your assumptions\n- You may discover your initial idea needs major revision\n- That's the point—better to know now than after 2 years\n- Intellectual honesty is required; this only works if you're rigorous\n\n### Phase 2: Ideation (Skill 1) - ~1 week\n\n**What We'll Do:**\n1. Understand your context and constraints\n2. Work through relevant intuition pumps\n3. Avoid common ideation traps\n4. Generate 2-3 project ideas\n5. Preliminary literature search to calibrate scope\n6. Select most promising idea\n7. Create Problem Ideation Document (2 pages)\n\n**Literature Integration Point 1:**\n- Search PubMed for precedents and adjacent work\n- Assess generality of problem\n- Identify methodological advances\n- Determine competition level\n\n**Deliverable:**\n- Problem Ideation Document with core idea and initial analysis\n- List of 10-15 key papers\n- Preliminary assessment of novelty and feasibility\n\n**Checkpoint:** Do you have a clear, specific idea that excites you? If not, iterate on intuition pumps.\n\n### Phase 3: Risk Analysis (Skill 2) - ~3-5 days\n\n**What We'll Do:**\n1. Extract ALL assumptions from your idea\n2. Categorize (biological vs. technical)\n3. Score each assumption (risk 1-5, time to test)\n4. Identify high-risk late-reading assumptions\n5. Design go/no-go experiments\n6. Develop mitigation strategies\n7. Create Risk Assessment Matrix (2 pages)\n\n**Literature Integration Point 2:**\n- Search for technical precedents (has method worked before?)\n- Find biological evidence (what's known about your system?)\n- Identify benchmarks (success rates, effect sizes)\n- Assess timeline realism\n\n**Deliverable:**\n- Complete assumption analysis table\n- Top 3 high-risk assumptions with mitigation plans\n- Go/no-go experiment designs\n- Revised timeline with decision points\n\n**Checkpoint:** Is your risk profile acceptable? If risk-5 assumptions are >2 years out, return to Skill 1 to reframe.\n\n### Phase 4: Impact Assessment (Skill 3) - ~2-3 days\n\n**What We'll Do:**\n1. Categorize your project type\n2. Select appropriate optimization function\n3. Score yourself on both axes\n4. Compare to benchmarks\n5. Articulate value system alignment\n6. Develop communication strategy\n7. Create Impact Assessment Document (2 pages)\n\n**Literature Integration Point 3:**\n- Identify high-impact exemplars in your field\n- Analyze their framing and evaluation\n- Benchmark your potential impact\n- Understand field expectations\n\n**Deliverable:**\n- Clear optimization function selection\n- Self-assessment on both axes with justification\n- Comparative analysis vs. alternatives\n- Communication strategy for different audiences\n\n**Checkpoint:** Do you score MEDIUM-HIGH on at least one axis? If not, return to Skill 1 to find higher-impact angle.\n\n### Phase 5: Parameter Strategy (Skill 4) - ~2-3 days\n\n**What We'll Do:**\n1. Inventory all project parameters\n2. Identify which are fixed vs. floating\n3. Assess if you're over/under-constrained\n4. Select strategic fixed parameter\n5. Plan flexibility for contingencies\n6. Create Parameter Strategy Document (2 pages)\n\n**Literature Integration Point 4:**\n- How did successful projects handle parameters?\n- What parameter choices led to breakthroughs?\n- What over-constraints caused failures?\n\n**Deliverable:**\n- Complete parameter inventory\n- Strategic rationale for fixed/floating decisions\n- Flexibility matrix for contingencies\n- Project ensemble (family of related projects)\n\n**Checkpoint:** Have you fixed 1-2 meaningful parameters while maintaining flexibility? If too rigid, adjust.\n\n### Phase 6: Decision Tree Planning (Skill 5) - ~2 days\n\n**What We'll Do:**\n1. Map your project's decision tree\n2. Identify major branch points\n3. Set criteria for each decision\n4. Establish Level 1 / Level 2 rhythm\n5. Create protocols for getting unstuck\n6. Create Decision Tree Map (1-2 pages)\n\n**No major literature search here** (unless you identify specific decision points needing technical information)\n\n**Deliverable:**\n- Visual decision tree\n- Decision criteria at each branch\n- Schedule for Level 2 evaluations\n- Protocol for course correction\n\n**Checkpoint:** Have you planned for regular strategic evaluation, not just execution?\n\n### Phase 7: Adversity Preparation (Skill 6) - ~2 days\n\n**What We'll Do:**\n1. Anticipate likely failure modes\n2. For each, identify upgrade opportunity\n3. Map your project ensemble\n4. Create crisis response protocols\n5. Create Adversity Playbook (2-3 pages)\n\n**Literature Integration Point 5:**\n- Historical examples of productive pivots\n- How did others capitalize on adversity?\n- What second-generation projects emerged from failures?\n\n**Deliverable:**\n- Anticipated crisis catalog\n- Upgrade strategies for each\n- Project ensemble map\n- Resilience rituals and protocols\n\n**Checkpoint:** Are you prepared to see adversity as opportunity? Have you planned how to upgrade, not just fix?\n\n### Phase 8: Problem Inversion Toolkit (Skill 7) - ~1 day\n\n**What We'll Do:**\n1. Review three inversion strategies\n2. Pre-plan applications for your likely obstacles\n3. Create Problem Inversion Analysis (1-2 pages)\n\n**This is preparatory** - you may not need it now, but when crisis hits, you'll have framework ready.\n\n**Deliverable:**\n- Strategy 1 application planned\n- Strategy 2 options identified\n- Strategy 3 alternative questions brainstormed\n- Quick-reference guide for crisis\n\n**Checkpoint:** Do you have concrete strategies for inverting problems when stuck?\n\n### Phase 9: Integration and Synthesis (Skill 8) - ~3-5 days\n\n**What We'll Do:**\n1. Review all outputs from Skills 1-7\n2. Create cohesive narrative\n3. Develop communication materials:\n   - 3-slide presentation\n   - 1-page summary\n   - 1-minute elevator pitch\n4. Write integrated project plan (4-6 pages)\n5. Create living documents for ongoing use\n\n**Literature Integration Point 6:**\n- Final references for integrated plan\n- Key papers for each section\n- Communication examples from field leaders\n\n**Deliverable:**\n- Complete Integrated Project Plan (4-6 pages)\n- 3-slide presentation deck\n- 1-page written summary\n- Elevator pitch script\n- Living documents (decision tree, risk matrix, etc.)\n\n**Checkpoint:** Can you communicate your project compellingly in 1 minute, 5 minutes, and 1 page? Do all pieces fit together coherently?\n\n## Iteration and Refinement\n\n### When to Iterate\n\n**Red Flags That Require Going Back:**\n\n**From Skill 2 (Risk):**\n- Risk-5 assumptions >2 years out → Return to Skill 1 (reframe problem)\n- >3 risk-4-5 assumptions → Return to Skill 1 (simplify or change approach)\n\n**From Skill 3 (Impact):**\n- Score LOW on both axes → Return to Skill 1 (find higher-impact angle)\n- Optimization function mismatch → Return to Skill 1 (reframe problem)\n\n**From Skill 4 (Parameters):**\n- >2 fixed parameters → Return to Skill 1 (over-constrained)\n- Zero fixed parameters → Return to Skill 1 (under-constrained)\n\n**From Skills 5-6:**\n- No clear decision points → Return to Skill 4 (need more flexibility)\n- Every failure mode is existential → Return to Skill 2 (too risky)\n\n### Iteration Protocol\n\n**Major Revision Needed:**\n1. **Pause and acknowledge:** The process is working—it caught a problem\n2. **Return to indicated skill:** Usually Skill 1 or 2\n3. **Bring forward what you learned:** Don't start from scratch\n4. **Revised idea → Run through workflow again:** Faster the second time\n5. **Multiple iterations OK:** Better than years on wrong project\n\n**Minor Refinement:**\n1. **Update specific document:** E.g., adjust parameter strategy\n2. **Check downstream effects:** Does this change anything else?\n3. **Update integration document:** Keep everything coherent\n\n## Literature Integration Strategy\n\n### Overall PubMed Approach\n\n**Throughout the workflow, use PubMed strategically:**\n\n1. **Skill 1 (Ideation):** Assess generality, find precedents, gauge competition\n2. **Skill 2 (Risk):** Technical feasibility, biological evidence, benchmarks\n3. **Skill 3 (Impact):** Field exemplars, evaluation frameworks, benchmarks\n4. **Skill 4 (Parameters):** Successful parameter choices, cautionary tales\n5. **Skill 6 (Adversity):** Productive pivots, upgrade examples\n6. **Skill 8 (Integration):** Communication models, comprehensive references\n\n**Search Strategy:**\n- Start broad (field overview)\n- Get specific (your exact approach)\n- Look adjacent (related systems/methods)\n- Find benchmarks (what's state-of-art?)\n- Identify competition (who else is doing this?)\n\n**Papers to Track:**\n- ~10-15 key papers from Skill 1\n- ~5-10 technical papers from Skill 2\n- ~5-10 impact exemplars from Skill 3\n- ~5 parameter lessons from Skill 4\n- ~3-5 pivot examples from Skill 6\n- **Total: ~30-50 papers** (your foundation)\n\n## Final Deliverable Package\n\n### What You'll Have at the End\n\n**Core Documents (Organized Folder):**\n1. `01_Problem_Ideation.pdf` (2 pages, Skill 1)\n2. `02_Risk_Assessment.pdf` (2 pages, Skill 2)\n3. `03_Impact_Assessment.pdf` (2 pages, Skill 3)\n4. `04_Parameter_Strategy.pdf` (2 pages, Skill 4)\n5. `05_Decision_Tree.pdf` (1-2 pages, Skill 5)\n6. `06_Adversity_Playbook.pdf` (2-3 pages, Skill 6)\n7. `07_Problem_Inversion.pdf` (1-2 pages, Skill 7)\n8. `08_Integrated_Plan.pdf` (4-6 pages, Skill 8)\n\n**Communication Materials:**\n- `Presentation_3slides.pptx`\n- `Summary_1page.pdf`\n- `Elevator_Pitch.txt`\n\n**Living Documents (for ongoing use):**\n- `Decision_Tree.pdf` (update monthly)\n- `Risk_Matrix.xlsx` (update quarterly)\n- `Adversity_Playbook.pdf` (consult in crisis)\n- `Parameter_Strategy.pdf` (revisit if stuck)\n\n**Reference Library:**\n- `Key_Papers.pdf` (annotated bibliography, 30-50 papers)\n- Organized by: Ideation / Technical / Impact / Pivots\n\n**Total: ~20-25 pages of documentation + supporting materials**\n\n## Using Your Outputs\n\n### For Different Purposes\n\n**Grant/Fellowship Applications:**\n- Start with Integrated Plan (Skill 8)\n- Include specific aims from Ideation (Skill 1)\n- Show risk mitigation from Risk Assessment (Skill 2)\n- Demonstrate impact from Impact Assessment (Skill 3)\n- Timeline from Decision Tree (Skill 5)\n\n**Thesis Committee Meetings:**\n- Present 3-slide deck (Skill 8)\n- Walk through decision tree (Skill 5)\n- Discuss risk mitigation (Skill 2)\n- Show parameter flexibility (Skill 4)\n- Demonstrate thoughtful planning\n\n**Lab Meetings:**\n- Use elevator pitch (Skill 8)\n- Show decision tree updates (Skill 5)\n- Discuss latest adversity and response (Skill 6)\n- Get input on parameter strategy (Skill 4)\n\n**Collaborator Conversations:**\n- Share 1-page summary (Skill 8)\n- Highlight where their expertise fits (Skill 4)\n- Show risk mitigation plan (Skill 2)\n- Discuss impact potential (Skill 3)\n\n**Personal Reflection:**\n- Quarterly: Review Decision Tree (Skill 5), update milestones\n- After setbacks: Consult Adversity Playbook (Skill 6)\n- When stuck: Use Problem Inversion (Skill 7)\n- Annual: Full workflow review, consider new projects\n\n## Maintenance and Updates\n\n### Living Documents Protocol\n\n**Monthly:**\n- Update Decision Tree (Skill 5)\n- Log adversities and responses (Skill 6)\n- Note new papers or competition\n- Adjust timeline if needed\n\n**Quarterly:**\n- Review Risk Matrix (Skill 2) - mark assumptions tested\n- Reassess Impact (Skill 3) - has evaluation changed?\n- Check Parameter Strategy (Skill 4) - still optimal?\n- Update Integrated Plan (Skill 8) - keep current\n\n**Annually:**\n- Complete workflow review\n- Consider new projects with fresh Skill 1 ideation\n- Archive old project docs\n- Extract lessons learned\n\n## Success Metrics\n\n### How Do You Know This Worked?\n\n**Immediate Indicators:**\n- Clearer project vision than before\n- Honest assessment of risks\n- Contingency plans for failures\n- Compelling communication materials\n- Alignment between project and values\n- Confidence in problem choice\n\n**6-Month Indicators:**\n- Major decisions made faster (have framework)\n- Adversity handled productively (used playbook)\n- No existential crises (risks were mitigated)\n- Regular Level 2 evaluation happening\n- Project staying on-track or pivoting smartly\n\n**2-Year Indicators:**\n- Published results or strong progress\n- Avoided dead-end projects\n- Multiple high-quality options at decision points\n- Skills developed as planned\n- Career trajectory aligned with goals\n- Time well-spent (the ultimate measure)\n\n## Key Principles of the Meta-Framework\n\n1. **Systematic > Ad Hoc:** Process ensures nothing forgotten\n2. **Iterative > Linear:** Expect to loop back, that's good\n3. **Documented > Mental:** Writing forces clarity\n4. **Integrated > Fragmented:** All skills connect\n5. **Living > Static:** Update as you learn\n6. **Thoughtful > Fast:** Time invested now saves years later\n7. **Honest > Optimistic:** Rigor protects against wishful thinking\n8. **Prepared > Surprised:** Anticipate adversity\n9. **Flexible > Rigid:** Parameters float when needed\n10. **Passionate > Obligatory:** Alignment matters\n\n## Getting Started\n\n### First Steps\n\n**This Week:**\n1. Block time in calendar (1-2 hours to start)\n2. Gather your context (background, goals, constraints)\n3. Begin Skill 1 (Intuition Pumps)\n4. Let me know your starting point\n\n**This Month:**\n1. Work through Skills 1-4 (foundation)\n2. Share with mentor for alignment check\n3. Iterate if major changes needed\n4. Complete Skills 5-8 (execution planning)\n\n**This Quarter:**\n1. Begin project execution with living documents\n2. Monthly decision tree updates\n3. Quarterly risk assessment reviews\n4. Log adversities and responses\n\n**This Year:**\n1. Execute planned project\n2. Use frameworks when stuck\n3. Update living documents\n4. Evaluate process and refine\n\n## Ready to Begin?\n\nThe complete meta-framework is substantial, but each step builds on the last. You'll move through:\n- ~2 weeks of intensive planning\n- Comprehensive documentation\n- Clear decision criteria\n- Communication materials\n- Living documents for ongoing guidance\n\n**Most importantly:** You'll KNOW you're working on a well-chosen problem with rigorous planning. That confidence is priceless.\n\nLet's start with Skill 1. Are you ready to begin?\n\n---\n\n*Remember: The highest-leverage work in science is choosing the right problem. This meta-framework ensures you spend your finite time wisely. The investment in systematic planning pays dividends for years.*\n\n","bio-research/skills/scvi-tools/SKILL.md":"---\nname: scvi-tools\ndescription: Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI, (2) ATAC-seq analysis with PeakVI, (3) CITE-seq multi-modal analysis with totalVI, (4) multiome RNA+ATAC analysis with MultiVI, (5) spatial transcriptomics deconvolution with DestVI, (6) label transfer and reference mapping with scANVI/scArches, (7) RNA velocity with veloVI, or (8) any deep learning-based single-cell method. Triggers include mentions of scVI, scANVI, totalVI, PeakVI, MultiVI, DestVI, veloVI, sysVI, scArches, variational autoencoder, VAE, batch correction, data integration, multi-modal, CITE-seq, multiome, reference mapping, latent space.\n---\n\n# scvi-tools Deep Learning Skill\n\nThis skill provides guidance for deep learning-based single-cell analysis using scvi-tools, the leading framework for probabilistic models in single-cell genomics.\n\n## How to Use This Skill\n\n1. Identify the appropriate workflow from the model/workflow tables below\n2. Read the corresponding reference file for detailed steps and code\n3. Use scripts in `scripts/` to avoid rewriting common code\n4. For installation or GPU issues, consult `references/environment_setup.md`\n5. For debugging, consult `references/troubleshooting.md`\n\n## When to Use This Skill\n\n- When scvi-tools, scVI, scANVI, or related models are mentioned\n- When deep learning-based batch correction or integration is needed\n- When working with multi-modal data (CITE-seq, multiome)\n- When reference mapping or label transfer is required\n- When analyzing ATAC-seq or spatial transcriptomics data\n- When learning latent representations of single-cell data\n\n## Model Selection Guide\n\n| Data Type | Model | Primary Use Case |\n|-----------|-------|------------------|\n| scRNA-seq | **scVI** | Unsupervised integration, DE, imputation |\n| scRNA-seq + labels | **scANVI** | Label transfer, semi-supervised integration |\n| CITE-seq (RNA+protein) | **totalVI** | Multi-modal integration, protein denoising |\n| scATAC-seq | **PeakVI** | Chromatin accessibility analysis |\n| Multiome (RNA+ATAC) | **MultiVI** | Joint modality analysis |\n| Spatial + scRNA reference | **DestVI** | Cell type deconvolution |\n| RNA velocity | **veloVI** | Transcriptional dynamics |\n| Cross-technology | **sysVI** | System-level batch correction |\n\n## Workflow Reference Files\n\n| Workflow | Reference File | Description |\n|----------|---------------|-------------|\n| Environment Setup | `references/environment_setup.md` | Installation, GPU, version info |\n| Data Preparation | `references/data_preparation.md` | Formatting data for any model |\n| scRNA Integration | `references/scrna_integration.md` | scVI/scANVI batch correction |\n| ATAC-seq Analysis | `references/atac_peakvi.md` | PeakVI for accessibility |\n| CITE-seq Analysis | `references/citeseq_totalvi.md` | totalVI for protein+RNA |\n| Multiome Analysis | `references/multiome_multivi.md` | MultiVI for RNA+ATAC |\n| Spatial Deconvolution | `references/spatial_deconvolution.md` | DestVI spatial analysis |\n| Label Transfer | `references/label_transfer.md` | scANVI reference mapping |\n| scArches Mapping | `references/scarches_mapping.md` | Query-to-reference mapping |\n| Batch Correction | `references/batch_correction_sysvi.md` | Advanced batch methods |\n| RNA Velocity | `references/rna_velocity_velovi.md` | veloVI dynamics |\n| Troubleshooting | `references/troubleshooting.md` | Common issues and solutions |\n\n## CLI Scripts\n\nModular scripts for common workflows. Chain together or modify as needed.\n\n### Pipeline Scripts\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `prepare_data.py` | QC, filter, HVG selection | `python scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch` |\n| `train_model.py` | Train any scvi-tools model | `python scripts/train_model.py prepared.h5ad results/ --model scvi` |\n| `cluster_embed.py` | Neighbors, UMAP, Leiden | `python scripts/cluster_embed.py adata.h5ad results/` |\n| `differential_expression.py` | DE analysis | `python scripts/differential_expression.py model/ adata.h5ad de.csv --groupby leiden` |\n| `transfer_labels.py` | Label transfer with scANVI | `python scripts/transfer_labels.py ref_model/ query.h5ad results/` |\n| `integrate_datasets.py` | Multi-dataset integration | `python scripts/integrate_datasets.py results/ data1.h5ad data2.h5ad` |\n| `validate_adata.py` | Check data compatibility | `python scripts/validate_adata.py data.h5ad --batch-key batch` |\n\n### Example Workflow\n\n```bash\n# 1. Validate input data\npython scripts/validate_adata.py raw.h5ad --batch-key batch --suggest\n\n# 2. Prepare data (QC, HVG selection)\npython scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch --n-hvgs 2000\n\n# 3. Train model\npython scripts/train_model.py prepared.h5ad results/ --model scvi --batch-key batch\n\n# 4. Cluster and visualize\npython scripts/cluster_embed.py results/adata_trained.h5ad results/ --resolution 0.8\n\n# 5. Differential expression\npython scripts/differential_expression.py results/model results/adata_clustered.h5ad results/de.csv --groupby leiden\n```\n\n### Python Utilities\n\nThe `scripts/model_utils.py` provides importable functions for custom workflows:\n\n| Function | Purpose |\n|----------|---------|\n| `prepare_adata()` | Data preparation (QC, HVG, layer setup) |\n| `train_scvi()` | Train scVI or scANVI |\n| `evaluate_integration()` | Compute integration metrics |\n| `get_marker_genes()` | Extract DE markers |\n| `save_results()` | Save model, data, plots |\n| `auto_select_model()` | Suggest best model |\n| `quick_clustering()` | Neighbors + UMAP + Leiden |\n\n## Critical Requirements\n\n1. **Raw counts required**: scvi-tools models require integer count data\n   ```python\n   adata.layers[\"counts\"] = adata.X.copy()  # Before normalization\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n   ```\n\n2. **HVG selection**: Use 2000-4000 highly variable genes\n   ```python\n   sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key=\"batch\", layer=\"counts\", flavor=\"seurat_v3\")\n   adata = adata[:, adata.var['highly_variable']].copy()\n   ```\n\n3. **Batch information**: Specify batch_key for integration\n   ```python\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n   ```\n\n## Quick Decision Tree\n\n```\nNeed to integrate scRNA-seq data?\n├── Have cell type labels? → scANVI (references/label_transfer.md)\n└── No labels? → scVI (references/scrna_integration.md)\n\nHave multi-modal data?\n├── CITE-seq (RNA + protein)? → totalVI (references/citeseq_totalvi.md)\n├── Multiome (RNA + ATAC)? → MultiVI (references/multiome_multivi.md)\n└── scATAC-seq only? → PeakVI (references/atac_peakvi.md)\n\nHave spatial data?\n└── Need cell type deconvolution? → DestVI (references/spatial_deconvolution.md)\n\nHave pre-trained reference model?\n└── Map query to reference? → scArches (references/scarches_mapping.md)\n\nNeed RNA velocity?\n└── veloVI (references/rna_velocity_velovi.md)\n\nStrong cross-technology batch effects?\n└── sysVI (references/batch_correction_sysvi.md)\n```\n\n## Key Resources\n\n- [scvi-tools Documentation](https://docs.scvi-tools.org/)\n- [scvi-tools Tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n- [Model Hub](https://huggingface.co/scvi-tools)\n- [GitHub Issues](https://github.com/scverse/scvi-tools/issues)\n","bio-research/skills/scvi-tools/references/atac_peakvi.md":"# scATAC-seq Analysis with PeakVI\n\nThis reference covers single-cell ATAC-seq analysis using PeakVI for dimensionality reduction, batch correction, and differential accessibility.\n\n## Overview\n\nPeakVI is a deep generative model for scATAC-seq data that:\n- Models binary accessibility (peak open/closed)\n- Handles batch effects\n- Provides latent representation for clustering\n- Enables differential accessibility analysis\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\nimport anndata as ad\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load and Prepare ATAC Data\n\n### From 10x Genomics (Cell Ranger ATAC)\n\n```python\n# Peak-cell matrix from fragments\n# Usually in filtered_peak_bc_matrix format\n\nadata = sc.read_10x_h5(\"filtered_peak_bc_matrix.h5\")\n\n# Or from mtx format\nadata = sc.read_10x_mtx(\"filtered_peak_bc_matrix/\")\n\n# Check structure\nprint(f\"Cells: {adata.n_obs}, Peaks: {adata.n_vars}\")\nprint(f\"Sparsity: {1 - adata.X.nnz / (adata.n_obs * adata.n_vars):.2%}\")\n```\n\n### From ArchR/Signac\n\n```python\n# Export from ArchR (in R)\n# saveArchRProject(proj, outputDirectory=\"atac_export\", load=FALSE)\n# Then read the exported files in Python\n\n# From Signac:\n# Export peak matrix and metadata\n```\n\n## Step 2: Quality Control\n\n```python\n# Calculate QC metrics\nsc.pp.calculate_qc_metrics(adata, inplace=True)\n\n# Key metrics for ATAC:\n# - n_genes_by_counts: peaks per cell (should rename)\n# - total_counts: fragments per cell\nadata.obs['n_peaks'] = adata.obs['n_genes_by_counts']\nadata.obs['total_fragments'] = adata.obs['total_counts']\n\n# Filter cells\nadata = adata[adata.obs['n_peaks'] > 500].copy()\nadata = adata[adata.obs['n_peaks'] < 50000].copy()  # Remove potential doublets\n\n# Filter peaks (accessible in at least n cells)\nsc.pp.filter_genes(adata, min_cells=10)\n\nprint(f\"After QC: {adata.shape}\")\n```\n\n### Binarize Data\n\n```python\n# PeakVI works with binary accessibility\n# Binarize if not already binary\nadata.X = (adata.X > 0).astype(np.float32)\n\n# Verify\nprint(f\"Unique values: {np.unique(adata.X.data)}\")\n```\n\n## Step 3: Feature Selection\n\nUnlike RNA-seq, peak selection for ATAC is less established. Options:\n\n### Option A: Most Accessible Peaks\n\n```python\n# Select top peaks by accessibility frequency\npeak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\ntop_peaks = np.argsort(peak_accessibility)[-50000:]  # Top 50k peaks\n\nadata = adata[:, top_peaks].copy()\n```\n\n### Option B: Variable Peaks\n\n```python\n# Select peaks with high variance\n# (Most informative for clustering)\nfrom sklearn.feature_selection import VarianceThreshold\n\nselector = VarianceThreshold(threshold=0.05)\nselector.fit(adata.X)\nadata = adata[:, selector.get_support()].copy()\n```\n\n### Option C: Peaks Near Genes\n\n```python\n# Keep peaks within promoter regions or gene bodies\n# Requires peak annotation\n# gene_peaks = peaks with gene annotation\n# adata = adata[:, adata.var['near_gene']].copy()\n```\n\n## Step 4: Add Batch Information\n\n```python\n# Add batch annotation if multiple samples\nadata.obs['batch'] = adata.obs['sample_id']  # Or appropriate column\n\nprint(adata.obs['batch'].value_counts())\n```\n\n## Step 5: Setup and Train PeakVI\n\n```python\n# Setup AnnData\nscvi.model.PEAKVI.setup_anndata(\n    adata,\n    batch_key=\"batch\"  # Optional, omit for single batch\n)\n\n# Create model\nmodel = scvi.model.PEAKVI(\n    adata,\n    n_latent=20,      # Latent dimensions\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Latent Representation\n\n```python\n# Latent space for downstream analysis\nadata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_PeakVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Differential Accessibility\n\n```python\n# Differential accessibility between clusters\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n\n# Filter significant peaks\nda_sig = da_results[\n    (da_results['is_da_fdr_0.05']) &\n    (abs(da_results['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DA peaks: {len(da_sig)}\")\nprint(da_sig.head())\n```\n\n### DA Between Conditions\n\n```python\n# Compare conditions within cell type\nadata_subset = adata[adata.obs['cell_type'] == 'CD4 T cells'].copy()\n\nda_condition = model.differential_accessibility(\n    groupby='condition',\n    group1='treated',\n    group2='control'\n)\n```\n\n## Step 8: Peak Annotation\n\n```python\n# Annotate peaks with nearest genes\n# Using pybedtools or similar\n\n# Example peak name format: chr1:1000-2000\n# Parse into bed format for annotation\n\nimport pandas as pd\n\ndef parse_peak_names(peak_names):\n    \"\"\"Parse peak names into bed format.\"\"\"\n    records = []\n    for peak in peak_names:\n        chrom, coords = peak.split(':')\n        start, end = coords.split('-')\n        records.append({\n            'chrom': chrom,\n            'start': int(start),\n            'end': int(end),\n            'peak': peak\n        })\n    return pd.DataFrame(records)\n\npeak_bed = parse_peak_names(adata.var_names)\n```\n\n## Step 9: Motif Analysis\n\n```python\n# Export significant peaks for motif analysis\n# Use HOMER, MEME, or chromVAR\n\n# Export peak sequences\nsig_peaks = da_sig.index.tolist()\npeak_bed_sig = peak_bed[peak_bed['peak'].isin(sig_peaks)]\npeak_bed_sig.to_csv(\"significant_peaks.bed\", sep='\\t', index=False, header=False)\n\n# Then run HOMER:\n# findMotifsGenome.pl significant_peaks.bed hg38 motif_output/ -size 200\n```\n\n## Step 10: Gene Activity Scores\n\n```python\n# Compute gene activity from peak accessibility\n# (Requires peak-gene annotations)\n\ndef compute_gene_activity(adata, peak_gene_map):\n    \"\"\"\n    Compute gene activity scores from peak accessibility.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        ATAC data with peaks\n    peak_gene_map : dict\n        Mapping of peaks to genes\n        \n    Returns\n    -------\n    AnnData with gene activity scores\n    \"\"\"\n    from scipy.sparse import csr_matrix\n    \n    genes = list(set(peak_gene_map.values()))\n    gene_matrix = np.zeros((adata.n_obs, len(genes)))\n    \n    for i, gene in enumerate(genes):\n        gene_peaks = [p for p, g in peak_gene_map.items() if g == gene]\n        if gene_peaks:\n            peak_idx = [list(adata.var_names).index(p) for p in gene_peaks if p in adata.var_names]\n            if peak_idx:\n                gene_matrix[:, i] = np.array(adata.X[:, peak_idx].sum(axis=1)).flatten()\n    \n    adata_gene = ad.AnnData(\n        X=csr_matrix(gene_matrix),\n        obs=adata.obs.copy(),\n        var=pd.DataFrame(index=genes)\n    )\n    \n    return adata_gene\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_scatac(\n    adata,\n    batch_key=None,\n    n_top_peaks=50000,\n    n_latent=20,\n    resolution=0.5\n):\n    \"\"\"\n    Complete scATAC-seq analysis with PeakVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Raw peak-cell matrix\n    batch_key : str, optional\n        Batch annotation column\n    n_top_peaks : int\n        Number of top peaks to use\n    n_latent : int\n        Latent dimensions\n    resolution : float\n        Leiden clustering resolution\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import numpy as np\n    \n    adata = adata.copy()\n    \n    # QC\n    sc.pp.calculate_qc_metrics(adata, inplace=True)\n    adata = adata[adata.obs['n_genes_by_counts'] > 500].copy()\n    sc.pp.filter_genes(adata, min_cells=10)\n    \n    # Binarize\n    adata.X = (adata.X > 0).astype(np.float32)\n    \n    # Select top peaks\n    if adata.n_vars > n_top_peaks:\n        peak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\n        top_peaks = np.argsort(peak_accessibility)[-n_top_peaks:]\n        adata = adata[:, top_peaks].copy()\n    \n    # Setup PeakVI\n    scvi.model.PEAKVI.setup_anndata(adata, batch_key=batch_key)\n    \n    # Train\n    model = scvi.model.PEAKVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Latent representation\n    adata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_PeakVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata, resolution=resolution)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_scatac(\n    adata,\n    batch_key=\"sample\",\n    n_top_peaks=50000\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'sample'])\n\n# Differential accessibility\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n```\n\n## Integration with scRNA-seq\n\nFor multiome data or separate RNA/ATAC from same cells:\n\n```python\n# See MultiVI for joint RNA+ATAC analysis\n# Or use WNN (weighted nearest neighbors) approach\n\n# Transfer labels from RNA to ATAC using shared latent space\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Training slow | Too many peaks | Subset to top 50k peaks |\n| Poor clustering | Too few informative peaks | Use variable peaks |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n| Memory error | Large peak matrix | Use sparse format, reduce peaks |\n\n## Key References\n\n- Ashuach et al. (2022) \"PeakVI: A deep generative model for single-cell chromatin accessibility analysis\"\n","bio-research/skills/scvi-tools/references/batch_correction_sysvi.md":"# Advanced Batch Correction with sysVI\n\nThis reference covers system-level batch correction using sysVI, designed for integrating data across major technological or study differences.\n\n## Overview\n\nsysVI (System Variational Inference) extends scVI for scenarios where:\n- Batch effects are very strong (different technologies)\n- Standard scVI over-corrects biological signal\n- You need to separate \"system\" effects from biological variation\n\n## When to Use sysVI vs scVI\n\n| Scenario | Recommended Model |\n|----------|-------------------|\n| Same technology, different samples | scVI |\n| 10x v2 vs 10x v3 | scVI (usually) |\n| 10x vs Smart-seq2 | sysVI |\n| Different sequencing depths | scVI with covariates |\n| Cross-study integration | sysVI |\n| Atlas-scale integration | sysVI |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Understanding sysVI Architecture\n\nsysVI separates variation into:\n1. **Biological variation**: Cell type, state, trajectory\n2. **System variation**: Technology, study, lab effects\n\n```\n                    ┌─────────────────┐\nInput counts ──────►│    Encoder      │\n                    │                 │\nSystem info ───────►│  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\n                    │   Latent z      │\n                    │  (biological)   │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\nSystem info ───────►│    Decoder      │\n                    │  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    Reconstructed counts\n```\n\n## Basic sysVI Workflow\n\n### Step 1: Prepare Data\n\n```python\n# Load datasets from different systems\nadata1 = sc.read_h5ad(\"10x_data.h5ad\")\nadata2 = sc.read_h5ad(\"smartseq_data.h5ad\")\n\n# Add system labels\nadata1.obs[\"system\"] = \"10x\"\nadata2.obs[\"system\"] = \"Smart-seq2\"\n\n# Add batch labels (within system)\n# e.g., different samples within each technology\n\n# Concatenate\nadata = sc.concat([adata1, adata2])\n\n# Store raw counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection\n\n```python\n# Select HVGs considering both batch and system\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # More genes for cross-system\n    flavor=\"seurat_v3\",\n    batch_key=\"system\",  # Consider system for HVG\n    layer=\"counts\"\n)\n\n# Optionally: ensure overlap between systems\n# Check HVGs are expressed in both systems\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train sysVI\n\n```python\n# Setup AnnData\n# Note: sysVI may be accessed differently depending on version\n# Check scvi-tools documentation for current API\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",           # Within-system batches\n    categorical_covariate_keys=[\"system\"]  # System-level covariate\n)\n\n# For true sysVI (if available in your version)\n# scvi.model.SysVI.setup_anndata(...)\n\n# Create model with system awareness\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,\n    n_layers=2,\n    gene_likelihood=\"nb\"\n)\n\n# Train\nmodel.train(max_epochs=300)\n```\n\n### Step 4: Extract Representations\n\n```python\n# Get latent representation\nadata.obsm[\"X_integrated\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_integrated\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata)\n\n# Check integration\nsc.pl.umap(adata, color=[\"system\", \"leiden\", \"cell_type\"])\n```\n\n## Alternative: Harmony + scVI\n\nFor cross-system integration, combining methods can work well:\n\n```python\nimport scanpy.external as sce\n\n# First run PCA\nsc.pp.pca(adata)\n\n# Apply Harmony for initial alignment\nsce.pp.harmony_integrate(adata, key=\"system\")\n\n# Then train scVI on Harmony-corrected embedding\n# Or use Harmony representation directly\n```\n\n## Alternative: Using Covariates in scVI\n\nFor moderate system effects:\n\n```python\n# Include system as categorical covariate\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    categorical_covariate_keys=[\"system\", \"technology_version\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Alternative: Separate Models + Integration\n\nFor very different systems:\n\n```python\n# Train separate models\nscvi.model.SCVI.setup_anndata(adata1, layer=\"counts\", batch_key=\"sample\")\nmodel1 = scvi.model.SCVI(adata1)\nmodel1.train()\n\nscvi.model.SCVI.setup_anndata(adata2, layer=\"counts\", batch_key=\"sample\")\nmodel2 = scvi.model.SCVI(adata2)\nmodel2.train()\n\n# Get latent spaces\nadata1.obsm[\"X_scVI\"] = model1.get_latent_representation()\nadata2.obsm[\"X_scVI\"] = model2.get_latent_representation()\n\n# Align with CCA or Harmony\n# ... additional alignment step\n```\n\n## Evaluating Cross-System Integration\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Color by system\nsc.pl.umap(adata, color=\"system\", ax=axes[0], show=False, title=\"By System\")\n\n# Color by cell type\nsc.pl.umap(adata, color=\"cell_type\", ax=axes[1], show=False, title=\"By Cell Type\")\n\n# Color by expression of marker\nsc.pl.umap(adata, color=\"CD3D\", ax=axes[2], show=False, title=\"CD3D Expression\")\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics\n\n```python\n# Using scib-metrics\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"system\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_integrated\"]\n)\n\nbm.benchmark()\n\n# Key metrics:\n# - Batch mixing (ASW_batch, Graph connectivity)\n# - Bio conservation (NMI, ARI, ASW_label)\n```\n\n### LISI Scores\n\n```python\n# Local Inverse Simpson's Index\nfrom scib_metrics import lisi\n\n# Batch LISI (higher = better mixing)\nbatch_lisi = lisi.ilisi_graph(\n    adata,\n    batch_key=\"system\",\n    use_rep=\"X_integrated\"\n)\n\n# Cell type LISI (lower = better preservation)\nct_lisi = lisi.clisi_graph(\n    adata,\n    label_key=\"cell_type\", \n    use_rep=\"X_integrated\"\n)\n\nprint(f\"Batch LISI: {batch_lisi.mean():.3f}\")\nprint(f\"Cell type LISI: {ct_lisi.mean():.3f}\")\n```\n\n## Handling Specific Challenges\n\n### Different Gene Sets\n\n```python\n# Find common genes\ncommon_genes = adata1.var_names.intersection(adata2.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# If too few, use gene mapping\n# Or impute missing genes\n```\n\n### Different Sequencing Depths\n\n```python\n# Add depth as continuous covariate\nadata.obs[\"log_counts\"] = np.log1p(adata.obs[\"total_counts\"])\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    continuous_covariate_keys=[\"log_counts\"]\n)\n```\n\n### Unbalanced Cell Types\n\n```python\n# Check cell type distribution per system\nimport pandas as pd\n\nct_dist = pd.crosstab(adata.obs[\"system\"], adata.obs[\"cell_type\"], normalize=\"index\")\nprint(ct_dist)\n\n# If very unbalanced, consider:\n# 1. Subsample to balance\n# 2. Use scANVI with labels to preserve rare types\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_cross_system(\n    adatas: dict,\n    system_key: str = \"system\",\n    batch_key: str = \"batch\",\n    cell_type_key: str = \"cell_type\",\n    n_top_genes: int = 4000,\n    n_latent: int = 30\n):\n    \"\"\"\n    Integrate datasets from different technological systems.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {system_name: AnnData}\n    system_key : str\n        Key for system annotation\n    batch_key : str\n        Key for within-system batch\n    cell_type_key : str\n        Key for cell type labels (optional)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Integrated AnnData with model\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add system labels and concatenate\n    for system_name, adata in adatas.items():\n        adata.obs[system_key] = system_name\n    \n    adata = sc.concat(list(adatas.values()))\n    \n    # Find common genes\n    for name, ad in adatas.items():\n        if name == list(adatas.keys())[0]:\n            common_genes = set(ad.var_names)\n        else:\n            common_genes = common_genes.intersection(ad.var_names)\n    \n    adata = adata[:, list(common_genes)].copy()\n    print(f\"Common genes: {len(common_genes)}\")\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=system_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup with system as covariate\n    scvi.model.SCVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        batch_key=batch_key if batch_key in adata.obs else None,\n        categorical_covariate_keys=[system_key]\n    )\n    \n    # Train\n    model = scvi.model.SCVI(adata, n_latent=n_latent, n_layers=2)\n    model.train(max_epochs=300, early_stopping=True)\n    \n    # Get representation\n    adata.obsm[\"X_integrated\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_integrated\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"10x_v3\": sc.read_h5ad(\"10x_v3_data.h5ad\"),\n    \"Smart-seq2\": sc.read_h5ad(\"smartseq_data.h5ad\"),\n    \"Drop-seq\": sc.read_h5ad(\"dropseq_data.h5ad\")\n}\n\nadata_integrated, model = integrate_cross_system(adatas)\n\n# Visualize\nsc.pl.umap(adata_integrated, color=[\"system\", \"leiden\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Systems don't mix | Effects too strong | Use more genes, increase n_latent |\n| Over-correction | Model too aggressive | Reduce n_layers, use scANVI |\n| Few common genes | Different platforms | Use gene name mapping |\n| One system dominates | Unbalanced sizes | Subsample larger dataset |\n\n## Key References\n\n- Lopez et al. (2018) \"Deep generative modeling for single-cell transcriptomics\"\n- Luecken et al. (2022) \"Benchmarking atlas-level data integration in single-cell genomics\"\n","bio-research/skills/scvi-tools/references/citeseq_totalvi.md":"# CITE-seq Analysis with totalVI\n\nThis reference covers multi-modal analysis of CITE-seq data (RNA + surface proteins) using totalVI.\n\n## Overview\n\nCITE-seq combines:\n- scRNA-seq (transcriptome)\n- Protein surface markers (antibody-derived tags, ADT)\n\ntotalVI jointly models both modalities to:\n- Integrate across batches\n- Denoise protein signal\n- Learn joint latent representation\n- Enable cross-modal imputation\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\nimport pandas as pd\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load CITE-seq Data\n\n### From 10x Genomics (Cell Ranger)\n\n```python\n# 10x outputs separate gene expression and feature barcoding\nadata_rna = sc.read_10x_h5(\"filtered_feature_bc_matrix.h5\", gex_only=False)\n\n# Separate RNA and protein\nadata_protein = adata_rna[:, adata_rna.var['feature_types'] == 'Antibody Capture'].copy()\nadata_rna = adata_rna[:, adata_rna.var['feature_types'] == 'Gene Expression'].copy()\n\nprint(f\"RNA: {adata_rna.shape}\")\nprint(f\"Protein: {adata_protein.shape}\")\n```\n\n### From MuData\n\n```python\n# If data is in MuData format\nmdata = md.read_h5mu(\"cite_seq.h5mu\")\n\nadata_rna = mdata['rna'].copy()\nadata_protein = mdata['protein'].copy()\n```\n\n### Combine into Single AnnData\n\n```python\n# totalVI expects protein data in obsm\nadata = adata_rna.copy()\n\n# Add protein expression to obsm\nadata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n\n# Store protein names\nadata.uns[\"protein_names\"] = list(adata_protein.var_names)\n```\n\n## Step 2: Quality Control\n\n### RNA QC\n\n```python\n# Standard RNA QC\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n\n# Filter cells\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n```\n\n### Protein QC\n\n```python\n# Protein QC\nprotein_counts = adata.obsm[\"protein_expression\"]\nprint(f\"Protein counts per cell: min={protein_counts.sum(1).min():.0f}, max={protein_counts.sum(1).max():.0f}\")\n\n# Check for isotype controls\n# Isotype controls should have low counts\nprotein_names = adata.uns[\"protein_names\"]\nfor i, name in enumerate(protein_names):\n    if 'isotype' in name.lower() or 'control' in name.lower():\n        print(f\"{name}: mean={protein_counts[:, i].mean():.1f}\")\n```\n\n## Step 3: Data Preparation\n\n### Store Raw Counts\n\n```python\n# Store RNA counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Protein must be raw ADT counts (NOT CLR-normalized)\n# WARNING: If importing from Seurat, ensure you use raw counts, not CLR-normalized data\n# Seurat's NormalizeData(normalization.method = \"CLR\") transforms counts - use the original assay\n```\n\n### HVG Selection for RNA\n\n```python\n# Select HVGs for RNA\n# Note: totalVI uses all proteins regardless of HVG\n\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # Use more for CITE-seq\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata.obs else None,\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n## Step 4: Setup and Train totalVI\n\n```python\n# Setup AnnData for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    protein_expression_obsm_key=\"protein_expression\",\n    batch_key=\"batch\"  # Optional\n)\n\n# Create model\nmodel = scvi.model.TOTALVI(\n    adata,\n    n_latent=20,\n    latent_distribution=\"normal\"  # or \"ln\" for log-normal\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 5: Get Latent Representation\n\n```python\n# Joint latent space\nadata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_totalVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Step 6: Denoised Protein Expression\n\n```python\n# Get denoised protein values\n# This removes background noise from protein measurements\n\n_, protein_denoised = model.get_normalized_expression(\n    return_mean=True,\n    transform_batch=\"batch1\"  # Optional: normalize to specific batch\n)\n\n# Add to adata\nadata.obsm[\"protein_denoised\"] = protein_denoised\n\n# Visualize denoised proteins\nprotein_names = adata.uns[\"protein_names\"]\nfor i, protein in enumerate(protein_names[:5]):\n    adata.obs[f\"denoised_{protein}\"] = protein_denoised[:, i]\n\nsc.pl.umap(adata, color=[f\"denoised_{p}\" for p in protein_names[:5]])\n```\n\n## Step 7: Normalized RNA Expression\n\n```python\n# Get normalized RNA expression\nrna_normalized, _ = model.get_normalized_expression(\n    return_mean=True\n)\n\n# Store\nadata.layers[\"totalVI_normalized\"] = rna_normalized\n```\n\n## Step 8: Differential Expression\n\n### RNA Differential Expression\n\n```python\n# DE between clusters\nde_rna = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Filter significant genes\nde_sig = de_rna[\n    (de_rna['is_de_fdr_0.05']) &\n    (abs(de_rna['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DE genes: {len(de_sig)}\")\n```\n\n### Protein Differential Expression\n\n```python\n# Protein DE\nde_protein = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\",\n    mode=\"protein\"\n)\n\nprint(de_protein.head(20))\n```\n\n## Step 9: Visualization\n\n### Protein Expression on UMAP\n\n```python\n# Denoised protein on UMAP\nimport matplotlib.pyplot as plt\n\nproteins_to_plot = [\"CD3\", \"CD4\", \"CD8\", \"CD19\", \"CD14\"]\n\nfig, axes = plt.subplots(1, len(proteins_to_plot), figsize=(4*len(proteins_to_plot), 4))\nfor ax, protein in zip(axes, proteins_to_plot):\n    idx = adata.uns[\"protein_names\"].index(protein)\n    sc.pl.umap(\n        adata,\n        color=adata.obsm[\"protein_denoised\"][:, idx],\n        ax=ax,\n        title=protein,\n        show=False\n    )\nplt.tight_layout()\n```\n\n### Joint Heatmap\n\n```python\n# Heatmap of top genes and proteins per cluster\nsc.pl.dotplot(\n    adata,\n    var_names=de_sig.index[:20].tolist(),\n    groupby=\"leiden\",\n    layer=\"totalVI_normalized\"\n)\n```\n\n## Step 10: Cell Type Annotation\n\n```python\n# Use both RNA and protein markers for annotation\n\n# RNA markers\nrna_markers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'CD4 T': ['CD4'],\n    'CD8 T': ['CD8A', 'CD8B'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\n# Check denoised protein expression\nfor i, protein in enumerate(adata.uns[\"protein_names\"]):\n    if any(m in protein for m in ['CD3', 'CD4', 'CD8', 'CD19', 'CD14']):\n        print(f\"{protein}: cluster means\")\n        for cluster in adata.obs['leiden'].unique():\n            mask = adata.obs['leiden'] == cluster\n            mean_expr = adata.obsm[\"protein_denoised\"][mask, i].mean()\n            print(f\"  Cluster {cluster}: {mean_expr:.2f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=None,\n    n_top_genes=4000,\n    n_latent=20\n):\n    \"\"\"\n    Complete CITE-seq analysis with totalVI.\n    \n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA expression (raw counts)\n    adata_protein : AnnData\n        Protein expression (raw counts)\n    batch_key : str, optional\n        Batch column in obs\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Ensure same cells\n    common_cells = adata_rna.obs_names.intersection(adata_protein.obs_names)\n    adata = adata_rna[common_cells].copy()\n    adata_protein = adata_protein[common_cells].copy()\n    \n    # Add protein to obsm\n    adata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n    adata.uns[\"protein_names\"] = list(adata_protein.var_names)\n    \n    # RNA QC\n    # Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\n    sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n    adata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n    sc.pp.filter_genes(adata, min_cells=3)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup totalVI\n    scvi.model.TOTALVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        protein_expression_obsm_key=\"protein_expression\",\n        batch_key=batch_key\n    )\n    \n    # Train\n    model = scvi.model.TOTALVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Get representations\n    adata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n    rna_norm, protein_denoised = model.get_normalized_expression(return_mean=True)\n    adata.layers[\"totalVI_normalized\"] = rna_norm\n    adata.obsm[\"protein_denoised\"] = protein_denoised\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_totalVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=\"batch\"\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Protein signal noisy | Background not removed | Use get_normalized_expression with denoising |\n| Batch effects persist | Need batch_key | Ensure batch_key is specified |\n| Memory error | Too many genes | Reduce n_top_genes |\n| Poor protein clustering | Few proteins | Normal - totalVI uses RNA for structure |\n\n## Key References\n\n- Gayoso et al. (2021) \"Joint probabilistic modeling of single-cell multi-omic data with totalVI\"\n","bio-research/skills/scvi-tools/references/data_preparation.md":"# Data Preparation for scvi-tools\n\nThis reference covers how to properly prepare AnnData objects for use with scvi-tools models.\n\n## Overview\n\nProper data preparation is critical for scvi-tools. Key requirements:\n1. **Raw counts** (not normalized)\n2. **Highly variable gene selection**\n3. **Proper setup_anndata() call**\n\n## Step 1: Load and Inspect Data\n\n```python\nimport scanpy as sc\nimport scvi\nimport numpy as np\n\n# Load data\nadata = sc.read_h5ad(\"data.h5ad\")\n\n# Check what's in adata.X\nprint(f\"Shape: {adata.shape}\")\nprint(f\"X dtype: {adata.X.dtype}\")\nprint(f\"X contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\nprint(f\"X min: {adata.X.min()}, max: {adata.X.max()}\")\n```\n\n### Verify Raw Counts\n\n```python\n# scvi-tools needs INTEGER counts\n# If X appears normalized, check for raw counts\n\nif hasattr(adata, 'raw') and adata.raw is not None:\n    print(\"Found adata.raw\")\n    # Use raw counts\n    adata = adata.raw.to_adata()\n    \n# Or check layers\nif 'counts' in adata.layers:\n    print(\"Found counts layer\")\n    # Will specify layer in setup_anndata\n```\n\n## Step 2: Basic Filtering\n\n```python\n# Filter cells (standard QC)\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_cells(adata, max_genes=5000)\n\n# Calculate mito percent if not present\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\nadata.var['mt'] = (\n    adata.var_names.str.startswith('MT-') |\n    adata.var_names.str.startswith('mt-') |\n    adata.var_names.str.startswith('Mt-')\n)\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n\nprint(f\"After filtering: {adata.shape}\")\n```\n\n## Step 3: Store Raw Counts\n\n**Critical**: Always preserve raw counts before any normalization.\n\n```python\n# Store raw counts in a layer\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Now you can normalize for other purposes (HVG selection)\n# But scvi will use the counts layer\n```\n\n## Step 4: Highly Variable Gene Selection\n\nscvi-tools works best with 1,500-5,000 HVGs.\n\n### For Single-Batch Data\n\n```python\n# Normalize for HVG selection only\nadata_hvg = adata.copy()\nsc.pp.normalize_total(adata_hvg, target_sum=1e4)\nsc.pp.log1p(adata_hvg)\n\n# Select HVGs\nsc.pp.highly_variable_genes(\n    adata_hvg,\n    n_top_genes=2000,\n    flavor=\"seurat\"  # or \"cell_ranger\"\n)\n\n# Transfer HVG annotation\nadata.var['highly_variable'] = adata_hvg.var['highly_variable']\n```\n\n### For Multi-Batch Data (Recommended)\n\n```python\n# Use seurat_v3 flavor with batch_key\n# This selects genes variable across batches\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",  # Your batch column\n    layer=\"counts\"      # Use raw counts\n)\n```\n\n### Subset to HVGs\n\n```python\n# Subset to highly variable genes\nadata = adata[:, adata.var['highly_variable']].copy()\nprint(f\"After HVG selection: {adata.shape}\")\n```\n\n## Step 5: Setup AnnData\n\nThe `setup_anndata()` function registers data for the model.\n\n### Basic Setup\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\"  # Specify layer with raw counts\n)\n```\n\n### With Batch Information\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"  # Column in adata.obs\n)\n```\n\n### With Cell Type Labels (for scANVI)\n\n```python\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"  # Column with cell type labels\n)\n```\n\n### With Continuous Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    continuous_covariate_keys=[\"percent_mito\", \"n_genes\"]\n)\n```\n\n### With Categorical Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n```\n\n## Multi-Modal Data Setup\n\n### CITE-seq (for totalVI)\n\n```python\n# Protein data in adata.obsm\n# RNA in adata.X, protein in separate matrix\n\n# Add protein data\nadata.obsm[\"protein_expression\"] = protein_counts  # numpy array\n\n# Setup for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    protein_expression_obsm_key=\"protein_expression\"\n)\n```\n\n### Multiome RNA+ATAC (for MultiVI)\n\n```python\n# RNA and ATAC in separate AnnData objects or MuData\n\nimport mudata as md\n\n# If using MuData\nmdata = md.read(\"multiome.h5mu\")\n\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    protein_layer=None,\n    batch_key=\"batch\",\n    modalities={\"rna\": \"rna\", \"accessibility\": \"atac\"}\n)\n```\n\n## Complete Preparation Pipeline\n\nFor a complete preparation function, use `prepare_adata()` from `scripts/model_utils.py`:\n\n```python\nfrom model_utils import prepare_adata\n\n# Prepare data with QC, HVG selection, and layer setup\nadata = prepare_adata(\n    adata,\n    batch_key=\"batch\",\n    n_top_genes=2000,\n    min_genes=200,\n    max_mito_pct=20\n)\n\n# Then setup for your model\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n```\n\nThis function handles:\n- Mitochondrial QC filtering\n- Cell and gene filtering\n- Storing counts in layer\n- HVG selection (batch-aware if batch_key provided)\n- Subsetting to HVGs\n\n## Checking Setup\n\n```python\n# View registered data\nprint(adata.uns['_scvi_manager_uuid'])\nprint(adata.uns['_scvi_adata_minify_type'])\n\n# For scVI\nscvi.model.SCVI.view_anndata_setup(adata)\n```\n\n## Common Issues and Solutions\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| \"X should contain integers\" | Normalized data in X | Use layer=\"counts\" |\n| \"batch_key not found\" | Wrong column name | Check adata.obs.columns |\n| Sparse matrix errors | Incompatible format | Convert: adata.X = adata.X.toarray() |\n| Memory error | Too many genes | Subset to HVGs first |\n| NaN in data | Missing values | Filter or impute |\n\n## Data Format Reference\n\n### Required\n\n- `adata.X` or `adata.layers[\"counts\"]`: Raw integer counts (sparse OK)\n- `adata.obs`: Cell metadata DataFrame\n- `adata.var`: Gene metadata DataFrame\n\n### Recommended\n\n- `adata.obs[\"batch\"]`: Batch/sample identifiers\n- `adata.var[\"highly_variable\"]`: HVG boolean mask\n\n### For scANVI\n\n- `adata.obs[\"labels\"]`: Cell type annotations\n- Can include \"Unknown\" for unlabeled cells\n","bio-research/skills/scvi-tools/references/environment_setup.md":"# Environment Setup for scvi-tools\n\nThis reference covers installation and environment configuration for scvi-tools.\n\n## Installation Options\n\n### Option 1: Conda Environment (Recommended)\n\n```bash\n# Create environment with GPU support\nconda create -n scvi-env python=3.10\nconda activate scvi-env\n\n# Install scvi-tools\npip install scvi-tools\n\n# For GPU acceleration (recommended for large datasets)\npip install torch --index-url https://download.pytorch.org/whl/cu118\n\n# Common dependencies\npip install scanpy leidenalg\n```\n\n### Option 2: Pip Only\n\n```bash\n# Create virtual environment\npython -m venv scvi-env\nsource scvi-env/bin/activate  # Linux/Mac\n# scvi-env\\Scripts\\activate   # Windows\n\n# Install\npip install scvi-tools scanpy\n```\n\n### Option 3: With Spatial Analysis Support\n\n```bash\nconda create -n scvi-spatial python=3.10\nconda activate scvi-spatial\n\npip install scvi-tools scanpy squidpy\n```\n\n### Option 4: With MuData Support (Multiome)\n\n```bash\npip install scvi-tools mudata muon\n```\n\n## Verify Installation\n\n```python\nimport scvi\nimport torch\nimport scanpy as sc\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scanpy version: {sc.__version__}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"GPU available: {torch.cuda.is_available()}\")\n\nif torch.cuda.is_available():\n    print(f\"GPU device: {torch.cuda.get_device_name(0)}\")\n    print(f\"GPU memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB\")\n```\n\n## GPU Configuration\n\n### Check CUDA Version\n\n```bash\nnvidia-smi\nnvcc --version\n```\n\n### PyTorch CUDA Versions\n\n| CUDA Version | PyTorch Install Command |\n|--------------|------------------------|\n| CUDA 11.8 | `pip install torch --index-url https://download.pytorch.org/whl/cu118` |\n| CUDA 12.1 | `pip install torch --index-url https://download.pytorch.org/whl/cu121` |\n| CPU only | `pip install torch --index-url https://download.pytorch.org/whl/cpu` |\n\n### Memory Management\n\n```python\nimport torch\n\n# Clear GPU cache between models\ntorch.cuda.empty_cache()\n\n# Monitor memory usage\nprint(f\"Allocated: {torch.cuda.memory_allocated() / 1e9:.2f} GB\")\nprint(f\"Cached: {torch.cuda.memory_reserved() / 1e9:.2f} GB\")\n```\n\n## Common Issues\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| `CUDA out of memory` | GPU memory exhausted | Reduce batch_size, use smaller model |\n| `No GPU detected` | CUDA not installed | Install CUDA toolkit matching PyTorch |\n| `Version mismatch` | PyTorch/CUDA incompatibility | Reinstall PyTorch with correct CUDA version |\n| `Import error scvi` | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Jupyter Setup\n\n```bash\n# Install Jupyter kernel\npip install ipykernel\npython -m ipykernel install --user --name scvi-env --display-name \"scvi-tools\"\n\n# For interactive plots\npip install matplotlib seaborn\n```\n\n## Recommended Package Versions\n\nFor reproducibility, pin versions:\n\n```bash\npip install \\\n    scvi-tools>=1.0.0 \\\n    scanpy>=1.9.0 \\\n    anndata>=0.9.0 \\\n    torch>=2.0.0\n```\n\n## Version Compatibility Guide\n\n### scvi-tools 1.x vs 0.x API Changes\n\nThe 1.x release introduced breaking changes. Key differences:\n\n| Operation | 0.x API (deprecated) | 1.x API (current) |\n|-----------|---------------------|-------------------|\n| Setup data | `scvi.data.setup_anndata(adata, ...)` | `scvi.model.SCVI.setup_anndata(adata, ...)` |\n| Register data | `scvi.data.register_tensor_from_anndata(...)` | Built into `setup_anndata` |\n| View setup | `scvi.data.view_anndata_setup(adata)` | `scvi.model.SCVI.view_anndata_setup(adata)` |\n\n### Migration from 0.x to 1.x\n\n```python\n# OLD (0.x) - DEPRECATED\nimport scvi\nscvi.data.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n\n# NEW (1.x) - CURRENT\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n```\n\n### Model-Specific Setup (1.x)\n\nEach model has its own setup method:\n\n```python\n# scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n\n# scANVI\nscvi.model.SCANVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\", labels_key=\"cell_type\")\n\n# totalVI\nscvi.model.TOTALVI.setup_anndata(adata, layer=\"counts\", protein_expression_obsm_key=\"protein\")\n\n# MultiVI (uses MuData)\nscvi.model.MULTIVI.setup_mudata(mdata, rna_layer=\"counts\", atac_layer=\"counts\")\n\n# PeakVI\nscvi.model.PEAKVI.setup_anndata(adata, batch_key=\"batch\")\n\n# veloVI\nscvi.external.VELOVI.setup_anndata(adata, spliced_layer=\"spliced\", unspliced_layer=\"unspliced\")\n```\n\n### Minimum Version Requirements\n\n| Package | Minimum Version | Notes |\n|---------|-----------------|-------|\n| scvi-tools | 1.0.0 | Required for current API |\n| scanpy | 1.9.0 | HVG selection improvements |\n| anndata | 0.9.0 | Improved MuData support |\n| torch | 2.0.0 | Performance improvements |\n| mudata | 0.2.0 | Required for MultiVI |\n| scvelo | 0.2.5 | Required for veloVI |\n\n### Check Your Versions\n\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n\n# Check if using 1.x API\nif hasattr(scvi.model.SCVI, 'setup_anndata'):\n    print(\"Using scvi-tools 1.x API\")\nelse:\n    print(\"WARNING: Using deprecated 0.x API - please upgrade\")\n```\n\n### Known Compatibility Issues\n\n| Issue | Affected Versions | Solution |\n|-------|-------------------|----------|\n| `setup_anndata` not found | scvi-tools < 1.0 | Upgrade to 1.0+ |\n| MuData errors | mudata < 0.2 | `pip install mudata>=0.2.0` |\n| CUDA version mismatch | Any | Reinstall PyTorch for your CUDA |\n| numpy 2.0 issues | Early 2024 builds | `pip install numpy<2.0` |\n\n### Upgrading scvi-tools\n\n```bash\n# Upgrade to latest\npip install --upgrade scvi-tools\n\n# Upgrade all dependencies\npip install --upgrade scvi-tools scanpy anndata torch\n\n# If you have issues, clean install\npip uninstall scvi-tools\npip cache purge\npip install scvi-tools\n```\n\n## Testing Installation\n\n```python\n# Quick test with sample data\nimport scvi\nimport scanpy as sc\n\n# Load test dataset\nadata = scvi.data.heart_cell_atlas_subsampled()\nprint(f\"Loaded test data: {adata.shape}\")\n\n# Setup and create model (quick test)\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"cell_source\")\nmodel = scvi.model.SCVI(adata, n_latent=10)\nprint(\"Model created successfully\")\n\n# Quick training test (1 epoch)\nmodel.train(max_epochs=1)\nprint(\"Training works!\")\n```\n","bio-research/skills/scvi-tools/references/label_transfer.md":"# Label Transfer and Reference Mapping with scANVI\n\nThis reference covers using scANVI for transferring cell type annotations from a reference atlas to query data.\n\n## Overview\n\nReference mapping (also called \"label transfer\") uses a pre-trained model on annotated reference data to predict cell types in new, unannotated query data. This is faster than re-clustering and more consistent across studies.\n\nscANVI excels at this because it:\n- Jointly embeds reference and query in shared space\n- Transfers labels probabilistically\n- Handles batch effects between reference and query\n\n## When to Use Reference Mapping\n\n- Annotating new dataset using existing atlas\n- Consistent annotation across multiple studies\n- Speed: no need to re-cluster and manually annotate\n- Quality: leverage expert-curated reference annotations\n\n## Workflow Options\n\n1. **Train new model**: Train scANVI on reference, then map query\n2. **Use pre-trained model**: Load existing model (e.g., from Model Hub)\n3. **scArches**: Extend existing model with query data (preserves reference)\n\n## Option 1: Train scANVI on Reference\n\n### Step 1: Prepare Reference Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load reference atlas\nadata_ref = sc.read_h5ad(\"reference_atlas.h5ad\")\n\n# Check annotations\nprint(f\"Reference cells: {adata_ref.n_obs}\")\nprint(f\"Cell types: {adata_ref.obs['cell_type'].nunique()}\")\nprint(adata_ref.obs['cell_type'].value_counts())\n\n# Ensure raw counts\nadata_ref.layers[\"counts\"] = adata_ref.raw.X.copy() if adata_ref.raw else adata_ref.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_ref,\n    n_top_genes=3000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata_ref.obs else None,\n    layer=\"counts\"\n)\nadata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n```\n\n### Step 2: Train scANVI on Reference\n\n```python\n# First train scVI (unlabeled)\nscvi.model.SCVI.setup_anndata(\n    adata_ref,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\nscvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\nscvi_ref.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_ref = scvi.model.SCANVI.from_scvi_model(\n    scvi_ref,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"\n)\n\n# Train scANVI\nscanvi_ref.train(max_epochs=50)\n\n# Save for later use\nscanvi_ref.save(\"scanvi_reference_model/\")\n```\n\n### Step 3: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Use same genes as reference\ncommon_genes = adata_ref.var_names.intersection(adata_query.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, adata_ref.var_names].copy()\n\n# Handle missing genes (set to 0)\nmissing_genes = set(adata_ref.var_names) - set(adata_query.var_names)\nif missing_genes:\n    # Add missing genes with zero expression\n    import numpy as np\n    from scipy.sparse import csr_matrix\n    \n    zero_matrix = csr_matrix((adata_query.n_obs, len(missing_genes)))\n    # ... concat and reorder to match reference\n    \n# Store counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n```\n\n### Step 4: Map Query to Reference\n\n```python\n# Prepare query data for mapping\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n\n# Create query model from reference\nscanvi_query = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    scanvi_ref\n)\n\n# Fine-tune on query (optional but recommended)\nscanvi_query.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n\n# Get predictions\nadata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n\n# Get prediction probabilities\nsoft_predictions = scanvi_query.predict(soft=True)\nadata_query.obs[\"prediction_score\"] = soft_predictions.max(axis=1)\n```\n\n### Step 5: Evaluate Predictions\n\n```python\n# Confidence scores\nprint(f\"Mean prediction confidence: {adata_query.obs['prediction_score'].mean():.3f}\")\n\n# Low confidence predictions\nlow_conf = adata_query.obs['prediction_score'] < 0.5\nprint(f\"Low confidence cells: {low_conf.sum()} ({low_conf.mean()*100:.1f}%)\")\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Option 2: Use Pre-Trained Models\n\n### From Model Hub\n\n```python\n# scvi-tools maintains models on HuggingFace\n# Check: https://huggingface.co/scvi-tools\n\n# Example: Load pre-trained model\nfrom huggingface_hub import hf_hub_download\n\nmodel_path = hf_hub_download(\n    repo_id=\"scvi-tools/example-model\",\n    filename=\"model.pt\"\n)\n\n# Load model\nmodel = scvi.model.SCANVI.load(model_path, adata=adata_query)\n```\n\n### From Published Atlas\n\n```python\n# Many atlases provide pre-trained models\n# Example workflow with CellTypist-style model\n\n# Download reference model\n# model = scvi.model.SCANVI.load(\"atlas_model/\", adata=adata_query)\n```\n\n## Option 3: scArches for Incremental Updates\n\nscArches extends a reference model without retraining from scratch:\n\n```python\n# Load existing reference model\nscanvi_ref = scvi.model.SCANVI.load(\"reference_model/\")\n\n# Surgery: prepare for query integration\nscanvi_ref.freeze_layers()\n\n# Map query data\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\nscanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n\n# Train only query-specific parameters\nscanvi_query.train(\n    max_epochs=200,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n## Visualize Reference and Query Together\n\n```python\n# Concatenate for joint visualization\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Get latent representations\nadata_ref.obsm[\"X_scANVI\"] = scanvi_ref.get_latent_representation()\nadata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute combined UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_combined)\n\n# Plot\nsc.pl.umap(\n    adata_combined,\n    color=[\"dataset\", \"cell_type\", \"predicted_cell_type\"],\n    ncols=2\n)\n```\n\n## Quality Control for Predictions\n\n### Confidence Filtering\n\n```python\n# Filter predictions by confidence\nconfidence_threshold = 0.7\n\nhigh_conf = adata_query[adata_query.obs['prediction_score'] >= confidence_threshold].copy()\nlow_conf = adata_query[adata_query.obs['prediction_score'] < confidence_threshold].copy()\n\nprint(f\"High confidence: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\nprint(f\"Low confidence: {len(low_conf)} ({len(low_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n### Marker Validation\n\n```python\n# Validate predictions with known markers\nmarkers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\nfor ct, genes in markers.items():\n    ct_cells = adata_query[adata_query.obs['predicted_cell_type'] == ct]\n    if len(ct_cells) > 0:\n        for gene in genes:\n            if gene in adata_query.var_names:\n                expr = ct_cells[:, gene].X.mean()\n                print(f\"{ct} - {gene}: {expr:.3f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\",\n    batch_key=None,\n    n_top_genes=3000,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Transfer cell type labels from reference to query.\n    \n    Parameters\n    ----------\n    adata_ref : AnnData\n        Annotated reference data\n    adata_query : AnnData\n        Unannotated query data\n    cell_type_key : str\n        Column with cell type annotations in reference\n    batch_key : str, optional\n        Batch column\n    n_top_genes : int\n        Number of HVGs\n    confidence_threshold : float\n        Minimum confidence for predictions\n        \n    Returns\n    -------\n    AnnData with predictions\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Prepare reference\n    adata_ref = adata_ref.copy()\n    adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    \n    sc.pp.highly_variable_genes(\n        adata_ref,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n    \n    # Train reference model\n    scvi.model.SCVI.setup_anndata(adata_ref, layer=\"counts\", batch_key=batch_key)\n    scvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\n    scvi_ref.train(max_epochs=200)\n    \n    scanvi_ref = scvi.model.SCANVI.from_scvi_model(\n        scvi_ref,\n        labels_key=cell_type_key,\n        unlabeled_category=\"Unknown\"\n    )\n    scanvi_ref.train(max_epochs=50)\n    \n    # Prepare query\n    adata_query = adata_query[:, adata_ref.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n    \n    # Map query\n    scvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n    scanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n    scanvi_query.train(max_epochs=100, plan_kwargs={\"weight_decay\": 0.0})\n    \n    # Get predictions\n    adata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n    soft = scanvi_query.predict(soft=True)\n    adata_query.obs[\"prediction_score\"] = soft.max(axis=1)\n    \n    # Mark low confidence\n    adata_query.obs[\"confident_prediction\"] = adata_query.obs[\"prediction_score\"] >= confidence_threshold\n    \n    # Add latent representation\n    adata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n    \n    return adata_query, scanvi_ref, scanvi_query\n\n# Usage\nadata_annotated, ref_model, query_model = transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsc.pp.neighbors(adata_annotated, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_annotated)\nsc.pl.umap(adata_annotated, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Many low-confidence predictions | Query has novel cell types | Manually annotate low-confidence cells |\n| Wrong predictions | Reference doesn't match tissue | Use tissue-appropriate reference |\n| Gene mismatch | Different gene naming | Convert gene IDs |\n| All same prediction | Query too different | Check data quality, try different reference |\n\n## Key References\n\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n","bio-research/skills/scvi-tools/references/multiome_multivi.md":"# Multiome Analysis with MultiVI\n\nThis reference covers joint RNA and ATAC-seq analysis from multiome experiments using MultiVI.\n\n## Overview\n\nMultiVI is a deep generative model for analyzing multiome data (simultaneous RNA-seq and ATAC-seq from the same cells). It:\n- Learns a joint latent representation across modalities\n- Handles missing modalities (RNA-only or ATAC-only cells)\n- Enables batch correction across experiments\n- Supports imputation of missing modalities\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Data Formats\n\n### Option 1: MuData (Recommended)\n\n```python\n# Load multiome data as MuData\nmdata = md.read(\"multiome.h5mu\")\n\n# Structure:\n# mdata.mod['rna']  - AnnData with RNA counts\n# mdata.mod['atac'] - AnnData with ATAC counts\n\nprint(f\"RNA: {mdata.mod['rna'].shape}\")\nprint(f\"ATAC: {mdata.mod['atac'].shape}\")\n```\n\n### Option 2: Separate AnnData Objects\n\n```python\n# Load separately\nadata_rna = sc.read_h5ad(\"rna.h5ad\")\nadata_atac = sc.read_h5ad(\"atac.h5ad\")\n\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n## Step 1: Prepare RNA Data\n\n```python\n# RNA preprocessing (standard scvi-tools pipeline)\nadata_rna = mdata.mod['rna'].copy()\n\n# Filter\nsc.pp.filter_cells(adata_rna, min_genes=200)\nsc.pp.filter_genes(adata_rna, min_cells=3)\n\n# Store counts\nadata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_rna,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\",\n    batch_key=\"batch\"  # If multiple batches\n)\n\n# Subset to HVGs\nadata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n```\n\n## Step 2: Prepare ATAC Data\n\n```python\n# ATAC preprocessing\nadata_atac = mdata.mod['atac'].copy()\n\n# Filter peaks\nsc.pp.filter_genes(adata_atac, min_cells=10)\n\n# Binarize accessibility\nadata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n# Select top accessible peaks (if too many)\nif adata_atac.n_vars > 50000:\n    peak_accessibility = np.array(adata_atac.X.sum(axis=0)).flatten()\n    top_peaks = np.argsort(peak_accessibility)[-50000:]\n    adata_atac = adata_atac[:, top_peaks].copy()\n\n# Store in layer\nadata_atac.layers[\"counts\"] = adata_atac.X.copy()\n```\n\n## Step 3: Create Combined MuData\n\n```python\n# Ensure matching cells\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n\n# Create MuData\nmdata = md.MuData({\n    \"rna\": adata_rna,\n    \"atac\": adata_atac\n})\n\nprint(f\"Combined multiome: {mdata.n_obs} cells\")\nprint(f\"RNA features: {mdata.mod['rna'].n_vars}\")\nprint(f\"ATAC features: {mdata.mod['atac'].n_vars}\")\n```\n\n## Step 4: Setup MultiVI\n\n```python\n# Setup MuData for MultiVI\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    atac_layer=\"counts\",\n    batch_key=\"batch\",  # Optional\n    modalities={\n        \"rna_layer\": \"rna\",\n        \"batch_key\": \"rna\",\n        \"atac_layer\": \"atac\"\n    }\n)\n```\n\n## Step 5: Train MultiVI\n\n```python\n# Create model\nmodel = scvi.model.MULTIVI(\n    mdata,\n    n_latent=20,\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=300,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Joint Representation\n\n```python\n# Latent representation\nlatent = model.get_latent_representation()\n\n# Add to MuData\nmdata.obsm[\"X_MultiVI\"] = latent\n\n# Clustering on joint space\nsc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\nsc.tl.umap(mdata)\nsc.tl.leiden(mdata, resolution=1.0)\n\n# Visualize\nsc.pl.umap(mdata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Modality-Specific Analysis\n\n### Impute Missing Modality\n\n```python\n# Impute RNA expression for ATAC-only cells\n# (Useful when integrating with ATAC-only datasets)\nimputed_rna = model.get_normalized_expression(\n    modality=\"rna\"\n)\n\n# Impute accessibility for RNA-only cells\nimputed_atac = model.get_accessibility_estimates()\n```\n\n### Differential Analysis\n\n```python\n# Differential expression (RNA)\nde_results = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Differential accessibility (ATAC)\nda_results = model.differential_accessibility(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n```\n\n## Handling Partial Data\n\nMultiVI can integrate datasets with only one modality:\n\n```python\n# Dataset 1: Full multiome\n# Dataset 2: RNA only\n# Dataset 3: ATAC only\n\n# Mark missing modalities\nmdata.obs['modality'] = 'paired'  # For cells with both\n# For RNA-only cells, ATAC data should be missing/NaN\n# For ATAC-only cells, RNA data should be missing/NaN\n\n# MultiVI handles this automatically during training\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=None,\n    n_top_genes=4000,\n    n_top_peaks=50000,\n    n_latent=20,\n    max_epochs=300\n):\n    \"\"\"\n    Complete multiome analysis with MultiVI.\n\n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA count data\n    adata_atac : AnnData\n        ATAC peak data\n    batch_key : str, optional\n        Batch column name\n    n_top_genes : int\n        Number of HVGs for RNA\n    n_top_peaks : int\n        Number of top peaks for ATAC\n    n_latent : int\n        Latent dimensions\n    max_epochs : int\n        Maximum training epochs\n\n    Returns\n    -------\n    MuData with joint representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import mudata as md\n    import numpy as np\n\n    # Get common cells\n    common_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\n    adata_rna = adata_rna[common_cells].copy()\n    adata_atac = adata_atac[common_cells].copy()\n\n    # RNA preprocessing\n    sc.pp.filter_genes(adata_rna, min_cells=3)\n    adata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n    if batch_key:\n        sc.pp.highly_variable_genes(\n            adata_rna, n_top_genes=n_top_genes,\n            flavor=\"seurat_v3\", layer=\"counts\", batch_key=batch_key\n        )\n    else:\n        sc.pp.normalize_total(adata_rna, target_sum=1e4)\n        sc.pp.log1p(adata_rna)\n        sc.pp.highly_variable_genes(adata_rna, n_top_genes=n_top_genes)\n        adata_rna.X = adata_rna.layers[\"counts\"].copy()\n\n    adata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n\n    # ATAC preprocessing\n    sc.pp.filter_genes(adata_atac, min_cells=10)\n    adata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n    if adata_atac.n_vars > n_top_peaks:\n        peak_acc = np.array(adata_atac.X.sum(axis=0)).flatten()\n        top_idx = np.argsort(peak_acc)[-n_top_peaks:]\n        adata_atac = adata_atac[:, top_idx].copy()\n\n    adata_atac.layers[\"counts\"] = adata_atac.X.copy()\n\n    # Create MuData\n    mdata = md.MuData({\"rna\": adata_rna, \"atac\": adata_atac})\n\n    # Setup and train\n    scvi.model.MULTIVI.setup_mudata(\n        mdata,\n        rna_layer=\"counts\",\n        atac_layer=\"counts\",\n        batch_key=batch_key,\n        modalities={\"rna_layer\": \"rna\", \"batch_key\": \"rna\", \"atac_layer\": \"atac\"}\n    )\n\n    model = scvi.model.MULTIVI(mdata, n_latent=n_latent)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n\n    # Add representation\n    mdata.obsm[\"X_MultiVI\"] = model.get_latent_representation()\n\n    # Cluster\n    sc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\n    sc.tl.umap(mdata)\n    sc.tl.leiden(mdata)\n\n    return mdata, model\n\n\n# Usage\nmdata, model = analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=\"sample\"\n)\n\nsc.pl.umap(mdata, color=['leiden', 'sample'])\n```\n\n## Peak-to-Gene Linking\n\n```python\n# Link ATAC peaks to genes based on correlation in latent space\n# This identifies regulatory relationships\n\ndef link_peaks_to_genes(model, mdata, distance_threshold=100000):\n    \"\"\"\n    Link peaks to nearby genes based on correlation.\n\n    Parameters\n    ----------\n    model : MULTIVI\n        Trained model\n    mdata : MuData\n        Multiome data\n    distance_threshold : int\n        Maximum distance (bp) to link peak to gene\n\n    Returns\n    -------\n    DataFrame of peak-gene links\n    \"\"\"\n    # Get imputed values\n    rna_imputed = model.get_normalized_expression()\n    atac_imputed = model.get_accessibility_estimates()\n\n    # Correlate peak accessibility with gene expression\n    # for peaks near gene promoters\n    # ... (requires genomic coordinates)\n\n    return peak_gene_links\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Different cell counts | Cells missing in one modality | Use common cells only |\n| Training instability | Imbalanced modalities | Normalize feature counts |\n| Poor clustering | Too few features | Increase n_top_genes/peaks |\n| Memory error | Large ATAC matrix | Reduce peak count, use sparse |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n\n## Key References\n\n- Ashuach et al. (2023) \"MultiVI: deep generative model for the integration of multimodal data\"\n","bio-research/skills/scvi-tools/references/rna_velocity_velovi.md":"# RNA Velocity with veloVI\n\nThis reference covers RNA velocity analysis using veloVI, a deep learning approach that improves upon traditional velocity methods.\n\n## Overview\n\nRNA velocity estimates the future state of cells by modeling:\n- **Unspliced RNA**: Newly transcribed, contains introns\n- **Spliced RNA**: Mature mRNA, introns removed\n\nThe ratio of unspliced to spliced indicates whether a gene is being upregulated or downregulated.\n\n## Why veloVI?\n\nTraditional methods (velocyto, scVelo) have limitations:\n- Assume steady-state or dynamical model\n- Sensitive to noise\n- Don't handle batch effects\n\nveloVI addresses these with:\n- Probabilistic modeling\n- Better uncertainty quantification\n- Integration with scVI framework\n\n## Prerequisites\n\n```python\nimport scvi\nimport scvelo as scv\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scvelo version: {scv.__version__}\")\n```\n\n## Step 1: Generate Spliced/Unspliced Counts\n\n### From BAM Files (velocyto)\n\n```bash\n# Run velocyto on Cell Ranger output\nvelocyto run10x /path/to/cellranger_output /path/to/genes.gtf\n\n# Output: velocyto.loom file with spliced/unspliced layers\n```\n\n### From kb-python (kallisto|bustools)\n\n```bash\n# Faster alternative using kallisto\nkb count \\\n    --workflow lamanno \\\n    -i index.idx \\\n    -g t2g.txt \\\n    -c1 spliced_t2c.txt \\\n    -c2 unspliced_t2c.txt \\\n    -x 10xv3 \\\n    -o output \\\n    R1.fastq.gz R2.fastq.gz\n```\n\n## Step 2: Load Velocity Data\n\n```python\n# Load loom file from velocyto\nadata = scv.read(\"velocyto_output.loom\")\n\n# Or load from kb-python\nadata = sc.read_h5ad(\"adata.h5ad\")\n# Spliced in adata.layers[\"spliced\"]\n# Unspliced in adata.layers[\"unspliced\"]\n\n# Check layers\nprint(\"Available layers:\", list(adata.layers.keys()))\nprint(f\"Spliced shape: {adata.layers['spliced'].shape}\")\nprint(f\"Unspliced shape: {adata.layers['unspliced'].shape}\")\n```\n\n### Merge with Existing AnnData\n\n```python\n# If you have separate loom and h5ad\nldata = scv.read(\"velocyto.loom\")\nadata = sc.read_h5ad(\"processed.h5ad\")\n\n# Merge velocity data into processed adata\nadata = scv.utils.merge(adata, ldata)\n```\n\n## Step 3: Preprocessing for Velocity\n\n```python\n# Filter and normalize\nscv.pp.filter_and_normalize(\n    adata,\n    min_shared_counts=20,\n    n_top_genes=2000\n)\n\n# Compute moments (for scVelo comparison)\nscv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n```\n\n## Step 4: Run veloVI\n\n### Setup AnnData\n\n```python\n# Setup for veloVI\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\"\n)\n```\n\n### Train Model\n\n```python\n# Create and train veloVI model\nvae = scvi.model.VELOVI(adata)\n\nvae.train(\n    max_epochs=500,\n    early_stopping=True,\n    batch_size=256\n)\n\n# Check training\nvae.history[\"elbo_train\"].plot()\n```\n\n### Get Velocity Estimates\n\n```python\n# Get latent time\nlatent_time = vae.get_latent_time(n_samples=25)\nadata.obs[\"veloVI_latent_time\"] = latent_time\n\n# Get velocity\nvelocities = vae.get_velocity(n_samples=25)\nadata.layers[\"veloVI_velocity\"] = velocities\n\n# Get expression states\nadata.layers[\"veloVI_expression\"] = vae.get_expression_fit(n_samples=25)\n```\n\n## Step 5: Visualize Velocity\n\n### Velocity Streamlines\n\n```python\n# Compute velocity graph\nscv.tl.velocity_graph(adata, vkey=\"veloVI_velocity\")\n\n# Plot streamlines on UMAP\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    color=\"cell_type\"\n)\n```\n\n### Velocity Arrows\n\n```python\n# Individual cell arrows\nscv.pl.velocity_embedding(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    arrow_length=3,\n    arrow_size=2,\n    color=\"cell_type\"\n)\n```\n\n### Latent Time\n\n```python\n# Plot latent time (pseudotime from velocity)\nsc.pl.umap(adata, color=\"veloVI_latent_time\", cmap=\"viridis\")\n```\n\n## Step 6: Compare with scVelo\n\n```python\n# Run standard scVelo for comparison\nscv.tl.velocity(adata, mode=\"dynamical\")\nscv.tl.velocity_graph(adata)\n\n# Compare velocity fields\nfig, axes = plt.subplots(1, 2, figsize=(12, 5))\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", ax=axes[0], \n    title=\"scVelo\", show=False\n)\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", vkey=\"veloVI_velocity\",\n    ax=axes[1], title=\"veloVI\", show=False\n)\n\nplt.tight_layout()\n```\n\n## Step 7: Gene-Level Analysis\n\n### Velocity Phase Portraits\n\n```python\n# Plot phase portrait for specific genes\ngenes = [\"SOX2\", \"PAX6\", \"DCX\", \"NEUROD1\"]\n\nscv.pl.velocity(\n    adata,\n    var_names=genes,\n    vkey=\"veloVI_velocity\",\n    colorbar=True\n)\n```\n\n### Gene Dynamics\n\n```python\n# Plot expression over latent time\nfor gene in genes:\n    fig, ax = plt.subplots(figsize=(6, 4))\n    \n    sc.pl.scatter(\n        adata,\n        x=\"veloVI_latent_time\",\n        y=gene,\n        color=\"cell_type\",\n        ax=ax,\n        show=False\n    )\n    ax.set_xlabel(\"Latent Time\")\n    ax.set_ylabel(f\"{gene} Expression\")\n```\n\n### Driver Genes\n\n```python\n# Find genes driving velocity\nscv.tl.rank_velocity_genes(\n    adata,\n    vkey=\"veloVI_velocity\",\n    groupby=\"cell_type\"\n)\n\n# Get top genes per cluster\ndf = scv.get_df(adata, \"rank_velocity_genes/names\")\nprint(df.head(10))\n```\n\n## Step 8: Uncertainty Quantification\n\nveloVI provides uncertainty estimates:\n\n```python\n# Get velocity with uncertainty\nvelocity_mean, velocity_std = vae.get_velocity(\n    n_samples=100,\n    return_mean=True,\n    return_numpy=True\n)\n\n# Store uncertainty\nadata.layers[\"velocity_uncertainty\"] = velocity_std\n\n# Visualize uncertainty\nadata.obs[\"mean_velocity_uncertainty\"] = velocity_std.mean(axis=1)\nsc.pl.umap(adata, color=\"mean_velocity_uncertainty\")\n```\n\n## Complete Pipeline\n\n```python\ndef run_velocity_analysis(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    n_top_genes=2000,\n    max_epochs=500\n):\n    \"\"\"\n    Complete RNA velocity analysis with veloVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Data with spliced/unspliced layers\n    spliced_layer : str\n        Layer name for spliced counts\n    unspliced_layer : str\n        Layer name for unspliced counts\n    n_top_genes : int\n        Number of velocity genes\n    max_epochs : int\n        Training epochs\n        \n    Returns\n    -------\n    AnnData with velocity and model\n    \"\"\"\n    import scvi\n    import scvelo as scv\n    import scanpy as sc\n    \n    adata = adata.copy()\n    \n    # Preprocessing\n    scv.pp.filter_and_normalize(\n        adata,\n        min_shared_counts=20,\n        n_top_genes=n_top_genes\n    )\n    \n    # Compute moments (needed for some visualizations)\n    scv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n    \n    # Setup veloVI\n    scvi.model.VELOVI.setup_anndata(\n        adata,\n        spliced_layer=spliced_layer,\n        unspliced_layer=unspliced_layer\n    )\n    \n    # Train\n    model = scvi.model.VELOVI(adata)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n    \n    # Get results\n    adata.obs[\"latent_time\"] = model.get_latent_time(n_samples=25)\n    adata.layers[\"velocity\"] = model.get_velocity(n_samples=25)\n    \n    # Compute velocity graph for visualization\n    scv.tl.velocity_graph(adata, vkey=\"velocity\")\n    \n    # Compute UMAP if not present\n    if \"X_umap\" not in adata.obsm:\n        sc.pp.neighbors(adata)\n        sc.tl.umap(adata)\n    \n    return adata, model\n\n# Usage\nadata_velocity, model = run_velocity_analysis(adata)\n\n# Visualize\nscv.pl.velocity_embedding_stream(\n    adata_velocity,\n    basis=\"umap\",\n    vkey=\"velocity\",\n    color=\"cell_type\"\n)\n\nsc.pl.umap(adata_velocity, color=\"latent_time\")\n```\n\n## Advanced: Batch-Aware Velocity\n\n```python\n# For multi-batch data, include batch in model\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    batch_key=\"batch\"\n)\n\nmodel = scvi.model.VELOVI(adata)\nmodel.train()\n```\n\n## Interpreting Results\n\n### Good Velocity Signal\n\n- Streamlines follow expected differentiation\n- Latent time correlates with known biology\n- Phase portraits show clear dynamics\n\n### Poor Velocity Signal\n\n- Random/chaotic streamlines\n- No correlation with known markers\n- May indicate:\n  - Insufficient unspliced reads\n  - Cells at steady state\n  - Technical issues\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| No velocity signal | Low unspliced counts | Check sequencing depth, use kb-python |\n| Reversed direction | Wrong root assignment | Manually set root cells |\n| Noisy streamlines | Too many genes | Reduce n_top_genes |\n| Memory error | Large dataset | Reduce batch_size |\n\n## Key References\n\n- Gayoso et al. (2023) \"Deep generative modeling of transcriptional dynamics for RNA velocity analysis in single cells\"\n- La Manno et al. (2018) \"RNA velocity of single cells\"\n- Bergen et al. (2020) \"Generalizing RNA velocity to transient cell states through dynamical modeling\"\n","bio-research/skills/scvi-tools/references/scarches_mapping.md":"# Reference Mapping with scArches\n\nThis reference covers using scArches for mapping query data to pre-trained reference models without retraining from scratch.\n\n## Overview\n\nscArches (single-cell architecture surgery) enables:\n- Mapping new data to existing reference atlases\n- Extending models with new batches/studies\n- Transfer learning without full retraining\n- Preserving reference structure while integrating query\n\n## When to Use scArches\n\n| Scenario | Approach |\n|----------|----------|\n| Map query to existing atlas | scArches query mapping |\n| Extend atlas with new data | scArches model surgery |\n| No pre-trained model available | Train scANVI from scratch |\n| Query very different from reference | Consider retraining |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Workflow 1: Map Query to Pre-Trained Reference\n\n### Step 1: Load Pre-Trained Reference Model\n\n```python\n# Load saved reference model\n# The model must have been trained with scvi-tools\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Or load scANVI for label transfer\nreference_model = scvi.model.SCANVI.load(\"reference_scanvi_model/\")\n\n# Check model info\nprint(f\"Model type: {type(reference_model)}\")\nprint(f\"Training data shape: {reference_model.adata.shape}\")\n```\n\n### Step 2: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Match genes to reference\nreference_genes = reference_model.adata.var_names\nquery_genes = adata_query.var_names\n\n# Check overlap\ncommon_genes = reference_genes.intersection(query_genes)\nprint(f\"Reference genes: {len(reference_genes)}\")\nprint(f\"Query genes: {len(query_genes)}\")\nprint(f\"Overlap: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, reference_genes].copy()\n\n# Handle missing genes (filled with zeros automatically by prepare_query_anndata)\n```\n\n### Step 3: Prepare Query AnnData\n\n```python\n# Store raw counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n\n# Prepare query for mapping\n# This aligns the query data structure to match the reference\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\n```\n\n### Step 4: Create Query Model\n\n```python\n# Create query model from reference\n# This initializes with reference weights\nquery_model = scvi.model.SCVI.load_query_data(\n    adata_query,\n    reference_model\n)\n\n# The query model inherits:\n# - Reference architecture\n# - Reference encoder weights (frozen by default)\n# - Decoder is fine-tuned for query\n```\n\n### Step 5: Fine-Tune on Query\n\n```python\n# Fine-tune the query model\n# This adjusts decoder weights for query-specific effects\nquery_model.train(\n    max_epochs=200,\n    plan_kwargs={\n        \"weight_decay\": 0.0  # Less regularization for fine-tuning\n    }\n)\n\n# Check training\nquery_model.history['elbo_train'].plot()\n```\n\n### Step 6: Get Query Representation\n\n```python\n# Get latent representation\n# Query cells are embedded in same space as reference\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['cell_type', 'batch'])\n```\n\n## Workflow 2: scANVI Query Mapping with Label Transfer\n\nFor transferring cell type labels from reference to query:\n\n### Step 1: Load scANVI Reference\n\n```python\n# Reference must be scANVI model (trained with labels)\nreference_scanvi = scvi.model.SCANVI.load(\"scanvi_reference/\")\n\n# Check available labels\nprint(\"Reference cell types:\")\nprint(reference_scanvi.adata.obs['cell_type'].value_counts())\n```\n\n### Step 2: Prepare and Map Query\n\n```python\n# Prepare query\nadata_query.layers[\"counts\"] = adata_query.X.copy()\nadata_query = adata_query[:, reference_scanvi.adata.var_names].copy()\n\nscvi.model.SCANVI.prepare_query_anndata(adata_query, reference_scanvi)\n\n# Create query model\nquery_scanvi = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    reference_scanvi\n)\n\n# Fine-tune\nquery_scanvi.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n### Step 3: Get Predictions\n\n```python\n# Predict cell types\npredictions = query_scanvi.predict()\nadata_query.obs[\"predicted_cell_type\"] = predictions\n\n# Get prediction probabilities\nsoft_predictions = query_scanvi.predict(soft=True)\nadata_query.obs[\"prediction_confidence\"] = soft_predictions.max(axis=1)\n\n# Latent representation\nadata_query.obsm[\"X_scANVI\"] = query_scanvi.get_latent_representation()\n\n# Visualize predictions\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n### Step 4: Evaluate Predictions\n\n```python\n# Distribution of predictions\nprint(adata_query.obs['predicted_cell_type'].value_counts())\n\n# Confidence statistics\nprint(f\"Mean confidence: {adata_query.obs['prediction_confidence'].mean():.3f}\")\nprint(f\"Low confidence (<0.5): {(adata_query.obs['prediction_confidence'] < 0.5).sum()}\")\n\n# Filter low-confidence predictions\nhigh_conf = adata_query[adata_query.obs['prediction_confidence'] >= 0.7].copy()\nprint(f\"High confidence cells: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n## Workflow 3: Model Surgery (Extending Reference)\n\nExtend an existing reference model with new data:\n\n### Step 1: Freeze Reference Layers\n\n```python\n# Load reference model\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Get reference representation (before surgery)\nadata_ref = reference_model.adata\nadata_ref.obsm[\"X_scVI_before\"] = reference_model.get_latent_representation()\n```\n\n### Step 2: Prepare Combined Data\n\n```python\n# Add batch information\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\nadata_combined.layers[\"counts\"] = adata_combined.X.copy()\n```\n\n### Step 3: Surgery Approach\n\n```python\n# Option A: Use load_query_data (recommended)\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\nextended_model = scvi.model.SCVI.load_query_data(adata_query, reference_model)\nextended_model.train(max_epochs=200)\n\n# Option B: Retrain with combined data (if query is large)\n# This doesn't preserve reference exactly but may give better results\nscvi.model.SCVI.setup_anndata(\n    adata_combined,\n    layer=\"counts\",\n    batch_key=\"dataset\"\n)\nnew_model = scvi.model.SCVI(adata_combined, n_latent=30)\nnew_model.train(max_epochs=200)\n```\n\n## Joint Visualization\n\nVisualize reference and query together:\n\n```python\n# Get latent representations\nadata_ref.obsm[\"X_scVI\"] = reference_model.get_latent_representation()\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Combine for visualization\nadata_ref.obs[\"source\"] = \"reference\"\nadata_query.obs[\"source\"] = \"query\"\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute joint UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scVI\")\nsc.tl.umap(adata_combined)\n\n# Visualize\nimport matplotlib.pyplot as plt\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\nsc.pl.umap(adata_combined, color=\"source\", ax=axes[0], show=False, title=\"Source\")\nsc.pl.umap(adata_combined, color=\"cell_type\", ax=axes[1], show=False, title=\"Cell Type\")\nsc.pl.umap(adata_combined, color=\"batch\", ax=axes[2], show=False, title=\"Batch\")\n\nplt.tight_layout()\n```\n\n## Using Public Atlas Models\n\n### From HuggingFace Model Hub\n\n```python\nfrom huggingface_hub import hf_hub_download\n\n# Download model files\nmodel_dir = hf_hub_download(\n    repo_id=\"scvi-tools/model-name\",  # Replace with actual repo\n    filename=\"model.pt\",\n    local_dir=\"./downloaded_model/\"\n)\n\n# Load model\natlas_model = scvi.model.SCANVI.load(model_dir)\n```\n\n### From CellxGene\n\n```python\n# Many CellxGene datasets provide pre-trained models\n# Check dataset documentation for model availability\n# https://cellxgene.cziscience.com/\n\n# Example workflow:\n# 1. Download reference dataset and model\n# 2. Load model: model = scvi.model.SCANVI.load(\"cellxgene_model/\")\n# 3. Map your query data using steps above\n```\n\n## Complete Pipeline\n\n```python\ndef map_query_to_reference(\n    adata_query,\n    reference_model_path,\n    model_type=\"scanvi\",\n    max_epochs=100,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Map query data to pre-trained reference model.\n\n    Parameters\n    ----------\n    adata_query : AnnData\n        Query data with raw counts\n    reference_model_path : str\n        Path to saved reference model\n    model_type : str\n        \"scvi\" or \"scanvi\"\n    max_epochs : int\n        Fine-tuning epochs\n    confidence_threshold : float\n        Minimum prediction confidence (for scANVI)\n\n    Returns\n    -------\n    Mapped AnnData with predictions (if scANVI)\n    \"\"\"\n    import scvi\n\n    # Load reference\n    if model_type == \"scanvi\":\n        reference_model = scvi.model.SCANVI.load(reference_model_path)\n        ModelClass = scvi.model.SCANVI\n    else:\n        reference_model = scvi.model.SCVI.load(reference_model_path)\n        ModelClass = scvi.model.SCVI\n\n    # Prepare query\n    adata_query = adata_query.copy()\n    adata_query = adata_query[:, reference_model.adata.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n\n    # Map query\n    ModelClass.prepare_query_anndata(adata_query, reference_model)\n    query_model = ModelClass.load_query_data(adata_query, reference_model)\n\n    # Fine-tune\n    query_model.train(\n        max_epochs=max_epochs,\n        plan_kwargs={\"weight_decay\": 0.0}\n    )\n\n    # Get results\n    rep_key = \"X_scANVI\" if model_type == \"scanvi\" else \"X_scVI\"\n    adata_query.obsm[rep_key] = query_model.get_latent_representation()\n\n    if model_type == \"scanvi\":\n        adata_query.obs[\"predicted_cell_type\"] = query_model.predict()\n        soft = query_model.predict(soft=True)\n        adata_query.obs[\"prediction_confidence\"] = soft.max(axis=1)\n        adata_query.obs[\"confident\"] = adata_query.obs[\"prediction_confidence\"] >= confidence_threshold\n\n    # Compute UMAP\n    sc.pp.neighbors(adata_query, use_rep=rep_key)\n    sc.tl.umap(adata_query)\n\n    return adata_query, query_model\n\n\n# Usage\nadata_mapped, model = map_query_to_reference(\n    adata_query,\n    \"reference_scanvi_model/\",\n    model_type=\"scanvi\"\n)\n\n# Visualize\nsc.pl.umap(adata_mapped, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Gene mismatch | Different gene naming | Convert gene IDs (Ensembl ↔ Symbol) |\n| Many low-confidence | Query has novel types | Manually annotate low-confidence cells |\n| Poor mapping | Query too different | Consider retraining with combined data |\n| Memory error | Large query | Process in batches |\n| Version mismatch | Different scvi-tools version | Use same version as reference training |\n\n## Key References\n\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n","bio-research/skills/scvi-tools/references/scrna_integration.md":"# scRNA-seq Integration with scVI and scANVI\n\nThis reference covers batch correction and dataset integration using scVI (unsupervised) and scANVI (semi-supervised with cell type labels).\n\n## Overview\n\nSingle-cell datasets often have batch effects from:\n- Different donors/patients\n- Different experimental batches\n- Different technologies (10x v2 vs v3)\n- Different studies\n\nscVI and scANVI learn a shared latent space where batch effects are removed while biological variation is preserved.\n\n## When to Use Which Model\n\n| Model | Use When | Labels Needed |\n|-------|----------|---------------|\n| **scVI** | No labels available, exploratory analysis | No |\n| **scANVI** | Have partial/full labels, want better preservation | Yes (partial OK) |\n\n## scVI Integration Workflow\n\n### Step 1: Prepare Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load datasets\nadata1 = sc.read_h5ad(\"dataset1.h5ad\")\nadata2 = sc.read_h5ad(\"dataset2.h5ad\")\n\n# Add batch annotation\nadata1.obs[\"batch\"] = \"batch1\"\nadata2.obs[\"batch\"] = \"batch2\"\n\n# Concatenate\nadata = sc.concat([adata1, adata2], label=\"batch\")\n\n# Ensure we have raw counts\n# If data is normalized, recover from .raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection Across Batches\n\n```python\n# Select HVGs considering batch\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train scVI\n\n```python\n# Register data with scVI\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\n# Create model\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,          # Latent dimensions\n    n_layers=2,           # Encoder/decoder depth\n    gene_likelihood=\"nb\"  # negative binomial (or \"zinb\")\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Plot training history\nmodel.history[\"elbo_train\"].plot()\n```\n\n### Step 4: Get Integrated Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_scVI\"] = model.get_latent_representation()\n\n# Use for clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_scVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\n# Visualize integration\nsc.pl.umap(adata, color=[\"batch\", \"leiden\"], ncols=2)\n```\n\n### Step 5: Save Model\n\n```python\n# Save model for later use\nmodel.save(\"scvi_model/\")\n\n# Load model\nmodel = scvi.model.SCVI.load(\"scvi_model/\", adata=adata)\n```\n\n## scANVI Integration Workflow\n\nscANVI extends scVI with cell type labels for better biological preservation.\n\n### Step 1: Prepare Data with Labels\n\n```python\n# Labels should be in adata.obs\n# Use \"Unknown\" for unlabeled cells\nprint(adata.obs[\"cell_type\"].value_counts())\n\n# For partially labeled data\n# Mark unlabeled cells\nadata.obs[\"cell_type_scanvi\"] = adata.obs[\"cell_type\"].copy()\n# adata.obs.loc[unlabeled_mask, \"cell_type_scanvi\"] = \"Unknown\"\n```\n\n### Step 2: Option A - Train scANVI from Scratch\n\n```python\n# Setup for scANVI\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"\n)\n\n# Create model\nscanvi_model = scvi.model.SCANVI(\n    adata,\n    n_latent=30,\n    n_layers=2\n)\n\n# Train\nscanvi_model.train(max_epochs=200)\n```\n\n### Step 2: Option B - Initialize scANVI from scVI (Recommended)\n\n```python\n# First train scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nscvi_model = scvi.model.SCVI(adata, n_latent=30)\nscvi_model.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_model = scvi.model.SCANVI.from_scvi_model(\n    scvi_model,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"  # For partially labeled data\n)\n\n# Fine-tune scANVI (fewer epochs needed)\nscanvi_model.train(max_epochs=50)\n```\n\n### Step 3: Get Results\n\n```python\n# Latent representation\nadata.obsm[\"X_scANVI\"] = scanvi_model.get_latent_representation()\n\n# Predicted labels for unlabeled cells\npredictions = scanvi_model.predict()\nadata.obs[\"predicted_cell_type\"] = predictions\n\n# Prediction probabilities\nsoft_predictions = scanvi_model.predict(soft=True)\n\n# Visualization\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=[\"batch\", \"cell_type\", \"predicted_cell_type\"])\n```\n\n## Comparing Integration Quality\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Before integration (on PCA)\nsc.pp.pca(adata)\nsc.pl.pca(adata, color=\"batch\", ax=axes[0], title=\"Before (PCA)\", show=False)\n\n# After scVI\nsc.pp.neighbors(adata, use_rep=\"X_scVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[1], title=\"After scVI\", show=False)\n\n# After scANVI\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[2], title=\"After scANVI\", show=False)\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics (scib)\n\n```python\n# pip install scib-metrics\n\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"batch\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_pca\", \"X_scVI\", \"X_scANVI\"]\n)\n\nbm.benchmark()\nbm.plot_results_table()\n```\n\n## Differential Expression\n\nscVI provides differential expression that accounts for batch effects:\n\n```python\n# DE between groups\nde_results = model.differential_expression(\n    groupby=\"cell_type\",\n    group1=\"T cells\",\n    group2=\"B cells\"\n)\n\n# Filter significant\nde_sig = de_results[\n    (de_results[\"is_de_fdr_0.05\"] == True) &\n    (abs(de_results[\"lfc_mean\"]) > 1)\n]\n\nprint(de_sig.head(20))\n```\n\n## Advanced: Multiple Categorical Covariates\n\n```python\n# Include additional covariates beyond batch\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Training Tips\n\n### For Large Datasets (>100k cells)\n\n```python\nmodel.train(\n    max_epochs=100,      # Fewer epochs needed\n    batch_size=256,      # Larger batches\n    train_size=0.9,      # Less validation\n    early_stopping=True\n)\n```\n\n### For Small Datasets (<10k cells)\n\n```python\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,         # Smaller latent space\n    n_layers=1,          # Simpler model\n    dropout_rate=0.2     # More regularization\n)\n\nmodel.train(\n    max_epochs=400,\n    batch_size=64\n)\n```\n\n### Monitoring Training\n\n```python\n# Check training curves\nimport matplotlib.pyplot as plt\n\nfig, ax = plt.subplots()\nax.plot(model.history[\"elbo_train\"], label=\"Train\")\nax.plot(model.history[\"elbo_validation\"], label=\"Validation\")\nax.set_xlabel(\"Epoch\")\nax.set_ylabel(\"ELBO\")\nax.legend()\n\n# Should see convergence without overfitting\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_datasets(\n    adatas,\n    batch_key=\"batch\",\n    labels_key=None,\n    n_top_genes=2000,\n    n_latent=30\n):\n    \"\"\"\n    Integrate multiple scRNA-seq datasets.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {batch_name: AnnData}\n    batch_key : str\n        Key for batch annotation\n    labels_key : str, optional\n        Key for cell type labels (uses scANVI if provided)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    AnnData with integrated representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add batch labels and concatenate\n    for batch_name, adata in adatas.items():\n        adata.obs[batch_key] = batch_name\n    \n    adata = sc.concat(list(adatas.values()), label=batch_key)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Train model\n    if labels_key and labels_key in adata.obs.columns:\n        # Use scANVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        scvi_model = scvi.model.SCVI(adata, n_latent=n_latent)\n        scvi_model.train(max_epochs=200)\n        \n        model = scvi.model.SCANVI.from_scvi_model(\n            scvi_model,\n            labels_key=labels_key,\n            unlabeled_category=\"Unknown\"\n        )\n        model.train(max_epochs=50)\n        rep_key = \"X_scANVI\"\n    else:\n        # Use scVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        model = scvi.model.SCVI(adata, n_latent=n_latent)\n        model.train(max_epochs=200)\n        rep_key = \"X_scVI\"\n    \n    # Add representation\n    adata.obsm[rep_key] = model.get_latent_representation()\n    \n    # Compute neighbors and UMAP\n    sc.pp.neighbors(adata, use_rep=rep_key)\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"study1\": sc.read_h5ad(\"study1.h5ad\"),\n    \"study2\": sc.read_h5ad(\"study2.h5ad\"),\n    \"study3\": sc.read_h5ad(\"study3.h5ad\")\n}\n\nadata_integrated, model = integrate_datasets(\n    adatas,\n    labels_key=\"cell_type\"\n)\n\nsc.pl.umap(adata_integrated, color=[\"batch\", \"leiden\", \"cell_type\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Batches not mixing | Too few shared genes | Use more HVGs, check gene overlap |\n| Over-correction | Biological variation removed | Use scANVI with labels |\n| Training diverges | Learning rate too high | Reduce lr, increase batch_size |\n| NaN loss | Bad data | Check for all-zero cells/genes |\n| Memory error | Too many cells | Reduce batch_size, use GPU |\n","bio-research/skills/scvi-tools/references/spatial_deconvolution.md":"# Spatial Transcriptomics Analysis\n\nThis reference covers spatial transcriptomics analysis using scvi-tools methods: DestVI for deconvolution and resolVI for building spatial models.\n\n## Overview\n\nSpatial transcriptomics technologies like Visium capture gene expression at defined spatial locations, but many platforms have multi-cellular resolution. scvi-tools provides two main approaches:\n\n- **DestVI**: Deconvolution - estimates cell type proportions at each spot using a single-cell reference\n- **resolVI**: Builds a spatial model that learns gene expression patterns accounting for spatial context\n\n## Available Methods in scvi-tools\n\n| Method | Description | Use Case |\n|--------|-------------|----------|\n| **DestVI** | Variational inference for deconvolution | Estimate cell type proportions per spot |\n| **resolVI** | Spatial gene expression model | Learn spatially-aware representations |\n| **CondSCVI** | Reference model for DestVI | Required for DestVI workflow |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport squidpy as sq\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n---\n\n## Part 1: DestVI Deconvolution\n\n### Step 1: Load Spatial Data\n\n```python\n# Load Visium data\nadata_spatial = sc.read_visium(\"spaceranger_output/\")\n\n# Check structure\nprint(f\"Spots: {adata_spatial.n_obs}\")\nprint(f\"Genes: {adata_spatial.n_vars}\")\nprint(f\"Spatial coordinates: {adata_spatial.obsm['spatial'].shape}\")\n\n# Basic QC\nsc.pp.calculate_qc_metrics(adata_spatial, inplace=True)\nadata_spatial = adata_spatial[adata_spatial.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n```\n\n### Step 2: Load Single-Cell Reference\n\n```python\n# Load reference single-cell data\nadata_sc = sc.read_h5ad(\"reference_scrna.h5ad\")\n\n# Requirements:\n# - Raw counts\n# - Cell type annotations\nprint(f\"Reference cells: {adata_sc.n_obs}\")\nprint(f\"Cell types: {adata_sc.obs['cell_type'].nunique()}\")\nprint(adata_sc.obs['cell_type'].value_counts())\n\n# Store counts\nadata_sc.layers[\"counts\"] = adata_sc.X.copy()\n```\n\n### Step 3: Prepare Data\n\n```python\n# DestVI requires gene overlap between reference and spatial\ncommon_genes = adata_sc.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\nadata_sc = adata_sc[:, common_genes].copy()\nadata_spatial = adata_spatial[:, common_genes].copy()\n```\n\n### Step 4: Train Reference Model (CondSCVI)\n\n```python\n# Train conditional scVI on reference data\nscvi.model.CondSCVI.setup_anndata(\n    adata_sc,\n    layer=\"counts\",\n    labels_key=\"cell_type\"\n)\n\nsc_model = scvi.model.CondSCVI(\n    adata_sc,\n    n_latent=20\n)\n\nsc_model.train(max_epochs=200)\nsc_model.history['elbo_train'].plot()\n```\n\n### Step 5: Train DestVI\n\n```python\n# Setup spatial data\nscvi.model.DestVI.setup_anndata(\n    adata_spatial,\n    layer=\"counts\"\n)\n\n# Train DestVI using reference model\nspatial_model = scvi.model.DestVI.from_rna_model(\n    adata_spatial,\n    sc_model\n)\n\nspatial_model.train(max_epochs=500)\n```\n\n### Step 6: Get Cell Type Proportions\n\n```python\n# Infer cell type proportions at each spot\nproportions = spatial_model.get_proportions()\n\n# Add to adata\nfor ct in adata_sc.obs['cell_type'].unique():\n    adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=[f'prop_{ct}' for ct in adata_sc.obs['cell_type'].unique()[:6]],\n    ncols=3\n)\n```\n\n---\n\n## Part 2: resolVI Spatial Model\n\nresolVI is a semi-supervised method that learns cell type assignments and spatially-aware representations directly from spatial data, optionally using initial cell type predictions.\n\n**Note**: resolVI is in `scvi.external` (not `scvi.model`).\n\n### Step 1: Prepare Spatial Data\n\n```python\n# Load and preprocess\nadata = sc.read_visium(\"spaceranger_output/\")\n\n# QC\nsc.pp.calculate_qc_metrics(adata, inplace=True)\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\"\n)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# Optional: Get initial cell type predictions (e.g., from a reference)\n# adata.obs[\"predicted_celltype\"] = ...\n```\n\n### Step 2: Setup and Train resolVI\n\n```python\n# Setup for resolVI (note: scvi.external, not scvi.model)\nscvi.external.RESOLVI.setup_anndata(\n    adata,\n    labels_key=\"predicted_celltype\",  # Initial cell type predictions\n    layer=\"counts\"\n)\n\n# Create model (semisupervised=True uses the labels)\nmodel = scvi.external.RESOLVI(adata, semisupervised=True)\n\n# Train\nmodel.train(max_epochs=50)\n```\n\n### Step 3: Get Cell Type Predictions\n\n```python\n# Get refined cell type predictions\n# soft=True returns probabilities, soft=False returns labels\ncell_type_probs = model.predict(adata, num_samples=3, soft=True)\ncell_type_labels = model.predict(adata, num_samples=3, soft=False)\n\nadata.obs[\"resolvi_celltype\"] = cell_type_labels\n\n# Visualize\nsq.pl.spatial_scatter(adata, color=\"resolvi_celltype\")\n```\n\n### Step 4: Get Latent Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_resolVI\"] = model.get_latent_representation(adata)\n\n# Cluster based on spatial representation\nsc.pp.neighbors(adata, use_rep=\"X_resolVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize clusters spatially\nsq.pl.spatial_scatter(adata, color=\"leiden\")\n```\n\n### Step 5: Differential Expression\n\n```python\n# DE between cell types using resolVI\nde_results = model.differential_expression(\n    adata,\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\"\n)\n\nprint(de_results.head(20))\n```\n\n### Step 6: Niche Abundance Analysis\n\n```python\n# Analyze how cell type neighborhoods differ between conditions\n# Requires spatial neighbor graph\nsq.gr.spatial_neighbors(adata, coord_type=\"generic\")\n\nniche_results = model.differential_niche_abundance(\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\",\n    neighbor_key=\"spatial_neighbors\"\n)\n```\n\n### Step 7: Query Mapping (Transfer to New Data)\n\n```python\n# Map new spatial data to trained model\nquery_adata = sc.read_visium(\"new_sample/\")\nquery_adata.layers[\"counts\"] = query_adata.X.copy()\n\n# Prepare and load query\nmodel.prepare_query_anndata(query_adata, reference_model=model)\nquery_model = model.load_query_data(query_adata, reference_model=model)\n\n# Fine-tune on query\nquery_model.train(max_epochs=20)\n\n# Get predictions for query\nquery_labels = query_model.predict(query_adata, num_samples=3, soft=False)\n```\n\n---\n\n## Visualization\n\n### Spatial Proportions\n\n```python\nimport matplotlib.pyplot as plt\n\n# Plot multiple cell type proportions\ncell_types = ['T_cell', 'Tumor', 'Fibroblast', 'Macrophage']\nfig, axes = plt.subplots(2, 2, figsize=(12, 12))\n\nfor ax, ct in zip(axes.flat, cell_types):\n    sq.pl.spatial_scatter(\n        adata_spatial,\n        color=f'prop_{ct}',\n        ax=ax,\n        title=ct,\n        show=False\n    )\n\nplt.tight_layout()\n```\n\n### Enrichment by Region\n\n```python\n# Cluster spatial data\nsc.pp.neighbors(adata_spatial)\nsc.tl.leiden(adata_spatial, resolution=0.5)\n\n# Compare proportions across regions\nimport pandas as pd\n\ncell_types = adata_sc.obs['cell_type'].unique()\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nregion_props = adata_spatial.obs.groupby('leiden')[prop_cols].mean()\nprint(region_props)\n\n# Heatmap\nimport seaborn as sns\nplt.figure(figsize=(10, 6))\nsns.heatmap(region_props.T, annot=True, cmap='viridis')\nplt.title('Cell Type Proportions by Region')\n```\n\n### Spatial Cell Type Interactions\n\n```python\n# Neighborhood enrichment using cell type assignments\nsq.gr.spatial_neighbors(adata_spatial)\n\n# Create \"dominant cell type\" annotation\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nadata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\nadata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n# Co-occurrence analysis\nsq.gr.co_occurrence(adata_spatial, cluster_key='dominant_type')\nsq.pl.co_occurrence(adata_spatial, cluster_key='dominant_type')\n```\n\n---\n\n## Complete DestVI Pipeline\n\n```python\ndef deconvolve_spatial(\n    adata_spatial,\n    adata_ref,\n    cell_type_key=\"cell_type\",\n    n_latent=20,\n    max_epochs_ref=200,\n    max_epochs_spatial=500\n):\n    \"\"\"\n    Perform spatial deconvolution using DestVI.\n\n    Parameters\n    ----------\n    adata_spatial : AnnData\n        Spatial transcriptomics data\n    adata_ref : AnnData\n        Single-cell reference with cell type annotations\n    cell_type_key : str\n        Column in adata_ref.obs with cell type labels\n    n_latent : int\n        Latent dimensions\n    max_epochs_ref : int\n        Training epochs for reference model\n    max_epochs_spatial : int\n        Training epochs for spatial model\n\n    Returns\n    -------\n    AnnData with cell type proportions in obs\n    \"\"\"\n    import scvi\n\n    # Get common genes\n    common_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\n    adata_ref = adata_ref[:, common_genes].copy()\n    adata_spatial = adata_spatial[:, common_genes].copy()\n\n    # Ensure counts are stored\n    if \"counts\" not in adata_ref.layers:\n        adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    if \"counts\" not in adata_spatial.layers:\n        adata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n\n    # Train reference model\n    scvi.model.CondSCVI.setup_anndata(\n        adata_ref,\n        layer=\"counts\",\n        labels_key=cell_type_key\n    )\n\n    ref_model = scvi.model.CondSCVI(adata_ref, n_latent=n_latent)\n    ref_model.train(max_epochs=max_epochs_ref)\n\n    # Train spatial model\n    scvi.model.DestVI.setup_anndata(adata_spatial, layer=\"counts\")\n\n    spatial_model = scvi.model.DestVI.from_rna_model(\n        adata_spatial,\n        ref_model\n    )\n    spatial_model.train(max_epochs=max_epochs_spatial)\n\n    # Get proportions\n    proportions = spatial_model.get_proportions()\n\n    cell_types = adata_ref.obs[cell_type_key].unique()\n    for ct in cell_types:\n        adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n    # Add dominant type\n    prop_cols = [f'prop_{ct}' for ct in cell_types]\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n    return adata_spatial, ref_model, spatial_model\n\n# Usage\nadata_spatial, ref_model, spatial_model = deconvolve_spatial(\n    adata_spatial,\n    adata_sc,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=['dominant_type', 'prop_T_cell', 'prop_Tumor'],\n    ncols=3\n)\n```\n\n---\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Few common genes | Different gene naming | Convert gene names (Ensembl ↔ Symbol) |\n| Poor deconvolution | Reference doesn't match | Use tissue-matched reference |\n| All spots same type | Over-smoothing | Adjust model parameters, check reference diversity |\n| NaN proportions | Missing cell types | Ensure all expected types in reference |\n| Training slow | Large spatial dataset | Reduce max_epochs, increase batch_size |\n\n## Key References\n\n- Lopez et al. (2022) \"DestVI identifies continuums of cell types in spatial transcriptomics data\"\n- [scvi-tools spatial tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n","bio-research/skills/scvi-tools/references/troubleshooting.md":"# Troubleshooting Guide for scvi-tools\n\nThis reference provides a consolidated guide for diagnosing and resolving common issues across all scvi-tools models.\n\n## Quick Diagnosis\n\n| Symptom | Likely Cause | Quick Fix |\n|---------|--------------|-----------|\n| \"X should contain integers\" | Normalized data in X | Use `layer=\"counts\"` in setup |\n| CUDA out of memory | GPU memory exhausted | Reduce `batch_size`, use smaller model |\n| Training loss is NaN | Bad data or learning rate | Check for all-zero cells/genes |\n| Batches not mixing | Too few shared features | Increase HVGs, check gene overlap |\n| Over-correction | Too aggressive integration | Use scANVI with labels |\n| Import error | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Data Format Issues\n\n### Issue: CITE-seq protein data from Seurat is CLR-normalized\n\n**Cause**: Seurat's `NormalizeData(normalization.method = \"CLR\")` transforms raw ADT counts. totalVI requires raw integer counts for protein data.\n\n**Symptoms**:\n- Protein values are not integers\n- Protein values contain negative numbers\n- Model training produces poor results\n\n**Solution**:\n```python\n# Check if protein data is normalized\nprotein = adata.obsm[\"protein_expression\"]\nprint(f\"Min value: {protein.min()}\")  # Should be 0 if raw counts\nprint(f\"Contains integers: {np.allclose(protein, protein.astype(int))}\")\n\n# If importing from Seurat, use the raw counts assay, not the normalized one\n# In R/Seurat, export the RNA assay's counts slot, not the data slot\n# GetAssayData(seurat_obj, assay = \"ADT\", slot = \"counts\")\n```\n\n### Issue: \"layer not found\" or \"X should contain integers\"\n\n**Cause**: scvi-tools requires raw integer counts, not normalized data.\n\n**Solution**:\n```python\n# Check if X contains integers\nimport numpy as np\nprint(f\"X max: {adata.X.max()}\")\nprint(f\"Contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\n\n# If normalized, recover from raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Or use existing counts layer\nadata.layers[\"counts\"] = adata.X.copy()\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n```\n\n### Issue: Sparse matrix errors\n\n**Cause**: Incompatible sparse format or dense array expected.\n\n**Solution**:\n```python\nfrom scipy.sparse import csr_matrix\n\n# Convert to CSR format (most compatible)\nif hasattr(adata.X, 'toarray'):\n    adata.X = csr_matrix(adata.X)\n\n# Or convert to dense if small enough\nif adata.n_obs * adata.n_vars < 1e8:\n    adata.X = adata.X.toarray()\n```\n\n### Issue: NaN or Inf values in data\n\n**Cause**: Missing values or corrupted data.\n\n**Solution**:\n```python\nimport numpy as np\n\n# Check for issues\nX = adata.X.toarray() if hasattr(adata.X, 'toarray') else adata.X\nprint(f\"NaN count: {np.isnan(X).sum()}\")\nprint(f\"Inf count: {np.isinf(X).sum()}\")\nprint(f\"Negative count: {(X < 0).sum()}\")\n\n# Replace NaN/Inf with 0\nX = np.nan_to_num(X, nan=0, posinf=0, neginf=0)\nX = np.clip(X, 0, None)  # Ensure non-negative\nadata.X = csr_matrix(X)\n```\n\n### Issue: batch_key or labels_key not found\n\n**Cause**: Column name mismatch in adata.obs.\n\n**Solution**:\n```python\n# List available columns\nprint(adata.obs.columns.tolist())\n\n# Check for similar names\nfor col in adata.obs.columns:\n    if 'batch' in col.lower() or 'sample' in col.lower():\n        print(f\"Potential batch column: {col}\")\n```\n\n## GPU and Memory Issues\n\n### Issue: CUDA out of memory\n\n**Cause**: Model or batch doesn't fit in GPU memory.\n\n**Solutions** (try in order):\n\n```python\n# 1. Reduce batch size\nmodel.train(batch_size=64)  # Default is 128\n\n# 2. Use smaller model architecture\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,   # Default is 10-30\n    n_layers=1     # Default is 1-2\n)\n\n# 3. Subset to fewer genes\nsc.pp.highly_variable_genes(adata, n_top_genes=1500)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# 4. Clear GPU cache between models\nimport torch\ntorch.cuda.empty_cache()\n\n# 5. Use CPU if GPU is too small\nmodel.train(accelerator=\"cpu\")\n```\n\n### Issue: No GPU detected\n\n**Cause**: CUDA not installed or version mismatch.\n\n**Diagnosis**:\n```python\nimport torch\nprint(f\"CUDA available: {torch.cuda.is_available()}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"CUDA version: {torch.version.cuda}\")\n```\n\n**Solution**:\n```bash\n# Check system CUDA\nnvidia-smi\nnvcc --version\n\n# Reinstall PyTorch with matching CUDA\npip install torch --index-url https://download.pytorch.org/whl/cu118  # For CUDA 11.8\n# Or\npip install torch --index-url https://download.pytorch.org/whl/cu121  # For CUDA 12.1\n```\n\n### Issue: Memory error with large datasets\n\n**Cause**: Dataset too large for system RAM.\n\n**Solutions**:\n```python\n# 1. Process in chunks (for very large data)\n# Subsample for initial exploration\nadata_sample = adata[np.random.choice(adata.n_obs, 50000, replace=False)].copy()\n\n# 2. Use backed mode for AnnData\nadata = sc.read_h5ad(\"large_data.h5ad\", backed='r')\n\n# 3. Reduce gene count aggressively\nadata = adata[:, adata.var['highly_variable']].copy()\n```\n\n## Training Issues\n\n### Issue: Training loss is NaN\n\n**Cause**: Numerical instability, bad data, or learning rate issues.\n\n**Solutions**:\n```python\n# 1. Check for problematic cells/genes\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_genes(adata, min_cells=3)\n\n# 2. Remove cells with zero counts\nadata = adata[adata.X.sum(axis=1) > 0].copy()\n\n# 3. Use gradient clipping (built into scvi-tools)\nmodel.train(max_epochs=200, early_stopping=True)\n```\n\n### Issue: Training doesn't converge\n\n**Cause**: Insufficient epochs, poor hyperparameters, or data issues.\n\n**Solutions**:\n```python\n# 1. Train longer\nmodel.train(max_epochs=400)\n\n# 2. Check training curves\nimport matplotlib.pyplot as plt\nplt.plot(model.history['elbo_train'])\nplt.plot(model.history['elbo_validation'])\nplt.xlabel('Epoch')\nplt.ylabel('ELBO')\nplt.legend(['Train', 'Validation'])\n\n# 3. Adjust model size for data size\n# Small data (<10k cells): smaller model\nmodel = scvi.model.SCVI(adata, n_latent=10, n_layers=1, dropout_rate=0.2)\n\n# Large data (>100k cells): can use larger model\nmodel = scvi.model.SCVI(adata, n_latent=30, n_layers=2)\n```\n\n### Issue: Overfitting (validation loss increases)\n\n**Cause**: Model too complex or trained too long.\n\n**Solutions**:\n```python\n# 1. Enable early stopping\nmodel.train(early_stopping=True, early_stopping_patience=10)\n\n# 2. Add regularization\nmodel = scvi.model.SCVI(adata, dropout_rate=0.2)\n\n# 3. Reduce model complexity\nmodel = scvi.model.SCVI(adata, n_layers=1)\n```\n\n## Integration Issues\n\n### Issue: Batches don't mix\n\n**Cause**: Too few shared features, strong biological differences, or technical issues.\n\n**Solutions**:\n```python\n# 1. Check gene overlap between batches\nfor batch in adata.obs['batch'].unique():\n    batch_genes = adata[adata.obs['batch'] == batch].var_names\n    print(f\"{batch}: {len(batch_genes)} genes\")\n\n# 2. Use more HVGs\nsc.pp.highly_variable_genes(adata, n_top_genes=4000, batch_key=\"batch\")\n\n# 3. Train longer\nmodel.train(max_epochs=400)\n\n# 4. Increase latent dimensions\nmodel = scvi.model.SCVI(adata, n_latent=50)\n```\n\n### Issue: Over-correction (biological signal lost)\n\n**Cause**: Model removes too much variation.\n\n**Solutions**:\n```python\n# 1. Use scANVI with cell type labels\nscvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\n\n# 2. Reduce model capacity\nmodel = scvi.model.SCVI(adata, n_latent=10)\n\n# 3. Use categorical covariates instead of batch_key\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    categorical_covariate_keys=[\"batch\"]  # Less aggressive than batch_key\n)\n```\n\n### Issue: One batch dominates clusters\n\n**Cause**: Unbalanced batch sizes or incomplete integration.\n\n**Solutions**:\n```python\n# 1. Check batch distribution\nprint(adata.obs['batch'].value_counts())\n\n# 2. Subsample to balance\nfrom sklearn.utils import resample\nbalanced = []\nmin_size = adata.obs['batch'].value_counts().min()\nfor batch in adata.obs['batch'].unique():\n    batch_data = adata[adata.obs['batch'] == batch]\n    balanced.append(batch_data[np.random.choice(len(batch_data), min_size, replace=False)])\nadata_balanced = sc.concat(balanced)\n```\n\n## Model-Specific Issues\n\n### scANVI: Poor label transfer\n\n**Solutions**:\n```python\n# 1. Check label distribution\nprint(adata.obs['cell_type'].value_counts())\n\n# 2. Use Unknown for low-confidence cells\nadata.obs.loc[adata.obs['prediction_score'] < 0.5, 'cell_type'] = 'Unknown'\n\n# 3. Train scVI longer before scANVI\nscvi_model.train(max_epochs=300)\nscanvi_model = scvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\nscanvi_model.train(max_epochs=100)\n```\n\n### totalVI: Noisy protein signal\n\n**Solutions**:\n```python\n# 1. Use denoised protein values\n_, protein_denoised = model.get_normalized_expression(return_mean=True)\n\n# 2. Check isotype controls\n# Isotype controls should have low expression\nfor i, name in enumerate(adata.uns[\"protein_names\"]):\n    if 'isotype' in name.lower():\n        print(f\"{name}: mean={adata.obsm['protein_expression'][:, i].mean():.1f}\")\n```\n\n### PeakVI: Poor clustering\n\n**Solutions**:\n```python\n# 1. Use more variable peaks\nfrom sklearn.feature_selection import VarianceThreshold\nselector = VarianceThreshold(threshold=0.05)\nadata = adata[:, selector.fit(adata.X).get_support()].copy()\n\n# 2. Binarize data\nadata.X = (adata.X > 0).astype(np.float32)\n```\n\n### MultiVI: Different cell counts between modalities\n\n**Solutions**:\n```python\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n### DestVI: Poor deconvolution\n\n**Solutions**:\n```python\n# 1. Check gene overlap\ncommon_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")  # Should be >1000\n\n# 2. Use tissue-matched reference\n# Reference should contain all cell types expected in spatial data\n\n# 3. Check reference quality\nprint(adata_ref.obs['cell_type'].value_counts())\n```\n\n## Version Compatibility\n\n### scvi-tools 1.x vs 0.x API changes\n\nKey differences:\n```python\n# 0.x API\nscvi.data.setup_anndata(adata, ...)\n\n# 1.x API (current)\nscvi.model.SCVI.setup_anndata(adata, ...)\n```\n\n### Check versions\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n```\n\n### Recommended versions (as of late 2024)\n```\nscvi-tools>=1.0.0\nscanpy>=1.9.0\nanndata>=0.9.0\ntorch>=2.0.0\n```\n\n## Getting Help\n\n1. **Check documentation**: https://docs.scvi-tools.org/\n2. **GitHub issues**: https://github.com/scverse/scvi-tools/issues\n3. **Discourse forum**: https://discourse.scverse.org/\n4. **Tutorials**: https://docs.scvi-tools.org/en/stable/tutorials/index.html\n\nWhen reporting issues, include:\n- scvi-tools version (`scvi.__version__`)\n- Python version\n- Full error traceback\n- Minimal reproducible example\n","bio-research/skills/single-cell-rna-qc/SKILL.md":"---\nname: single-cell-rna-qc\ndescription: Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations. Use when users request QC analysis, filtering low-quality cells, assessing data quality, or following scverse/scanpy best practices for single-cell analysis.\n---\n\n# Single-Cell RNA-seq Quality Control\n\nAutomated QC workflow for single-cell RNA-seq data following scverse best practices.\n\n## When to Use This Skill\n\nUse when users:\n- Request quality control or QC on single-cell RNA-seq data\n- Want to filter low-quality cells or assess data quality\n- Need QC visualizations or metrics\n- Ask to follow scverse/scanpy best practices\n- Request MAD-based filtering or outlier detection\n\n**Supported input formats:**\n- `.h5ad` files (AnnData format from scanpy/Python workflows)\n- `.h5` files (10X Genomics Cell Ranger output)\n\n**Default recommendation**: Use Approach 1 (complete pipeline) unless the user has specific custom requirements or explicitly requests non-standard filtering logic.\n\n## Approach 1: Complete QC Pipeline (Recommended for Standard Workflows)\n\nFor standard QC following scverse best practices, use the convenience script `scripts/qc_analysis.py`:\n\n```bash\npython3 scripts/qc_analysis.py input.h5ad\n# or for 10X Genomics .h5 files:\npython3 scripts/qc_analysis.py raw_feature_bc_matrix.h5\n```\n\nThe script automatically detects the file format and loads it appropriately.\n\n**When to use this approach:**\n- Standard QC workflow with adjustable thresholds (all cells filtered the same way)\n- Batch processing multiple datasets\n- Quick exploratory analysis\n- User wants the \"just works\" solution\n\n**Requirements:** anndata, scanpy, scipy, matplotlib, seaborn, numpy\n\n**Parameters:**\n\nCustomize filtering thresholds and gene patterns using command-line parameters:\n- `--output-dir` - Output directory\n- `--mad-counts`, `--mad-genes`, `--mad-mt` - MAD thresholds for counts/genes/MT%\n- `--mt-threshold` - Hard mitochondrial % cutoff\n- `--min-cells` - Gene filtering threshold\n- `--mt-pattern`, `--ribo-pattern`, `--hb-pattern` - Gene name patterns for different species\n\nUse `--help` to see current default values.\n\n**Outputs:**\n\nAll files are saved to `<input_basename>_qc_results/` directory by default (or to the directory specified by `--output-dir`):\n- `qc_metrics_before_filtering.png` - Pre-filtering visualizations\n- `qc_filtering_thresholds.png` - MAD-based threshold overlays\n- `qc_metrics_after_filtering.png` - Post-filtering quality metrics\n- `<input_basename>_filtered.h5ad` - Clean, filtered dataset ready for downstream analysis\n- `<input_basename>_with_qc.h5ad` - Original data with QC annotations preserved\n\nIf copying outputs for user access, copy individual files (not the entire directory) so users can preview them directly.\n\n### Workflow Steps\n\nThe script performs the following steps:\n\n1. **Calculate QC metrics** - Count depth, gene detection, mitochondrial/ribosomal/hemoglobin content\n2. **Apply MAD-based filtering** - Permissive outlier detection using MAD thresholds for counts/genes/MT%\n3. **Filter genes** - Remove genes detected in few cells\n4. **Generate visualizations** - Comprehensive before/after plots with threshold overlays\n\n## Approach 2: Modular Building Blocks (For Custom Workflows)\n\nFor custom analysis workflows or non-standard requirements, use the modular utility functions from `scripts/qc_core.py` and `scripts/qc_plotting.py`:\n\n```python\n# Run from scripts/ directory, or add scripts/ to sys.path if needed\nimport anndata as ad\nfrom qc_core import calculate_qc_metrics, detect_outliers_mad, filter_cells\nfrom qc_plotting import plot_qc_distributions  # Only if visualization needed\n\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n# ... custom analysis logic here\n```\n\n**When to use this approach:**\n- Different workflow needed (skip steps, change order, apply different thresholds to subsets)\n- Conditional logic (e.g., filter neurons differently than other cells)\n- Partial execution (only metrics/visualization, no filtering)\n- Integration with other analysis steps in a larger pipeline\n- Custom filtering criteria beyond what command-line params support\n\n**Available utility functions:**\n\nFrom `qc_core.py` (core QC operations):\n- `calculate_qc_metrics(adata, mt_pattern, ribo_pattern, hb_pattern, inplace=True)` - Calculate QC metrics and annotate adata\n- `detect_outliers_mad(adata, metric, n_mads, verbose=True)` - MAD-based outlier detection, returns boolean mask\n- `apply_hard_threshold(adata, metric, threshold, operator='>', verbose=True)` - Apply hard cutoffs, returns boolean mask\n- `filter_cells(adata, mask, inplace=False)` - Apply boolean mask to filter cells\n- `filter_genes(adata, min_cells=20, min_counts=None, inplace=True)` - Filter genes by detection\n- `print_qc_summary(adata, label='')` - Print summary statistics\n\nFrom `qc_plotting.py` (visualization):\n- `plot_qc_distributions(adata, output_path, title)` - Generate comprehensive QC plots\n- `plot_filtering_thresholds(adata, outlier_masks, thresholds, output_path)` - Visualize filtering thresholds\n- `plot_qc_after_filtering(adata, output_path)` - Generate post-filtering plots\n\n**Example custom workflows:**\n\n**Example 1: Only calculate metrics and visualize, don't filter yet**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\nplot_qc_distributions(adata, 'qc_before.png', title='Initial QC')\nprint_qc_summary(adata, label='Before filtering')\n```\n\n**Example 2: Apply only MT% filtering, keep other metrics permissive**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Only filter high MT% cells\nhigh_mt = apply_hard_threshold(adata, 'pct_counts_mt', 10, operator='>')\nadata_filtered = filter_cells(adata, ~high_mt)\nadata_filtered.write('filtered.h5ad')\n```\n\n**Example 3: Different thresholds for different subsets**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Apply type-specific QC (assumes cell_type metadata exists)\nneurons = adata.obs['cell_type'] == 'neuron'\nother_cells = ~neurons\n\n# Neurons tolerate higher MT%, other cells use stricter threshold\nneuron_qc = apply_hard_threshold(adata[neurons], 'pct_counts_mt', 15, operator='>')\nother_qc = apply_hard_threshold(adata[other_cells], 'pct_counts_mt', 8, operator='>')\n```\n\n## Best Practices\n\n1. **Be permissive with filtering** - Default thresholds intentionally retain most cells to avoid losing rare populations\n2. **Inspect visualizations** - Always review before/after plots to ensure filtering makes biological sense\n3. **Consider dataset-specific factors** - Some tissues naturally have higher mitochondrial content (e.g., neurons, cardiomyocytes)\n4. **Check gene annotations** - Mitochondrial gene prefixes vary by species (mt- for mouse, MT- for human)\n5. **Iterate if needed** - QC parameters may need adjustment based on the specific experiment or tissue type\n\n## Reference Materials\n\nFor detailed QC methodology, parameter rationale, and troubleshooting guidance, see `references/scverse_qc_guidelines.md`. This reference provides:\n- Detailed explanations of each QC metric and why it matters\n- Rationale for MAD-based thresholds and why they're better than fixed cutoffs\n- Guidelines for interpreting QC visualizations (histograms, violin plots, scatter plots)\n- Species-specific considerations for gene annotations\n- When and how to adjust filtering parameters\n- Advanced QC considerations (ambient RNA correction, doublet detection)\n\nLoad this reference when users need deeper understanding of the methodology or when troubleshooting QC issues.\n\n## Next Steps After QC\n\nTypical downstream analysis steps:\n- Ambient RNA correction (SoupX, CellBender)\n- Doublet detection (scDblFinder)\n- Normalization (log-normalize, scran)\n- Feature selection and dimensionality reduction\n- Clustering and cell type annotation\n","bio-research/skills/single-cell-rna-qc/references/scverse_qc_guidelines.md":"# scverse Quality Control Guidelines\n\nThis document provides detailed information about quality control best practices for single-cell RNA-seq data, following the scverse ecosystem recommendations.\n\n## Quality Control Metrics\n\n### Count Depth (Total Counts)\n- **What it measures**: Total number of UMI/reads per cell\n- **Why it matters**: Low count cells may be empty droplets, debris, or poorly captured cells\n- **Typical range**: 500-50,000 counts per cell (varies by protocol)\n- **Red flags**: Bimodal distributions may indicate mixing of high and low-quality cells\n\n### Gene Detection (Genes per Cell)\n- **What it measures**: Number of genes with at least 1 count\n- **Why it matters**: Strongly correlates with count depth; low values indicate poor capture\n- **Typical range**: 200-5,000 genes per cell\n- **Red flags**: Very low values (<200) suggest technical failures\n\n### Mitochondrial Content\n- **What it measures**: Percentage of counts from mitochondrial genes\n- **Why it matters**: High MT% indicates cell stress, apoptosis, or lysed cells\n- **Typical range**: <5% for most tissues, up to 10-15% for metabolically active cells\n- **Species-specific patterns**:\n  - Mouse: Genes start with 'mt-' (e.g., mt-Nd1, mt-Co1)\n  - Human: Genes start with 'MT-' (e.g., MT-ND1, MT-CO1)\n- **Context matters**: Some cell types (cardiomyocytes, neurons) naturally have higher MT content\n\n### Ribosomal Content\n- **What it measures**: Percentage of counts from ribosomal protein genes\n- **Why it matters**: Can indicate cell state or contamination\n- **Patterns**: Genes start with 'Rpl'/'RPL' (large subunit) or 'Rps'/'RPS' (small subunit)\n- **Note**: High ribosomal content isn't always bad - metabolically active cells have more ribosomes\n\n### Hemoglobin Content\n- **What it measures**: Percentage of counts from hemoglobin genes\n- **Why it matters**: Indicates blood contamination in non-blood tissues\n- **Patterns**: Genes matching '^Hb[^(p)]' or '^HB[^(P)]' (excludes Hbp1/HBP1)\n- **When to use**: Particularly important for tissue samples (brain, liver, etc.)\n\n## MAD-Based Filtering Rationale\n\n### Why MAD Instead of Fixed Thresholds?\n\nFixed thresholds (e.g., \"remove cells with <500 genes\") fail because:\n- Different protocols yield different ranges\n- Different tissues have different characteristics\n- Different species have different gene counts\n- Fixed thresholds are arbitrary and not data-driven\n\nMAD (Median Absolute Deviation) is robust to outliers and adapts to your dataset:\n```\nMAD = median(|X - median(X)|)\nOutlier bounds = median ± n_MADs × MAD\n```\n\n### Recommended MAD Thresholds\n\nFollowing scverse best practices (deliberately permissive):\n\n**5 MADs for count depth (log-transformed)**\n- Very permissive to retain rare cell populations\n- Catches extreme outliers (empty droplets, debris)\n- Log transformation handles the typical right-skewed distribution\n\n**5 MADs for gene counts (log-transformed)**\n- Parallels count depth filtering\n- Most informative when combined with count filtering\n- Log transformation normalizes the distribution\n\n**3 MADs for mitochondrial percentage**\n- More stringent because high MT% strongly indicates dying cells\n- Uses raw percentages (not log-transformed)\n- Combined with hard threshold for extra stringency\n\n**Hard threshold: 8% mitochondrial content**\n- Additional filter beyond MAD-based detection\n- Conservative cutoff that works across most tissues\n- Adjust higher (10-15%) for metabolically active cell types\n\n### Why Be Permissive?\n\nThe default thresholds intentionally err on the side of keeping cells because:\n1. **Rare populations**: Stringent filtering may remove rare but viable cell types\n2. **Biological variation**: Some healthy cells naturally have extreme values\n3. **Reversibility**: Easier to filter more later than to recover lost cells\n4. **Downstream robustness**: Modern normalization methods handle moderate quality variation\n\n## Interpreting QC Visualizations\n\n### Histograms\n- **Bimodal distributions**: May indicate mixing of cell types or quality issues\n- **Long tails**: Common for count depth; MAD filtering handles this\n- **Sharp cutoffs**: May indicate prior filtering or technical artifacts\n\n### Violin Plots\n- Shows distribution shape and density\n- Median (line) and mean (diamond) should be similar for symmetric distributions\n- Wide distributions suggest high heterogeneity\n\n### Scatter Plots\n\n**Counts vs Genes (colored by MT%)**\n- Should show strong positive correlation (R² > 0.8 typical)\n- Points deviating from trend may be outliers\n- High MT% cells often cluster at low counts/genes\n\n**Counts vs MT%**\n- Negative correlation expected (dying cells have fewer counts)\n- Vertical stratification may indicate batch effects\n- Cells with high counts + high MT% are suspicious\n\n**Genes vs MT%**\n- Similar to counts vs MT%, but often weaker correlation\n- Useful for identifying cells with gene detection issues\n\n## Gene Filtering\n\nAfter filtering cells, remove genes detected in fewer than 20 cells:\n- **Why 20?**: Balances noise reduction with information retention\n- **Benefits**: Reduces dataset size, speeds up computation, removes noisy genes\n- **Trade-offs**: May lose very rare markers; adjust to 10 if studying rare populations\n\n## Species-Specific Considerations\n\n### Mouse (Mus musculus)\n- Mitochondrial genes: mt-* (lowercase)\n- Ribosomal genes: Rpl*, Rps* (capitalized first letter)\n- Hemoglobin genes: Hb* (but not Hbp1)\n\n### Human (Homo sapiens)\n- Mitochondrial genes: MT-* (uppercase)\n- Ribosomal genes: RPL*, RPS* (all uppercase)\n- Hemoglobin genes: HB* (but not HBP1)\n\n### Other Species\nAdjust gene name patterns in the script to match your organism's gene nomenclature. Consult Ensembl or your reference annotation for correct prefixes.\n\n## When to Adjust Parameters\n\nConsider adjusting filtering thresholds when:\n\n**More stringent (lower MADs)**\n- High ambient RNA contamination suspected\n- Many low-quality cells observed in visualizations\n- Downstream analysis shows quality-driven clustering\n\n**More permissive (higher MADs)**\n- Studying rare cell populations\n- Dataset has high technical quality\n- Cell types naturally have extreme values (e.g., neurons with high MT%)\n\n**Tissue-specific adjustments**\n- Brain/neurons: May need higher MT% threshold (10-15%)\n- Blood: Can be more stringent with MT% (5-8%)\n- Tumor samples: Often need more permissive thresholds due to biological variation\n\n## Advanced QC Considerations\n\n### Not Included in This Workflow\n\n**Ambient RNA correction**\n- Tool: SoupX, CellBender, DecontX\n- When: High background RNA in droplet-based data\n- Effect: Removes contamination from lysed cells\n\n**Doublet detection**\n- Tool: scDblFinder, scrublet, DoubletFinder\n- When: Always recommended for droplet-based data\n- Effect: Identifies and removes multiplets (2+ cells in one droplet)\n\n**Cell cycle scoring**\n- Tool: scanpy's score_genes_cell_cycle\n- When: Cell cycle effects confound biological signal\n- Effect: Allows regressing out or accounting for cell cycle phase\n\n**Batch correction**\n- Tool: Harmony, scVI, ComBat\n- When: Integrating data from multiple batches/experiments\n- Effect: Removes technical batch effects while preserving biology\n\n## References\n\n- scverse Best Practices: https://www.sc-best-practices.org/preprocessing_visualization/quality_control.html\n- Luecken & Theis (2019): Current best practices in single-cell RNA-seq analysis\n- Osorio & Cai (2021): Systematic determination of the mitochondrial proportion in human and mouse genomes\n- Germain et al. (2020): Doublet identification in single-cell sequencing data using scDblFinder\n","bio-research/skills/start/SKILL.md":"---\nname: start\ndescription: Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which literature, drug-discovery, or visualization MCP servers are connected, or surveying available analysis skills before starting a new project.\n---\n\n# Bio-Research Start\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nYou are helping a biological researcher get oriented with the bio-research plugin. Walk through the following steps in order.\n\n## Step 1: Welcome\n\nDisplay this welcome message:\n\n```\nBio-Research Plugin\n\nYour AI-powered research assistant for the life sciences. This plugin brings\ntogether literature search, data analysis pipelines,\nand scientific strategy — all in one place.\n```\n\n## Step 2: Check Available MCP Servers\n\nTest which MCP servers are connected by listing available tools. Group the results:\n\n**Literature & Data Sources:**\n- ~~literature database — biomedical literature search\n- ~~literature database — preprint access (biology and medicine)\n- ~~journal access — academic publications\n- ~~data repository — collaborative research data (Sage Bionetworks)\n\n**Drug Discovery & Clinical:**\n- ~~chemical database — bioactive compound database\n- ~~drug target database — drug target discovery platform\n- ClinicalTrials.gov — clinical trial registry\n- ~~clinical data platform — clinical trial site ranking and platform help\n\n**Visualization & AI:**\n- ~~scientific illustration — create scientific figures and diagrams\n- ~~AI research platform — AI for biology (histopathology, drug discovery)\n\nReport which servers are connected and which are not yet set up.\n\n## Step 3: Survey Available Skills\n\nList the analysis skills available in this plugin:\n\n| Skill | What It Does |\n|-------|-------------|\n| **Single-Cell RNA QC** | Quality control for scRNA-seq data with MAD-based filtering |\n| **scvi-tools** | Deep learning for single-cell omics (scVI, scANVI, totalVI, PeakVI, etc.) |\n| **Nextflow Pipelines** | Run nf-core pipelines (RNA-seq, WGS/WES, ATAC-seq) |\n| **Instrument Data Converter** | Convert lab instrument output to Allotrope ASM format |\n| **Scientific Problem Selection** | Systematic framework for choosing research problems |\n\n## Step 4: Optional Setup — Binary MCP Servers\n\nMention that two additional MCP servers are available as separate installations:\n\n- **~~genomics platform** — Access cloud analysis data and workflows\n  Install: Download `txg-node.mcpb` from https://github.com/10XGenomics/txg-mcp/releases\n- **~~tool database** (Harvard MIMS) — AI tools for scientific discovery\n  Install: Download `tooluniverse.mcpb` from https://github.com/mims-harvard/ToolUniverse/releases\n\nThese require downloading binary files and are optional.\n\n## Step 5: Ask How to Help\n\nAsk the researcher what they're working on today. Suggest starting points based on common workflows:\n\n1. **Literature review** — \"Search ~~literature database for recent papers on [topic]\"\n2. **Analyze sequencing data** — \"Run QC on my single-cell data\" or \"Set up an RNA-seq pipeline\"\n3. **Drug discovery** — \"Search ~~chemical database for compounds targeting [protein]\" or \"Find drug targets for [disease]\"\n4. **Data standardization** — \"Convert my instrument data to Allotrope format\"\n5. **Research strategy** — \"Help me evaluate a new project idea\"\n\nWait for the user's response and guide them to the appropriate tools and skills.\n","cowork-plugin-management/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=cowork-plugin-management%2F.claude-plugin%2Fplugin.json -->","cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md":"---\nname: cowork-plugin-customizer\ndescription: >\n  Customize a Claude Code plugin for a specific organization's tools and workflows.\n  Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings,\n  customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration.\ncompatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins).\n---\n\n# Cowork Plugin Customization\n\nCustomize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin.\n\n> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -name \"*<plugin-name>*\"` to locate the plugin directory, then read its files to understand its structure before making changes. If you cannot find the plugin directory, the user is likely running this conversation in a remote container. Abort and let them know: \"Customizing plugins is currently only available in the desktop app's Cowork mode.\"\n\n## Determining the Customization Mode\n\nAfter locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'`\n\n> **Default rule**: If `~~` placeholders exist, default to **Generic plugin setup** unless the user explicitly asks to customize a specific part of the plugin.\n\n**1. Generic plugin setup** — The plugin contains `~~`-prefixed placeholders. These are customization points in a template that need to be replaced with real values (e.g., `~~Jira` → `Asana`, `~~your-team-channel` → `#engineering`).\n\n**2. Scoped customization** — No `~~` placeholders exist, and the user asked to customize a specific part of the plugin (e.g., \"customize the connectors\", \"update the standup skill\", \"change the ticket tool\"). Read the plugin files to find the relevant section(s) and focus only on those. Do not scan the entire plugin or present unrelated customization items.\n\n> **Legacy `commands/` directories**: Some plugins include a `commands/` directory. The Cowork UI now presents these alongside skills as a single \"Skills\" concept, so treat `commands/*.md` files the same way you would `skills/*/SKILL.md` files when customizing.\n\n**3. General customization** — No `~~` placeholders exist, and the user wants to modify the plugin broadly. Read the plugin's files to understand its current configuration, then ask the user what they'd like to change.\n\n> **Important**: Never change the name of the plugin or skill being customized. Do not rename directories, files, or the plugin/skill name fields.\n\n> **Nontechnical output**: All user-facing output (todo list items, questions, summaries) must be written in plain, nontechnical language. Never mention `~~` prefixes, placeholders, or customization points to the user. Frame everything in terms of the plugin's capabilities and the organization's tools.\n\n## Customization Workflow\n\n### Phase 0: Gather User Intent (scoped and general customization only)\n\nFor **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request (e.g., \"customize the standup skill — we do async standups in #eng-updates every morning\").\n\n- **If the user provided context**: Record it and use it to pre-fill answers in Phase 3 — skip asking questions that the user already answered here.\n- **If the user did not provide context**: Ask a single open-ended question using AskUserQuestion before proceeding. Tailor the question to what they asked to customize — e.g., \"What changes do you have in mind for the brief skill?\" or \"What would you like to change about how this plugin works?\" Keep it short and specific to their request.\n\n  Use their response (if any) as additional context throughout the remaining phases.\n\n### Phase 1: Gather Context from Knowledge MCPs\n\nUse company-internal knowledge MCPs to collect information relevant to the customization scope. See `references/search-strategies.md` for detailed query patterns by category.\n\n**What to gather** (scope to what's relevant):\n\n- Tool names and services the organization uses\n- Organizational processes and workflows\n- Team conventions (naming, statuses, estimation scales)\n- Configuration values (workspace IDs, project names, team identifiers)\n\n**Sources to search:**\n\n1. **Chat/Slack MCPs** — tool mentions, integrations, workflow discussions\n2. **Document MCPs** — onboarding docs, tool guides, setup instructions\n3. **Email MCPs** — license notifications, admin emails, setup invitations\n\nRecord all findings for use in Phase 3.\n\n### Phase 2: Create Todo List\n\nBuild a todo list of changes to make, scoped appropriately:\n\n- **For scoped customization**: Only include items related to the specific section the user asked about.\n- **For generic plugin setup**: Run `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'` to find all placeholder customization points. Group them by theme.\n- **For general customization**: Read the plugin files, understand the current config, and based on the user's request, identify what needs to change.\n\nUse user-friendly descriptions that focus on the plugin's purpose:\n\n- **Good**: \"Learn how standup prep works at Company\"\n- **Bad**: \"Replace placeholders in skills/standup-prep/SKILL.md\"\n\n### Phase 3: Complete Todo Items\n\nWork through each item using context from Phase 0 and Phase 1.\n\n**If the user's free-form input (Phase 0) or knowledge MCPs (Phase 1) provided a clear answer**: Apply directly without confirmation.\n\n**Otherwise**: Use AskUserQuestion. Don't assume \"industry standard\" defaults are correct — if neither the user's input nor knowledge MCPs provided a specific answer, ask. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n**Types of changes:**\n\n1. **Placeholder replacements** (generic setup): `~~Jira` → `Asana`, `~~your-org-channel` → `#engineering`\n2. **Content updates**: Modifying instructions, skills, workflows, or references to match the organization\n3. **URL pattern updates**: `tickets.example.com/your-team/123` → `app.asana.com/0/PROJECT_ID/TASK_ID`\n4. **Configuration values**: Workspace IDs, project names, team identifiers\n\nIf user doesn't know or skips, leave the value unchanged (or the `~~`-prefixed placeholder, for generic setup).\n\n### Phase 4: Search for Useful MCPs\n\nAfter customization items have been resolved, connect MCPs for any tools that were identified or changed. See `references/mcp-servers.md` for the full workflow, category-to-keywords mapping, and config file format.\n\nFor each tool identified during customization:\n\n1. Search the registry: `search_mcp_registry(keywords=[...])` using category keywords from `references/mcp-servers.md`, or search for the specific tool name if already known\n2. If unconnected: `suggest_connectors(directoryUuids=[\"chosen-uuid\"])` — user completes auth\n3. Update the plugin's MCP config file (check `plugin.json` for custom location, otherwise `.mcp.json` at root)\n\nCollect all MCP results and present them together in the summary output (see below) — don't present MCPs one at a time during this phase.\n\n## Packaging the Plugin\n\nAfter all customizations are applied, package the plugin as a `.plugin` file for the user:\n\n1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed):\n   ```bash\n   cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x \"setup/*\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n   ```\n2. **Present the file to the user** with the `.plugin` extension so they can install it directly. (Presenting the .plugin file will show to the user as a rich preview where they can look through the plugin files, and they can accept the customization by pressing a button.)\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions and leave behind temporary files.\n\n> **Naming**: Use the original plugin directory name for the `.plugin` file (e.g., if the plugin directory is `coder`, the output file should be `coder.plugin`). Do not rename the plugin or its files during customization — only replace placeholder values and update content.\n\n## Summary Output\n\nAfter customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected during setup and which ones the user should still connect:\n\n```markdown\n## From searching Slack\n\n- You use Asana for project management\n- Sprint cycles are 2 weeks\n\n## From searching documents\n\n- Story points use T-shirt sizes\n\n## From your answers\n\n- Ticket statuses are: Backlog, In Progress, In Review, Done\n```\n\nThen present the MCPs that were connected during setup and any that the user should still connect, with instructions on how to connect them.\n\nIf no knowledge MCPs were available in Phase 1, and the user had to answer at least one question manually, include a note at the end:\n\n> By the way, connecting sources like Slack or Microsoft Teams would let me find answers automatically next time you customize a plugin.\n\n## Additional Resources\n\n- **`references/mcp-servers.md`** — MCP discovery workflow, category-to-keywords mapping, config file locations\n- **`references/search-strategies.md`** — Knowledge MCP query patterns for finding tool names and org values\n- **`examples/customized-mcp.json`** — Example fully configured `.mcp.json`\n","cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json":"{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${GITHUB_TOKEN}\"\n      }\n    },\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    },\n    \"figma\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.figma.com/mcp\"\n    },\n    \"datadog\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.datadoghq.com/mcp\",\n      \"headers\": {\n        \"DD-API-KEY\": \"${DATADOG_API_KEY}\",\n        \"DD-APPLICATION-KEY\": \"${DATADOG_APP_KEY}\"\n      }\n    }\n  },\n  \"recommendedCategories\": [\n    \"source-control\",\n    \"project-management\",\n    \"chat\",\n    \"documents\",\n    \"wiki-knowledge-base\",\n    \"design-graphics\",\n    \"analytics-bi\"\n  ]\n}\n","cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md":"# MCP Discovery and Connection\n\nHow to find and connect MCPs during plugin customization.\n\n## Available Tools\n\n### `search_mcp_registry`\nSearch the MCP directory for available connectors.\n\n**Input:** `{ \"keywords\": [\"array\", \"of\", \"search\", \"terms\"] }`\n\n**Output:** Up to 10 results, each with:\n- `name`: MCP display name\n- `description`: One-liner description\n- `tools`: List of tool names the MCP provides\n- `url`: MCP endpoint URL (use this in `.mcp.json`)\n- `directoryUuid`: UUID for use with suggest_connectors\n- `connected`: Boolean - whether user has this MCP connected\n\n### `suggest_connectors`\nDisplay Connect buttons to let users install/connect MCPs.\n\n**Input:** `{ \"directoryUuids\": [\"uuid1\", \"uuid2\"] }`\n\n**Output:** Renders UI with Connect buttons for each MCP\n\n## Category-to-Keywords Mapping\n\n| Category | Search Keywords |\n|----------|-----------------|\n| `project-management` | `[\"asana\", \"jira\", \"linear\", \"monday\", \"tasks\"]` |\n| `software-coding` | `[\"github\", \"gitlab\", \"bitbucket\", \"code\"]` |\n| `chat` | `[\"slack\", \"teams\", \"discord\"]` |\n| `documents` | `[\"google docs\", \"notion\", \"confluence\"]` |\n| `calendar` | `[\"google calendar\", \"calendar\"]` |\n| `email` | `[\"gmail\", \"outlook\", \"email\"]` |\n| `design-graphics` | `[\"figma\", \"sketch\", \"design\"]` |\n| `analytics-bi` | `[\"datadog\", \"grafana\", \"analytics\"]` |\n| `crm` | `[\"salesforce\", \"hubspot\", \"crm\"]` |\n| `wiki-knowledge-base` | `[\"notion\", \"confluence\", \"outline\", \"wiki\"]` |\n| `data-warehouse` | `[\"bigquery\", \"snowflake\", \"redshift\"]` |\n| `conversation-intelligence` | `[\"gong\", \"chorus\", \"call recording\"]` |\n\n## Workflow\n\n1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)\n2. **Check earlier phase findings**: Did you already learn which tool they use?\n   - **Yes**: Search for that specific tool to get its `url`, skip to step 5\n   - **No**: Continue to step 3\n3. **Search**: Call `search_mcp_registry` with mapped keywords\n4. **Present choices and ask user**: Show all results, ask which they use\n5. **Connect if needed**: If not connected, call `suggest_connectors`\n6. **Update MCP config**: Add config using the `url` from search results\n\n## Updating Plugin MCP Configuration\n\n### Finding the Config File\n\n1. **Check `plugin.json`** for an `mcpServers` field:\n   ```json\n   {\n     \"name\": \"my-plugin\",\n     \"mcpServers\": \"./config/servers.json\"\n   }\n   ```\n   If present, edit the file at that path.\n\n2. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).\n\n3. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.\n\n### Config File Format\n\nBoth wrapped and unwrapped formats are supported:\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\nUse the `url` field from `search_mcp_registry` results.\n\n### Directory Entries Without a URL\n\nSome directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.","cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md":"# Knowledge MCP Search Strategies\n\nQuery patterns for gathering organizational context during plugin customization.\n\n## Finding Tool Names\n\n**Source control:**\n- Search: \"GitHub\" OR \"GitLab\" OR \"Bitbucket\"\n- Search: \"pull request\" OR \"merge request\"\n- Look for: repository links, CI/CD mentions\n\n**Project management:**\n- Search: \"Asana\" OR \"Jira\" OR \"Linear\" OR \"Monday\"\n- Search: \"sprint\" AND \"tickets\"\n- Look for: task links, project board mentions\n\n**Chat:**\n- Search: \"Slack\" OR \"Teams\" OR \"Discord\"\n- Look for: channel mentions, integration discussions\n\n**Analytics:**\n- Search: \"Datadog\" OR \"Grafana\" OR \"Mixpanel\"\n- Search: \"monitoring\" OR \"observability\"\n- Look for: dashboard links, alert configurations\n\n**Design:**\n- Search: \"Figma\" OR \"Sketch\" OR \"Adobe XD\"\n- Look for: design file links, handoff discussions\n\n**CRM:**\n- Search: \"Salesforce\" OR \"HubSpot\"\n- Look for: deal mentions, customer record links\n\n## Finding Organization Values\n\n**Workspace/project IDs:**\n- Search for existing integrations or bookmarked links\n- Look for admin/setup documentation\n\n**Team conventions:**\n- Search: \"story points\" OR \"estimation\"\n- Search: \"workflow\" OR \"ticket status\"\n- Look for engineering process docs\n\n**Channel/team names:**\n- Search: \"standup\" OR \"engineering\" OR \"releases\"\n- Look for channel naming patterns\n\n## When Knowledge MCPs Are Unavailable\n\nIf no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n","cowork-plugin-management/skills/create-cowork-plugin/SKILL.md":"---\nname: create-cowork-plugin\ndescription: >\n  Guide users through creating a new plugin from scratch in a cowork session.\n  Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin.\n  This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file.\ncompatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files.\n---\n\n# Create Cowork Plugin\n\nBuild a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a ready-to-install `.plugin` file at the end.\n\n## Overview\n\nA plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full plugin architecture and a five-phase workflow for creating one conversationally.\n\nThe process:\n\n1. **Discovery** — understand what the user wants to build\n2. **Component Planning** — determine which component types are needed\n3. **Design & Clarifying Questions** — specify each component in detail\n4. **Implementation** — create all plugin files\n5. **Review & Package** — deliver the `.plugin` file\n\n> **Nontechnical output**: Keep all user-facing conversation in plain language. Do not expose implementation details like file paths, directory structures, or schema fields unless the user asks. Frame everything in terms of what the plugin will do.\n\n## Plugin Architecture\n\n### Directory Structure\n\nEvery plugin follows this layout:\n\n```\nplugin-name/\n├── .claude-plugin/\n│   └── plugin.json           # Required: plugin manifest\n├── skills/                   # Skills (subdirectories with SKILL.md)\n│   └── skill-name/\n│       ├── SKILL.md\n│       └── references/\n├── agents/                   # Subagent definitions (.md files)\n├── .mcp.json                 # MCP server definitions\n└── README.md                 # Plugin documentation\n```\n\n> **Legacy `commands/` format**: Older plugins may include a `commands/` directory with single-file `.md` slash commands. This format still works, but new plugins should use `skills/*/SKILL.md` instead — the Cowork UI presents both as a single \"Skills\" concept, and the skills format supports progressive disclosure via `references/`.\n\n**Rules:**\n\n- `.claude-plugin/plugin.json` is always required\n- Component directories (`skills/`, `agents/`) go at the plugin root, not inside `.claude-plugin/`\n- Only create directories for components the plugin actually uses\n- Use kebab-case for all directory and file names\n\n### plugin.json Manifest\n\nLocated at `.claude-plugin/plugin.json`. Minimal required field is `name`.\n\n```json\n{\n  \"name\": \"plugin-name\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Brief explanation of plugin purpose\",\n  \"author\": {\n    \"name\": \"Author Name\"\n  }\n}\n```\n\n**Name rules:** kebab-case, lowercase with hyphens, no spaces or special characters.\n**Version:** semver format (MAJOR.MINOR.PATCH). Start at `0.1.0`.\n\nOptional fields: `homepage`, `repository`, `license`, `keywords`.\n\nCustom component paths can be specified (supplements, does not replace, auto-discovery):\n\n```json\n{\n  \"commands\": \"./custom-commands\",\n  \"agents\": [\"./agents\", \"./specialized-agents\"],\n  \"hooks\": \"./config/hooks.json\",\n  \"mcpServers\": \"./.mcp.json\"\n}\n```\n\n### Component Schemas\n\nDetailed schemas for each component type are in `references/component-schemas.md`. Summary:\n\n| Component                          | Location            | Format                      |\n| ---------------------------------- | ------------------- | --------------------------- |\n| Skills                             | `skills/*/SKILL.md` | Markdown + YAML frontmatter |\n| MCP Servers                        | `.mcp.json`         | JSON                        |\n| Agents (uncommonly used in Cowork) | `agents/*.md`       | Markdown + YAML frontmatter |\n| Hooks (rarely used in Cowork)      | `hooks/hooks.json`  | JSON                        |\n| Commands (legacy)                  | `commands/*.md`     | Markdown + YAML frontmatter |\n\nThis schema is shared with Claude Code's plugin system, but you're creating a plugin for Claude Cowork, a desktop app for doing knowledge work.\nCowork users will usually find skills the most useful. **Scaffold new plugins with `skills/*/SKILL.md` — do not create `commands/` unless the user explicitly needs the legacy single-file format.**\n\n### Customizable plugins with `~~` placeholders\n\n> **Do not use or ask about this pattern by default.** Only introduce `~~` placeholders if the user explicitly says they want people outside their organization to use the plugin.\n> You can mention this is an option if it seems like the user wants to distribute the plugin externally, but do not proactively ask about this with AskUserQuestion.\n\nWhen a plugin is intended to be shared with others outside their company, it might have parts that need to be adapted to individual users.\nYou might need to reference external tools by category rather than specific product (e.g., \"project tracker\" instead of \"Jira\").\nWhen sharing is needed, use generic language and mark these as requiring customization with two tilde characters such as `create an issue in ~~project tracker`.\nIf used any tool categories, write a `CONNECTORS.md` file at the plugin root to explain:\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic — they describe\nworkflows in terms of categories rather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Options                         |\n| --------------- | ------------------- | ------------------------------- |\n| Chat            | `~~chat`            | Slack, Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear, Asana, Jira             |\n```\n\n### ${CLAUDE_PLUGIN_ROOT} Variable\n\nUse `${CLAUDE_PLUGIN_ROOT}` for all intra-plugin path references in hooks and MCP configs. Never hardcode absolute paths.\n\n## Guided Workflow\n\nWhen you ask the user something, use AskUserQuestion. Don't assume \"industry standard\" defaults are correct. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n### Phase 1: Discovery\n\n**Goal**: Understand what the user wants to build and why.\n\nAsk (only what is unclear — skip questions if the user's initial request already answers them):\n\n- What should this plugin do? What problem does it solve?\n- Who will use it and in what context?\n- Does it integrate with any external tools or services?\n- Is there a similar plugin or workflow to reference?\n\nSummarize understanding and confirm before proceeding.\n\n**Output**: Clear statement of plugin purpose and scope.\n\n### Phase 2: Component Planning\n\n**Goal**: Determine which component types the plugin needs.\n\nBased on the discovery answers, determine:\n\n- **Skills** — Does it need specialized knowledge that Claude should load on-demand, or user-initiated actions? (domain expertise, reference schemas, workflow guides, deploy/configure/analyze/review actions)\n- **MCP Servers** — Does it need external service integration? (databases, APIs, SaaS tools)\n- **Agents (uncommon)** — Are there autonomous multi-step tasks? (validation, generation, analysis)\n- **Hooks (rare)** — Should something happen automatically on certain events? (enforce policies, load context, validate operations)\n\nPresent a component plan table, including component types you decided not to create:\n\n```\n| Component | Count | Purpose |\n|-----------|-------|---------|\n| Skills    | 3     | Domain knowledge for X, /do-thing, /check-thing |\n| Agents    | 0     | Not needed |\n| Hooks     | 1     | Validate writes |\n| MCP       | 1     | Connect to service Y |\n```\n\nGet user confirmation or adjustments before proceeding.\n\n**Output**: Confirmed list of components to create.\n\n### Phase 3: Design & Clarifying Questions\n\n**Goal**: Specify each component in detail. Resolve all ambiguities before implementation.\n\nFor each component type in the plan, ask targeted design questions. Present questions grouped by component type. Wait for answers before proceeding.\n\n**Skills:**\n\n- What user queries should trigger this skill?\n- What knowledge domains does it cover?\n- Should it include reference files for detailed content?\n- If the skill represents a user-initiated action: what arguments does it accept, and what tools does it need? (Read, Write, Bash, Grep, etc.)\n\n**Agents:**\n\n- Should each agent trigger proactively or only when requested?\n- What tools does it need?\n- What should the output format be?\n\n**Hooks:**\n\n- Which events? (PreToolUse, PostToolUse, Stop, SessionStart, etc.)\n- What behavior — validate, block, modify, add context?\n- Prompt-based (LLM-driven) or command-based (deterministic script)?\n\n**MCP Servers:**\n\n- What server type? (stdio for local, SSE for hosted with OAuth, HTTP for REST APIs)\n- What authentication method?\n- What tools should be exposed?\n\nIf the user says \"whatever you think is best,\" provide specific recommendations and get explicit confirmation.\n\n**Output**: Detailed specification for every component.\n\n### Phase 4: Implementation\n\n**Goal**: Create all plugin files following best practices.\n\n**Order of operations:**\n\n1. Create the plugin directory structure\n2. Create `plugin.json` manifest\n3. Create each component (see `references/component-schemas.md` for exact formats)\n4. Create `README.md` documenting the plugin\n\n**Implementation guidelines:**\n\n- **Skills** use progressive disclosure: lean SKILL.md body (under 3,000 words), detailed content in `references/`. Frontmatter description must be third-person with specific trigger phrases. Skill bodies are instructions FOR Claude, not messages to the user — write them as directives about what to do.\n- **Agents** need a description with `<example>` blocks showing triggering conditions, plus a system prompt in the markdown body.\n- **Hooks** config goes in `hooks/hooks.json`. Use `${CLAUDE_PLUGIN_ROOT}` for script paths. Prefer prompt-based hooks for complex logic.\n- **MCP configs** go in `.mcp.json` at plugin root. Use `${CLAUDE_PLUGIN_ROOT}` for local server paths. Document required env vars in README.\n\n### Phase 5: Review & Package\n\n**Goal**: Deliver the finished plugin.\n\n1. Summarize what was created — list each component and its purpose\n2. Ask if the user wants any adjustments\n3. Run `claude plugin validate <path-to-plugin-json>` to check the plugin structure. If this command is unavailable (e.g., when running inside Cowork), verify the structure manually:\n   - `.claude-plugin/plugin.json` exists and contains valid JSON with at least a `name` field\n   - The `name` field is kebab-case (lowercase letters, numbers, and hyphens only)\n   - Any component directories referenced by the plugin (`commands/`, `skills/`, `agents/`, `hooks/`) actually exist and contain files in the expected formats — `.md` for commands/skills/agents, `.json` for hooks\n   - Each skill subdirectory contains a `SKILL.md`\n   - Report what passed and what didn't, the same way the CLI validator would\n\n   Fix any errors before proceeding.\n4. Package as a `.plugin` file:\n\n```bash\ncd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x \"*.DS_Store\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n```\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions.\n\n> **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`).\n\nThe `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button.\n\n## Best Practices\n\n- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components.\n- **Progressive disclosure for skills**: Core knowledge in SKILL.md, detailed reference material in `references/`, working examples in `examples/`.\n- **Clear trigger phrases**: Skill descriptions should include specific phrases users would say. Agent descriptions should include `<example>` blocks.\n- **Skills are for Claude**: Write skill body content as instructions for Claude to follow, not documentation for the user to read.\n- **Imperative writing style**: Use verb-first instructions in skills (\"Parse the config file,\" not \"You should parse the config file\").\n- **Portability**: Always use `${CLAUDE_PLUGIN_ROOT}` for intra-plugin paths, never hardcoded paths.\n- **Security**: Use environment variables for credentials, HTTPS for remote servers, least-privilege tool access.\n\n## Additional Resources\n\n- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md)\n- **`references/example-plugins.md`** — Three complete example plugin structures at different complexity levels\n","cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md":"# Component Schemas\n\nDetailed format specifications for every plugin component type. Reference this when implementing components in Phase 4.\n\n## Skills\n\n**Location**: `skills/skill-name/SKILL.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                             |\n| ------------- | -------- | ------ | ------------------------------------------------------- |\n| `name`        | Yes      | String | Skill identifier (lowercase, hyphens; matches dir name) |\n| `description` | Yes      | String | Third-person description with trigger phrases           |\n| `metadata`    | No       | Map    | Arbitrary key-value pairs (e.g., `version`, `author`)   |\n\n### Example Skill\n\n```yaml\n---\nname: api-design\ndescription: >\n  This skill should be used when the user asks to \"design an API\",\n  \"create API endpoints\", \"review API structure\", or needs guidance\n  on REST API best practices, endpoint naming, or request/response design.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n### Writing Style Rules\n\n- **Frontmatter description**: Third-person (\"This skill should be used when...\"), with specific trigger phrases in quotes.\n- **Body**: Imperative/infinitive form (\"Parse the config file,\" not \"You should parse the config file\").\n- **Length**: Keep SKILL.md body under 3,000 words (ideally 1,500-2,000). Move detailed content to `references/`.\n\n### Skill Directory Structure\n\n```\nskill-name/\n├── SKILL.md              # Core knowledge (required)\n├── references/           # Detailed docs loaded on demand\n│   ├── patterns.md\n│   └── advanced.md\n├── examples/             # Working code examples\n│   └── sample-config.json\n└── scripts/              # Utility scripts\n    └── validate.sh\n```\n\n### Progressive Disclosure Levels\n\n1. **Metadata** (always in context): name + description (~100 words)\n2. **SKILL.md body** (when skill triggers): core knowledge (<5k words)\n3. **Bundled resources** (as needed): references, examples, scripts (unlimited)\n\n## Agents\n\n**Location**: `agents/agent-name.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                         |\n| ------------- | -------- | ------ | --------------------------------------------------- |\n| `name`        | Yes      | String | Lowercase, hyphens, 3-50 chars                      |\n| `description` | Yes      | String | Triggering conditions with `<example>` blocks       |\n| `model`       | Yes      | String | `inherit`, `sonnet`, `opus`, or `haiku`             |\n| `color`       | Yes      | String | `blue`, `cyan`, `green`, `yellow`, `magenta`, `red` |\n| `tools`       | No       | Array  | Restrict to specific tools                          |\n\n### Example Agent\n\n```markdown\n---\nname: code-reviewer\ndescription: Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices.\n\n<example>\nContext: User has just written a new module\nuser: \"Can you do a deep review of this code?\"\nassistant: \"I'll use the code-reviewer agent to provide a thorough analysis.\"\n<commentary>\nUser explicitly requested a detailed review, which matches this agent's specialty.\n</commentary>\n</example>\n\n<example>\nContext: User is about to merge a PR\nuser: \"Review this before I merge\"\nassistant: \"Let me run a comprehensive review using the code-reviewer agent.\"\n<commentary>\nPre-merge review benefits from the agent's structured analysis process.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: blue\ntools: [\"Read\", \"Grep\", \"Glob\"]\n---\n\nYou are a code review specialist focused on identifying issues across security, performance, maintainability, and correctness.\n\n**Your Core Responsibilities:**\n\n1. Analyze code structure and organization\n2. Identify security vulnerabilities\n3. Flag performance concerns\n4. Check adherence to best practices\n\n**Analysis Process:**\n\n1. Read all files in scope\n2. Identify patterns and anti-patterns\n3. Categorize findings by severity\n4. Provide specific remediation suggestions\n\n**Output Format:**\nPresent findings grouped by severity (Critical, Warning, Info) with:\n\n- File path and line number\n- Description of the issue\n- Suggested fix\n```\n\n### Agent Naming Rules\n\n- 3-50 characters\n- Lowercase letters, numbers, hyphens only\n- Must start and end with alphanumeric\n- No underscores, spaces, or special characters\n\n### Color Guidelines\n\n- Blue/Cyan: Analysis, review\n- Green: Success-oriented tasks\n- Yellow: Caution, validation\n- Red: Critical, security\n- Magenta: Creative, generation\n\n## Hooks\n\n**Location**: `hooks/hooks.json`\n**Format**: JSON\n\n### Available Events\n\n| Event              | When it fires                   |\n| ------------------ | ------------------------------- |\n| `PreToolUse`       | Before a tool call executes     |\n| `PostToolUse`      | After a tool call completes     |\n| `Stop`             | When Claude finishes a response |\n| `SubagentStop`     | When a subagent finishes        |\n| `SessionStart`     | When a session begins           |\n| `SessionEnd`       | When a session ends             |\n| `UserPromptSubmit` | When the user sends a message   |\n| `PreCompact`       | Before context compaction       |\n| `Notification`     | When a notification fires       |\n\n### Hook Types\n\n**Prompt-based** (recommended for complex logic):\n\n```json\n{\n  \"type\": \"prompt\",\n  \"prompt\": \"Evaluate whether this file write follows project conventions: $TOOL_INPUT\",\n  \"timeout\": 30\n}\n```\n\nSupported events: Stop, SubagentStop, UserPromptSubmit, PreToolUse.\n\n**Command-based** (deterministic checks):\n\n```json\n{\n  \"type\": \"command\",\n  \"command\": \"bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate.sh\",\n  \"timeout\": 60\n}\n```\n\n### Example hooks.json\n\n```json\n{\n  \"PreToolUse\": [\n    {\n      \"matcher\": \"Write|Edit\",\n      \"hooks\": [\n        {\n          \"type\": \"prompt\",\n          \"prompt\": \"Check that this file write follows project coding standards. If it violates standards, explain why and block.\",\n          \"timeout\": 30\n        }\n      ]\n    }\n  ],\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"cat ${CLAUDE_PLUGIN_ROOT}/context/project-context.md\",\n          \"timeout\": 10\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Hook Output Format (Command Hooks)\n\nCommand hooks return JSON to stdout:\n\n```json\n{\n  \"decision\": \"block\",\n  \"reason\": \"File write violates naming convention\"\n}\n```\n\nDecisions: `approve`, `block`, `ask_user` (ask for confirmation).\n\n## MCP Servers\n\n**Location**: `.mcp.json` at plugin root\n**Format**: JSON\n\n### Server Types\n\n**stdio** (local process):\n\n```json\n{\n  \"mcpServers\": {\n    \"my-server\": {\n      \"command\": \"node\",\n      \"args\": [\"${CLAUDE_PLUGIN_ROOT}/servers/server.js\"],\n      \"env\": {\n        \"API_KEY\": \"${API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n**SSE** (remote server, server-sent events transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    }\n  }\n}\n```\n\n**HTTP** (remote server, streamable HTTP transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"api-service\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.example.com/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${API_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variable Expansion\n\nAll MCP configs support `${VAR_NAME}` substitution:\n\n- `${CLAUDE_PLUGIN_ROOT}` — plugin directory (always use for portability)\n- `${ANY_ENV_VAR}` — user environment variables\n\nDocument all required environment variables in the plugin README.\n\n### Directory Servers Without a URL\n\nSome MCP directory entries have no `url` because the endpoint is dynamic. Plugins can reference these servers by **name** instead — if the server name in the plugin's MCP config matches the directory entry name, it is treated the same as a URL match.\n\n## Commands (Legacy)\n\n> **Prefer `skills/*/SKILL.md` for new plugins.** The Cowork UI now presents commands and skills as a single \"Skills\" concept. The `commands/` format still works, but only use it if you specifically need the single-file format with `$ARGUMENTS`/`$1` substitution and inline bash execution.\n\n**Location**: `commands/command-name.md`\n**Format**: Markdown with optional YAML frontmatter\n\n### Frontmatter Fields\n\n| Field           | Required | Type            | Description                                         |\n| --------------- | -------- | --------------- | --------------------------------------------------- |\n| `description`   | No       | String          | Brief description shown in `/help` (under 60 chars) |\n| `allowed-tools` | No       | String or Array | Tools the command can use                           |\n| `model`         | No       | String          | Model override: `sonnet`, `opus`, `haiku`           |\n| `argument-hint` | No       | String          | Documents expected arguments for autocomplete       |\n\n### Example Command\n\n```markdown\n---\ndescription: Review code for security issues\nallowed-tools: Read, Grep, Bash(git:*)\nargument-hint: [file-path]\n---\n\nReview @$1 for security vulnerabilities including:\n\n- SQL injection\n- XSS attacks\n- Authentication bypass\n- Insecure data handling\n\nProvide specific line numbers, severity ratings, and remediation suggestions.\n```\n\n### Key Rules\n\n- Commands are instructions FOR Claude, not messages for the user. Write them as directives.\n- `$ARGUMENTS` captures all arguments as a single string; `$1`, `$2`, `$3` capture positional arguments.\n- `@path` syntax includes file contents in the command context.\n- `!` backtick syntax executes bash inline for dynamic context (e.g., `` !`git diff --name-only` ``).\n- Use `${CLAUDE_PLUGIN_ROOT}` to reference plugin files portably.\n\n### allowed-tools Patterns\n\n```yaml\n# Specific tools\nallowed-tools: Read, Write, Edit, Bash(git:*)\n\n# Bash with specific commands only\nallowed-tools: Bash(npm:*), Read\n\n# MCP tools (specific)\nallowed-tools: [\"mcp__plugin_name_server__tool_name\"]\n```\n\n## CONNECTORS.md\n\n**Location**: Plugin root\n**When to create**: When the plugin references external tools by category rather than specific product\n\n### Format\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. For example, `~~project tracker` might mean\nAsana, Linear, Jira, or any other project tracker with an MCP server.\n\nPlugins are tool-agnostic — they describe workflows in terms of categories\nrather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options            |\n| --------------- | ------------------- | ---------------- | ------------------------ |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday      |\n```\n\n### Using ~~ Placeholders\n\nIn plugin files (skills, agents), reference tools generically:\n\n```markdown\nCheck ~~project tracker for open tickets assigned to the user.\nPost a summary to ~~chat in the team channel.\n```\n\nDuring customization (via the cowork-plugin-customizer skill), these get replaced with specific tool names.\n\n## README.md\n\nEvery plugin should include a README with:\n\n1. **Overview** — what the plugin does\n2. **Components** — list of skills, agents, hooks, MCP servers\n3. **Setup** — any required environment variables or configuration\n4. **Usage** — how to trigger each skill\n5. **Customization** — if CONNECTORS.md exists, mention it\n","cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md":"# Example Plugins\n\nThree complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.\n\n## Minimal Plugin: Single Skill\n\nA simple plugin with one skill and no other components.\n\n### Structure\n\n```\nmeeting-notes/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   └── meeting-notes/\n│       └── SKILL.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"meeting-notes\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Generate structured meeting notes from transcripts\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/meeting-notes/SKILL.md\n\n```markdown\n---\nname: meeting-notes\ndescription: >\n  Generate structured meeting notes from a transcript. Use when the user asks\n  to \"summarize this meeting\", \"create meeting notes\", \"extract action items\n  from this transcript\", or provides a meeting transcript file.\n---\n\nRead the transcript file the user provided and generate structured meeting notes.\n\nInclude these sections:\n\n1. **Attendees** — list all participants mentioned\n2. **Summary** — 2-3 sentence overview of the meeting\n3. **Key Decisions** — numbered list of decisions made\n4. **Action Items** — table with columns: Owner, Task, Due Date\n5. **Open Questions** — anything unresolved\n\nWrite the notes to a new file named after the transcript with `-notes` appended.\n```\n\n---\n\n## Standard Plugin: Skills + MCP\n\nA plugin that combines domain knowledge, user-initiated actions, and external service integration.\n\n### Structure\n\n```\ncode-quality/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── coding-standards/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── style-rules.md\n│   ├── review-changes/\n│   │   └── SKILL.md\n│   └── fix-lint/\n│       └── SKILL.md\n├── .mcp.json\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"code-quality\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Enforce coding standards with reviews, linting, and style guidance\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/review-changes/SKILL.md\n\n```markdown\n---\nname: review-changes\ndescription: >\n  Review code changes for style and quality issues. Use when the user asks to\n  \"review my changes\", \"check this diff\", \"review for style violations\", or\n  wants a code quality pass on uncommitted work.\n---\n\nRun `git diff --name-only` to get the list of changed files.\n\nFor each changed file:\n\n1. Read the file\n2. Check against the coding-standards skill for style violations\n3. Identify potential bugs or anti-patterns\n4. Flag any security concerns\n\nPresent a summary with:\n\n- File path\n- Issue severity (Error, Warning, Info)\n- Description and suggested fix\n```\n\n### skills/fix-lint/SKILL.md\n\n```markdown\n---\nname: fix-lint\ndescription: >\n  Auto-fix linting issues in changed files. Use when the user asks to\n  \"fix lint errors\", \"clean up linting\", or \"auto-fix my lint issues\".\n---\n\nRun the linter: `npm run lint -- --format json 2>&1`\n\nParse the linter output and fix each issue:\n\n- For auto-fixable issues, apply the fix directly\n- For manual-fix issues, make the correction following project conventions\n- Skip issues that require architectural changes\n\nAfter all fixes, run the linter again to confirm clean output.\n```\n\n### skills/coding-standards/SKILL.md\n\n```yaml\n---\nname: coding-standards\ndescription: >\n  This skill should be used when the user asks about \"coding standards\",\n  \"style guide\", \"naming conventions\", \"code formatting rules\", or needs\n  guidance on project-specific code quality expectations.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n```markdown\n# Coding Standards\n\nProject coding standards and conventions for consistent, high-quality code.\n\n## Core Rules\n\n- Use camelCase for variables and functions\n- Use PascalCase for classes and types\n- Prefer const over let; avoid var\n- Maximum line length: 100 characters\n- Use explicit return types on all exported functions\n\n## Import Order\n\n1. External packages\n2. Internal packages (aliased with @/)\n3. Relative imports\n4. Type-only imports last\n\n## Additional Resources\n\n- **`references/style-rules.md`** — complete style rules by language\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\n---\n\n## Full-Featured Plugin: All Component Types\n\nA plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors.\n\n### Structure\n\n```\nengineering-workflow/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── team-processes/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── workflow-guide.md\n│   ├── standup-prep/\n│   │   └── SKILL.md\n│   └── create-ticket/\n│       └── SKILL.md\n├── agents/\n│   └── ticket-analyzer.md\n├── hooks/\n│   └── hooks.json\n├── .mcp.json\n├── CONNECTORS.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"engineering-workflow\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Streamline engineering workflows: standup prep, ticket management, and code quality\",\n  \"author\": {\n    \"name\": \"User\"\n  },\n  \"keywords\": [\"engineering\", \"workflow\", \"tickets\", \"standup\"]\n}\n```\n\n### agents/ticket-analyzer.md\n\n```markdown\n---\nname: ticket-analyzer\ndescription: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog.\n\n<example>\nContext: User is preparing for sprint planning\nuser: \"Help me triage these new tickets\"\nassistant: \"I'll use the ticket-analyzer agent to review and categorize the tickets.\"\n<commentary>\nTicket triage requires systematic analysis across multiple dimensions, making the agent appropriate.\n</commentary>\n</example>\n\n<example>\nContext: User has a large backlog\nuser: \"Prioritize my backlog for next sprint\"\nassistant: \"Let me analyze the backlog using the ticket-analyzer agent to recommend priorities.\"\n<commentary>\nBacklog prioritization is a multi-step autonomous task well-suited for the agent.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: cyan\ntools: [\"Read\", \"Grep\"]\n---\n\nYou are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies.\n\n**Your Core Responsibilities:**\n\n1. Categorize tickets by type (bug, feature, tech debt, improvement)\n2. Estimate relative effort (S, M, L, XL)\n3. Identify dependencies between tickets\n4. Recommend priority ordering\n\n**Analysis Process:**\n\n1. Read all ticket descriptions\n2. Categorize each by type\n3. Estimate effort based on scope\n4. Map dependencies\n5. Rank by impact-to-effort ratio\n\n**Output Format:**\n| Ticket | Type | Effort | Dependencies | Priority |\n|--------|------|--------|-------------|----------|\n| ... | ... | ... | ... | ... |\n\nFollowed by a brief rationale for the top 5 priorities.\n```\n\n### hooks/hooks.json\n\n```json\n{\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"echo '## Team Context\\n\\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'\",\n          \"timeout\": 5\n        }\n      ]\n    }\n  ]\n}\n```\n\n### CONNECTORS.md\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options       |\n| --------------- | ------------------- | ---------------- | ------------------- |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams     |\n| Source control  | `~~source control`  | GitHub           | GitLab, Bitbucket   |\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"linear\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.linear.app/sse\"\n    },\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    }\n  }\n}\n```\n","customer-support/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2F.claude-plugin%2Fplugin.json -->","customer-support/skills/customer-escalation/SKILL.md":"---\nname: customer-escalation\ndescription: Package an escalation for engineering, product, or leadership with full context. Use when a bug needs engineering attention beyond normal support, multiple customers report the same issue, a customer is threatening to churn, or an issue has sat unresolved past its SLA.\nargument-hint: \"<issue summary> [customer name]\"\n---\n\n# /customer-escalation\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nPackage a support issue into a structured escalation brief for engineering, product, or leadership. Gathers context, structures reproduction steps, assesses business impact, and identifies the right escalation target.\n\n## Usage\n\n```\n/customer-escalation <issue description> [customer name or account]\n```\n\nExamples:\n- `/customer-escalation API returning 500 errors intermittently for Acme Corp`\n- `/customer-escalation Data export is missing rows — 3 customers reported this week`\n- `/customer-escalation SSO login loop affecting all Enterprise customers`\n- `/customer-escalation Customer threatening to churn over missing audit log feature`\n\n## Workflow\n\n### 1. Understand the Issue\n\nParse the input and determine:\n\n- **What's broken or needed**: The core technical or product issue\n- **Who's affected**: Specific customer(s), segment, or all users\n- **How long**: When did this start? How long has the customer been waiting?\n- **What's been tried**: Any troubleshooting or workarounds attempted\n- **Why escalate now**: What makes this need attention beyond normal support\n\nUse the \"When to Escalate vs. Handle in Support\" criteria below to confirm this warrants escalation.\n\n### 2. Gather Context\n\nPull together relevant information from available sources:\n\n- **~~support platform**: Related tickets, timeline of communications, previous troubleshooting\n- **~~CRM** (if connected): Account details, key contacts, previous escalations\n- **~~chat**: Internal discussions about this issue, similar reports from other customers\n- **~~project tracker** (if connected): Related bug reports or feature requests, engineering status\n- **~~knowledge base**: Known issues or workarounds, relevant documentation\n\n### 3. Assess Business Impact\n\nUsing the impact dimensions below, quantify:\n\n- **Breadth**: How many customers/users affected? Growing?\n- **Depth**: Blocked vs. inconvenienced?\n- **Duration**: How long has this been going on?\n- **Revenue**: ARR at risk? Pending deals affected?\n- **Time pressure**: Hard deadline?\n\n### 4. Determine Escalation Target\n\nUsing the escalation tiers below, identify the right target: L2 Support, Engineering, Product, Security, or Leadership.\n\n### 5. Structure Reproduction Steps (for bugs)\n\nIf the issue is a bug, follow the reproduction step best practices below to document clear repro steps with environment details and evidence.\n\n### 6. Generate Escalation Brief\n\n```\n## ESCALATION: [One-line summary]\n\n**Severity:** [Critical / High / Medium]\n**Target team:** [Engineering / Product / Security / Leadership]\n**Reported by:** [Your name/team]\n**Date:** [Today's date]\n\n### Impact\n- **Customers affected:** [Who and how many]\n- **Workflow impact:** [What they can't do]\n- **Revenue at risk:** [If applicable]\n- **Time in queue:** [How long this has been an issue]\n\n### Issue Description\n[Clear, concise description of the problem — 3-5 sentences]\n\n### What's Been Tried\n1. [Troubleshooting step and result]\n2. [Troubleshooting step and result]\n3. [Troubleshooting step and result]\n\n### Reproduction Steps\n[If applicable — follow the format below]\n1. [Step]\n2. [Step]\n3. [Step]\nExpected: [X]\nActual: [Y]\nEnvironment: [Details]\n\n### Customer Communication\n- **Last update to customer:** [Date and what was communicated]\n- **Customer expectation:** [What they're expecting and by when]\n- **Escalation risk:** [Will they escalate further if not resolved by X?]\n\n### What's Needed\n- [Specific ask — \"investigate root cause\", \"prioritize fix\",\n  \"make product decision on X\", \"approve exception for Y\"]\n- **Deadline:** [When this needs resolution or an update]\n\n### Supporting Context\n- [Related tickets or links]\n- [Internal discussion threads]\n- [Documentation or logs]\n```\n\n### 7. Offer Next Steps\n\nAfter generating the escalation:\n- \"Want me to post this in a ~~chat channel for the target team?\"\n- \"Should I update the customer with an interim response?\"\n- \"Want me to set a follow-up reminder to check on this?\"\n- \"Should I draft a customer-facing update with the current status?\"\n\n---\n\n## When to Escalate vs. Handle in Support\n\n### Handle in Support When:\n- The issue has a documented solution or known workaround\n- It's a configuration or setup issue you can resolve\n- The customer needs guidance or training, not a fix\n- The issue is a known limitation with a documented alternative\n- Previous similar tickets were resolved at the support level\n\n### Escalate When:\n- **Technical**: Bug confirmed and needs a code fix, infrastructure investigation needed, data corruption or loss\n- **Complexity**: Issue is beyond support's ability to diagnose, requires access support doesn't have, involves custom implementation\n- **Impact**: Multiple customers affected, production system down, data integrity at risk, security concern\n- **Business**: High-value customer at risk, SLA breach imminent or occurred, customer requesting executive involvement\n- **Time**: Issue has been open beyond SLA, customer has been waiting unreasonably long, normal support channels aren't progressing\n- **Pattern**: Same issue reported by 3+ customers, recurring issue that was supposedly fixed, increasing severity over time\n\n## Escalation Tiers\n\n### L1 → L2 (Support Escalation)\n**From:** Frontline support\n**To:** Senior support / technical support specialists\n**When:** Issue requires deeper investigation, specialized product knowledge, or advanced troubleshooting\n**What to include:** Ticket summary, steps already tried, customer context\n\n### L2 → Engineering\n**From:** Senior support\n**To:** Engineering team (relevant product area)\n**When:** Confirmed bug, infrastructure issue, needs code change, requires system-level investigation\n**What to include:** Full reproduction steps, environment details, logs or error messages, business impact, customer timeline\n\n### L2 → Product\n**From:** Senior support\n**To:** Product management\n**When:** Feature gap causing customer pain, design decision needed, workflow doesn't match customer expectations, competing customer needs require prioritization\n**What to include:** Customer use case, business impact, frequency of request, competitive pressure (if known)\n\n### Any → Security\n**From:** Any support tier\n**To:** Security team\n**When:** Potential data exposure, unauthorized access, vulnerability report, compliance concern\n**What to include:** What was observed, who/what is potentially affected, immediate containment steps taken, urgency assessment\n**Note:** Security escalations bypass normal tier progression — escalate immediately regardless of your level\n\n### Any → Leadership\n**From:** Any tier (usually L2 or manager)\n**To:** Support leadership, executive team\n**When:** High-revenue customer threatening churn, SLA breach on critical account, cross-functional decision needed, exception to policy required, PR or legal risk\n**What to include:** Full business context, revenue at risk, what's been tried, specific decision or action needed, deadline\n\n## Business Impact Assessment\n\nWhen escalating, quantify impact where possible:\n\n### Impact Dimensions\n\n| Dimension | Questions to Answer |\n|-----------|-------------------|\n| **Breadth** | How many customers/users are affected? Is it growing? |\n| **Depth** | How severely are they impacted? Blocked vs. inconvenienced? |\n| **Duration** | How long has this been going on? How long until it's critical? |\n| **Revenue** | What's the ARR at risk? Are there pending deals affected? |\n| **Reputation** | Could this become public? Is it a reference customer? |\n| **Contractual** | Are SLAs being breached? Are there contractual obligations? |\n\n### Severity Shorthand\n\n- **Critical**: Production down, data at risk, security breach, or multiple high-value customers affected. Needs immediate attention.\n- **High**: Major functionality broken, key customer blocked, SLA at risk. Needs same-day attention.\n- **Medium**: Significant issue with workaround, important but not urgent business impact. Needs attention this week.\n\n## Writing Reproduction Steps\n\nGood reproduction steps are the single most valuable thing in a bug escalation. Follow these practices:\n\n1. **Start from a clean state**: Describe the starting point (account type, configuration, permissions)\n2. **Be specific**: \"Click the Export button in the top-right of the Dashboard page\" not \"try to export\"\n3. **Include exact values**: Use specific inputs, dates, IDs — not \"enter some data\"\n4. **Note the environment**: Browser, OS, account type, feature flags, plan level\n5. **Capture the frequency**: Always reproducible? Intermittent? Only under certain conditions?\n6. **Include evidence**: Screenshots, error messages (exact text), network logs, console output\n7. **Note what you've ruled out**: \"Tested in Chrome and Firefox — same behavior\" \"Not account-specific — reproduced on test account\"\n\n## Follow-up Cadence After Escalation\n\nDon't escalate and forget. Maintain ownership of the customer relationship.\n\n| Severity | Internal Follow-up | Customer Update |\n|----------|-------------------|-----------------|\n| **Critical** | Every 2 hours | Every 2-4 hours (or per SLA) |\n| **High** | Every 4 hours | Every 4-8 hours |\n| **Medium** | Daily | Every 1-2 business days |\n\n### Follow-up Actions\n- Check with the receiving team for progress\n- Update the customer even if there's no new information (\"We're still investigating — here's what we know so far\")\n- Adjust severity if the situation changes (better or worse)\n- Document all updates in the ticket for audit trail\n- Close the loop when resolved: confirm with customer, update internal tracking, capture learnings\n\n## De-escalation\n\nNot every escalation stays escalated. De-escalate when:\n- Root cause is found and it's a support-resolvable issue\n- A workaround is found that unblocks the customer\n- The issue resolves itself (but still document root cause)\n- New information changes the severity assessment\n\nWhen de-escalating:\n- Notify the team you escalated to\n- Update the ticket with the resolution\n- Inform the customer of the resolution\n- Document what was learned for future reference\n\n## Escalation Best Practices\n\n1. Always quantify impact — vague escalations get deprioritized\n2. Include reproduction steps for bugs — this is the #1 thing engineering needs\n3. Be clear about what you need — \"investigate\" vs. \"fix\" vs. \"decide\" are different asks\n4. Set and communicate a deadline — urgency without a deadline is ambiguous\n5. Maintain ownership of the customer relationship even after escalating the technical issue\n6. Follow up proactively — don't wait for the receiving team to come to you\n7. Document everything — the escalation trail is valuable for pattern detection and process improvement\n","customer-support/skills/customer-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fcustomer-research%2FSKILL.md -->","customer-support/skills/draft-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fdraft-response%2FSKILL.md -->","customer-support/skills/kb-article/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fkb-article%2FSKILL.md -->","customer-support/skills/ticket-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fticket-triage%2FSKILL.md -->","data/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2F.claude-plugin%2Fplugin.json -->","data/skills/analyze/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fanalyze%2FSKILL.md -->","data/skills/build-dashboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fbuild-dashboard%2FSKILL.md -->","data/skills/create-viz/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fcreate-viz%2FSKILL.md -->","data/skills/data-context-extractor/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2FSKILL.md -->","data/skills/data-context-extractor/references/domain-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fdomain-template.md -->","data/skills/data-context-extractor/references/example-output.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fexample-output.md -->","data/skills/data-context-extractor/references/skill-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fskill-template.md -->","data/skills/data-context-extractor/references/sql-dialects.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fsql-dialects.md -->","data/skills/data-visualization/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-visualization%2FSKILL.md -->","data/skills/explore-data/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fexplore-data%2FSKILL.md -->","data/skills/sql-queries/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fsql-queries%2FSKILL.md -->","data/skills/statistical-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fstatistical-analysis%2FSKILL.md -->","data/skills/validate-data/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fvalidate-data%2FSKILL.md -->","data/skills/write-query/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fwrite-query%2FSKILL.md -->","design/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2F.claude-plugin%2Fplugin.json -->","design/skills/accessibility-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Faccessibility-review%2FSKILL.md -->","design/skills/design-critique/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-critique%2FSKILL.md -->","design/skills/design-handoff/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-handoff%2FSKILL.md -->","design/skills/design-system/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-system%2FSKILL.md -->","design/skills/research-synthesis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fresearch-synthesis%2FSKILL.md -->","design/skills/user-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fuser-research%2FSKILL.md -->","design/skills/ux-copy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fux-copy%2FSKILL.md -->","engineering/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2F.claude-plugin%2Fplugin.json -->","engineering/skills/architecture/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Farchitecture%2FSKILL.md -->","engineering/skills/code-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fcode-review%2FSKILL.md -->","engineering/skills/debug/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdebug%2FSKILL.md -->","engineering/skills/deploy-checklist/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdeploy-checklist%2FSKILL.md -->","engineering/skills/documentation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdocumentation%2FSKILL.md -->","engineering/skills/incident-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fincident-response%2FSKILL.md -->","engineering/skills/standup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fstandup%2FSKILL.md -->","engineering/skills/system-design/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fsystem-design%2FSKILL.md -->","engineering/skills/tech-debt/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftech-debt%2FSKILL.md -->","engineering/skills/testing-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftesting-strategy%2FSKILL.md -->","enterprise-search/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2F.claude-plugin%2Fplugin.json -->","enterprise-search/skills/digest/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fdigest%2FSKILL.md -->","enterprise-search/skills/knowledge-synthesis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fknowledge-synthesis%2FSKILL.md -->","enterprise-search/skills/search-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch-strategy%2FSKILL.md -->","enterprise-search/skills/search/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch%2FSKILL.md -->","enterprise-search/skills/source-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsource-management%2FSKILL.md -->","finance/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2F.claude-plugin%2Fplugin.json -->","finance/skills/audit-support/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Faudit-support%2FSKILL.md -->","finance/skills/close-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fclose-management%2FSKILL.md -->","finance/skills/financial-statements/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Ffinancial-statements%2FSKILL.md -->","finance/skills/journal-entry-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry-prep%2FSKILL.md -->","finance/skills/journal-entry/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry%2FSKILL.md -->","finance/skills/reconciliation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Freconciliation%2FSKILL.md -->","finance/skills/sox-testing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fsox-testing%2FSKILL.md -->","finance/skills/variance-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fvariance-analysis%2FSKILL.md -->","human-resources/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2F.claude-plugin%2Fplugin.json -->","human-resources/skills/comp-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fcomp-analysis%2FSKILL.md -->","human-resources/skills/draft-offer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fdraft-offer%2FSKILL.md -->","human-resources/skills/interview-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Finterview-prep%2FSKILL.md -->","human-resources/skills/onboarding/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fonboarding%2FSKILL.md -->","human-resources/skills/org-planning/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Forg-planning%2FSKILL.md -->","human-resources/skills/people-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpeople-report%2FSKILL.md -->","human-resources/skills/performance-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fperformance-review%2FSKILL.md -->","human-resources/skills/policy-lookup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpolicy-lookup%2FSKILL.md -->","human-resources/skills/recruiting-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Frecruiting-pipeline%2FSKILL.md -->","legal/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2F.claude-plugin%2Fplugin.json -->","legal/skills/brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fbrief%2FSKILL.md -->","legal/skills/compliance-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fcompliance-check%2FSKILL.md -->","legal/skills/legal-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-response%2FSKILL.md -->","legal/skills/legal-risk-assessment/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-risk-assessment%2FSKILL.md -->","legal/skills/meeting-briefing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fmeeting-briefing%2FSKILL.md -->","legal/skills/review-contract/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Freview-contract%2FSKILL.md -->","legal/skills/signature-request/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fsignature-request%2FSKILL.md -->","legal/skills/triage-nda/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Ftriage-nda%2FSKILL.md -->","legal/skills/vendor-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fvendor-check%2FSKILL.md -->","marketing/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2F.claude-plugin%2Fplugin.json -->","marketing/skills/brand-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fbrand-review%2FSKILL.md -->","marketing/skills/campaign-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcampaign-plan%2FSKILL.md -->","marketing/skills/competitive-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","marketing/skills/content-creation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcontent-creation%2FSKILL.md -->","marketing/skills/draft-content/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fdraft-content%2FSKILL.md -->","marketing/skills/email-sequence/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Femail-sequence%2FSKILL.md -->","marketing/skills/performance-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fperformance-report%2FSKILL.md -->","marketing/skills/seo-audit/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fseo-audit%2FSKILL.md -->","operations/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2F.claude-plugin%2Fplugin.json -->","operations/skills/capacity-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcapacity-plan%2FSKILL.md -->","operations/skills/change-request/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fchange-request%2FSKILL.md -->","operations/skills/compliance-tracking/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcompliance-tracking%2FSKILL.md -->","operations/skills/process-doc/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-doc%2FSKILL.md -->","operations/skills/process-optimization/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-optimization%2FSKILL.md -->","operations/skills/risk-assessment/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frisk-assessment%2FSKILL.md -->","operations/skills/runbook/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frunbook%2FSKILL.md -->","operations/skills/status-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fstatus-report%2FSKILL.md -->","operations/skills/vendor-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fvendor-review%2FSKILL.md -->","partner-built/apollo/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2F.claude-plugin%2Fplugin.json -->","partner-built/apollo/skills/enrich-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fenrich-lead%2FSKILL.md -->","partner-built/apollo/skills/prospect/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fprospect%2FSKILL.md -->","partner-built/apollo/skills/sequence-load/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fsequence-load%2FSKILL.md -->","partner-built/brand-voice/.claude-plugin/marketplace.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fmarketplace.json -->","partner-built/brand-voice/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fplugin.json -->","partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2FSKILL.md -->","partner-built/brand-voice/skills/brand-voice-enforcement/references/before-after-examples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fbefore-after-examples.md -->","partner-built/brand-voice/skills/brand-voice-enforcement/references/voice-constant-tone-flexes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fvoice-constant-tone-flexes.md -->","partner-built/brand-voice/skills/discover-brand/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2FSKILL.md -->","partner-built/brand-voice/skills/discover-brand/references/search-strategies.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsearch-strategies.md -->","partner-built/brand-voice/skills/discover-brand/references/source-ranking.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsource-ranking.md -->","partner-built/brand-voice/skills/guideline-generation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2FSKILL.md -->","partner-built/brand-voice/skills/guideline-generation/references/confidence-scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fconfidence-scoring.md -->","partner-built/brand-voice/skills/guideline-generation/references/guideline-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fguideline-template.md -->","partner-built/common-room/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2F.claude-plugin%2Fplugin.json -->","partner-built/common-room/skills/account-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2FSKILL.md -->","partner-built/common-room/skills/account-research/references/signals-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2Freferences%2Fsignals-guide.md -->","partner-built/common-room/skills/call-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2FSKILL.md -->","partner-built/common-room/skills/call-prep/references/call-types-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2Freferences%2Fcall-types-guide.md -->","partner-built/common-room/skills/compose-outreach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2FSKILL.md -->","partner-built/common-room/skills/compose-outreach/references/outreach-formats-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2Freferences%2Foutreach-formats-guide.md -->","partner-built/common-room/skills/contact-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2FSKILL.md -->","partner-built/common-room/skills/contact-research/references/contact-signals-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2Freferences%2Fcontact-signals-guide.md -->","partner-built/common-room/skills/prospect/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2FSKILL.md -->","partner-built/common-room/skills/prospect/references/prospect-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2Freferences%2Fprospect-guide.md -->","partner-built/common-room/skills/weekly-prep-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2FSKILL.md -->","partner-built/common-room/skills/weekly-prep-brief/references/briefing-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2Freferences%2Fbriefing-guide.md -->","partner-built/slack/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2F.claude-plugin%2Fplugin.json -->","partner-built/slack/skills/slack-messaging/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-messaging%2FSKILL.md -->","partner-built/slack/skills/slack-search/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-search%2FSKILL.md -->","partner-built/zoom-plugin/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2F.claude-plugin%2Fplugin.json -->","partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-bot%2FSKILL.md -->","partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-meeting-app%2FSKILL.md -->","partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fchoose-zoom-approach%2FSKILL.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/distribution-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fdistribution-methods.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/jwt-authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fjwt-authentication.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/session-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fsession-lifecycle.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/two-roles-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Ftwo-roles-pattern.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/agent-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fagent-integration.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/annotations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fannotations.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/auto-reconnection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fauto-reconnection.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/byop-custom-pin.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fbyop-custom-pin.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/customer-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fcustomer-integration.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/multi-tab-persistence.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fmulti-tab-persistence.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/privacy-masking.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fprivacy-masking.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/remote-assist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fremote-assist.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/session-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fsession-events.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fget-started.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/session-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsession-events.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/settings-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsettings-reference.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/browser-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fbrowser-compatibility.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/cors-csp.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcors-csp.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/contact-center/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/android/concepts/sdk-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fconcepts%2Fsdk-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/android/examples/service-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fexamples%2Fservice-patterns.md -->","partner-built/zoom-plugin/skills/contact-center/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/contact-center/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/ios/concepts/sdk-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fconcepts%2Fsdk-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/ios/examples/service-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fexamples%2Fservice-patterns.md -->","partner-built/zoom-plugin/skills/contact-center/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/contact-center/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/contact-center/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/contact-center/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/contact-center/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/contact-center/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/contact-center/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/contact-center/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/web/concepts/lifecycle-and-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","partner-built/zoom-plugin/skills/contact-center/web/examples/app-context-and-state.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fexamples%2Fapp-context-and-state.md -->","partner-built/zoom-plugin/skills/contact-center/web/references/web-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Freferences%2Fweb-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom-integration%2FSKILL.md -->","partner-built/zoom-plugin/skills/debug-zoom/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom%2FSKILL.md -->","partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdesign-mcp-workflow%2FSKILL.md -->","partner-built/zoom-plugin/skills/general/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/general/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FSKILL.md -->","partner-built/zoom-plugin/skills/general/references/app-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fapp-types.md -->","partner-built/zoom-plugin/skills/general/references/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthentication.md -->","partner-built/zoom-plugin/skills/general/references/authorization-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthorization-patterns.md -->","partner-built/zoom-plugin/skills/general/references/automatic-skill-chaining-rest-webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fautomatic-skill-chaining-rest-webhooks.md -->","partner-built/zoom-plugin/skills/general/references/community-repos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fcommunity-repos.md -->","partner-built/zoom-plugin/skills/general/references/distributed-meeting-fallback-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fdistributed-meeting-fallback-architecture.md -->","partner-built/zoom-plugin/skills/general/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/general/references/interview-answer-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Finterview-answer-routing.md -->","partner-built/zoom-plugin/skills/general/references/known-limitations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fknown-limitations.md -->","partner-built/zoom-plugin/skills/general/references/marketplace.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmarketplace.md -->","partner-built/zoom-plugin/skills/general/references/meeting-webhooks-oauth-refresh-orchestration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmeeting-webhooks-oauth-refresh-orchestration.md -->","partner-built/zoom-plugin/skills/general/references/query-routing-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fquery-routing-playbook.md -->","partner-built/zoom-plugin/skills/general/references/routing-implementation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Frouting-implementation.md -->","partner-built/zoom-plugin/skills/general/references/scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fscopes.md -->","partner-built/zoom-plugin/skills/general/references/sdk-logs-troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-logs-troubleshooting.md -->","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-guide.md -->","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-workflow.md -->","partner-built/zoom-plugin/skills/general/use-cases/ai-companion-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-companion-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/ai-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/apis-vs-mcp-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fapis-vs-mcp-routing.md -->","partner-built/zoom-plugin/skills/general/use-cases/backend-automation-s2s-oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fbackend-automation-s2s-oauth.md -->","partner-built/zoom-plugin/skills/general/use-cases/collaborative-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcollaborative-apps.md -->","partner-built/zoom-plugin/skills/general/use-cases/contact-center-app-lifecycle-and-context-switching.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-app-lifecycle-and-context-switching.md -->","partner-built/zoom-plugin/skills/general/use-cases/contact-center-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/custom-meeting-ui-web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-meeting-ui-web.md -->","partner-built/zoom-plugin/skills/general/use-cases/custom-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-video.md -->","partner-built/zoom-plugin/skills/general/use-cases/customer-support-cobrowsing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustomer-support-cobrowsing.md -->","partner-built/zoom-plugin/skills/general/use-cases/electron-meeting-embed.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Felectron-meeting-embed.md -->","partner-built/zoom-plugin/skills/general/use-cases/embed-meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fembed-meetings.md -->","partner-built/zoom-plugin/skills/general/use-cases/enterprise-app-deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fenterprise-app-deployment.md -->","partner-built/zoom-plugin/skills/general/use-cases/flutter-video-sessions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fflutter-video-sessions.md -->","partner-built/zoom-plugin/skills/general/use-cases/form-completion-assistant.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fform-completion-assistant.md -->","partner-built/zoom-plugin/skills/general/use-cases/hd-video-resolution.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhd-video-resolution.md -->","partner-built/zoom-plugin/skills/general/use-cases/high-volume-meeting-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhigh-volume-meeting-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/immersive-experiences.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fimmersive-experiences.md -->","partner-built/zoom-plugin/skills/general/use-cases/in-meeting-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fin-meeting-apps.md -->","partner-built/zoom-plugin/skills/general/use-cases/marketplace-publishing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmarketplace-publishing.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-automation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-automation.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-bots.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-bots.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-details-with-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-details-with-events.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-links-vs-embedding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-links-vs-embedding.md -->","partner-built/zoom-plugin/skills/general/use-cases/minutes-calculation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fminutes-calculation.md -->","partner-built/zoom-plugin/skills/general/use-cases/native-meeting-sdk-multi-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-meeting-sdk-multi-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/native-video-sdk-multi-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-video-sdk-multi-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/prebuilt-video-ui.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprebuilt-video-ui.md -->","partner-built/zoom-plugin/skills/general/use-cases/probe-sdk-preflight-readiness-gate.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprobe-sdk-preflight-readiness-gate.md -->","partner-built/zoom-plugin/skills/general/use-cases/qss-monitoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fqss-monitoring.md -->","partner-built/zoom-plugin/skills/general/use-cases/raw-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fraw-recording.md -->","partner-built/zoom-plugin/skills/general/use-cases/react-native-meeting-embed.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-meeting-embed.md -->","partner-built/zoom-plugin/skills/general/use-cases/react-native-video-sessions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-video-sessions.md -->","partner-built/zoom-plugin/skills/general/use-cases/real-time-media-streams.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freal-time-media-streams.md -->","partner-built/zoom-plugin/skills/general/use-cases/recording-download-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-download-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/recording-transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-transcription.md -->","partner-built/zoom-plugin/skills/general/use-cases/retrieve-meeting-and-subscribe-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fretrieve-meeting-and-subscribe-events.md -->","partner-built/zoom-plugin/skills/general/use-cases/rivet-event-driven-api-orchestrator.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frivet-event-driven-api-orchestrator.md -->","partner-built/zoom-plugin/skills/general/use-cases/saas-app-oauth-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsaas-app-oauth-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/scribe-transcription-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fscribe-transcription-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/sdk-size-optimization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-size-optimization.md -->","partner-built/zoom-plugin/skills/general/use-cases/sdk-wrappers-gui.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-wrappers-gui.md -->","partner-built/zoom-plugin/skills/general/use-cases/server-to-server-oauth-with-webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fserver-to-server-oauth-with-webhooks.md -->","partner-built/zoom-plugin/skills/general/use-cases/team-chat-llm-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fteam-chat-llm-bot.md -->","partner-built/zoom-plugin/skills/general/use-cases/testing-development.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftesting-development.md -->","partner-built/zoom-plugin/skills/general/use-cases/token-and-scope-troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftoken-and-scope-troubleshooting.md -->","partner-built/zoom-plugin/skills/general/use-cases/transcription-bot-linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftranscription-bot-linux.md -->","partner-built/zoom-plugin/skills/general/use-cases/usage-reporting-analytics.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fusage-reporting-analytics.md -->","partner-built/zoom-plugin/skills/general/use-cases/user-and-meeting-creation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fuser-and-meeting-creation.md -->","partner-built/zoom-plugin/skills/general/use-cases/video-sdk-bring-your-own-storage.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvideo-sdk-bring-your-own-storage.md -->","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-campaign-web-mobile-wrapper.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-campaign-web-mobile-wrapper.md -->","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-knowledge-base-sync-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-knowledge-base-sync-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/web-sdk-embedding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fweb-sdk-embedding.md -->","partner-built/zoom-plugin/skills/general/use-cases/zoom-phone-smart-embed-crm.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fzoom-phone-smart-embed-crm.md -->","partner-built/zoom-plugin/skills/meeting-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fandroid.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/authentication-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fauthentication-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/join-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fjoin-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/raw-data-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fraw-data-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/electron-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Felectron-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Flinux.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/meeting-sdk-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fmeeting-sdk-bot.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/references/linux-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fmacos.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/macos-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/auth-and-token-model.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fauth-and-token-model.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/join-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fjoin-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/provider-hook-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fprovider-hook-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/start-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fstart-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/android-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fandroid-setup.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/ios-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fios-setup.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/native-bridge-notes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fnative-bridge-notes.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/wrapper-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fwrapper-api.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fai-companion.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fandroid.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/bot-authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbot-authentication.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmacos.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/multiple-meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmultiple-meetings.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/signature-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fsignature-playbook.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/triage-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftriage-intake.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftroubleshooting.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/unreal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Funreal.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/webinars.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fwebinars.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/unreal-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Funreal-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/unreal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Funreal.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/references/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2Freferences%2FREADME.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/references/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2Freferences%2FREADME.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/browser-support.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fbrowser-support.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/sharedarraybuffer.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fsharedarraybuffer.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/client-view-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fclient-view-basic.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/component-view-react.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fcomponent-view-react.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-breakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-ui-customization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-ui-customization.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/sharedarraybuffer-gallery-view.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fsharedarraybuffer-gallery-view.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-performance-cpu.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-performance-cpu.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-timeout-browser-restriction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-timeout-browser-restriction.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-tracking-id.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-tracking-id.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-architecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-vs-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-vs-raw-data.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fai-companion.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/authentication-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fauthentication-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/captions-transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcaptions-transcription.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/custom-ui-video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcustom-ui-video-rendering.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/local-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Flocal-recording.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/send-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fsend-raw-data.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/service-quality.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fservice-quality.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/share-raw-data-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fshare-raw-data-capture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/video-advanced.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fvideo-advanced.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fdeployment.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/interface-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Finterface-methods.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/windows-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/windows-message-loop.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","partner-built/zoom-plugin/skills/oauth/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/oauth/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FSKILL.md -->","partner-built/zoom-plugin/skills/oauth/concepts/oauth-flows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Foauth-flows.md -->","partner-built/zoom-plugin/skills/oauth/concepts/pkce.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fpkce.md -->","partner-built/zoom-plugin/skills/oauth/concepts/scopes-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fscopes-architecture.md -->","partner-built/zoom-plugin/skills/oauth/concepts/state-parameter.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fstate-parameter.md -->","partner-built/zoom-plugin/skills/oauth/concepts/token-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Ftoken-lifecycle.md -->","partner-built/zoom-plugin/skills/oauth/examples/device-flow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fdevice-flow.md -->","partner-built/zoom-plugin/skills/oauth/examples/pkce-implementation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fpkce-implementation.md -->","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-basic.md -->","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-redis.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-redis.md -->","partner-built/zoom-plugin/skills/oauth/examples/token-refresh.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Ftoken-refresh.md -->","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-basic.md -->","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-mysql.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-mysql.md -->","partner-built/zoom-plugin/skills/oauth/references/classic-scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fclassic-scopes.md -->","partner-built/zoom-plugin/skills/oauth/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/oauth/references/granular-scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fgranular-scopes.md -->","partner-built/zoom-plugin/skills/oauth/references/oauth-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Foauth-errors.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/redirect-uri-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fredirect-uri-issues.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/scope-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fscope-issues.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/token-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Ftoken-issues.md -->","partner-built/zoom-plugin/skills/phone/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/phone/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FSKILL.md -->","partner-built/zoom-plugin/skills/phone/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/phone/examples/phone-api-service-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fphone-api-service-pattern.md -->","partner-built/zoom-plugin/skills/phone/examples/smart-embed-postmessage-bridge.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fsmart-embed-postmessage-bridge.md -->","partner-built/zoom-plugin/skills/phone/references/call-handling-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcall-handling-patterns.md -->","partner-built/zoom-plugin/skills/phone/references/crm-sample-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcrm-sample-validation.md -->","partner-built/zoom-plugin/skills/phone/references/deprecations-and-migrations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fdeprecations-and-migrations.md -->","partner-built/zoom-plugin/skills/phone/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/phone/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/phone/references/smart-embed-event-contract.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsmart-embed-event-contract.md -->","partner-built/zoom-plugin/skills/phone/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/phone/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/phone/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-integration%2FSKILL.md -->","partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-product%2FSKILL.md -->","partner-built/zoom-plugin/skills/probe-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/probe-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/probe-sdk/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/probe-sdk/examples/comprehensive-network-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fcomprehensive-network-pattern.md -->","partner-built/zoom-plugin/skills/probe-sdk/examples/diagnostic-page-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fdiagnostic-page-pattern.md -->","partner-built/zoom-plugin/skills/probe-sdk/probe-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fprobe-sdk.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/probe-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fprobe-reference-map.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/probe-sdk/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/probe-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rest-api/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rest-api/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FSKILL.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/api-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fapi-architecture.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/authentication-flows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fauthentication-flows.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/meeting-urls-and-sdk-joining.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fmeeting-urls-and-sdk-joining.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/rate-limiting-strategy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Frate-limiting-strategy.md -->","partner-built/zoom-plugin/skills/rest-api/examples/graphql-queries.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fgraphql-queries.md -->","partner-built/zoom-plugin/skills/rest-api/examples/meeting-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fmeeting-lifecycle.md -->","partner-built/zoom-plugin/skills/rest-api/examples/recording-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Frecording-pipeline.md -->","partner-built/zoom-plugin/skills/rest-api/examples/user-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fuser-management.md -->","partner-built/zoom-plugin/skills/rest-api/examples/webhook-server.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fwebhook-server.md -->","partner-built/zoom-plugin/skills/rest-api/references/accounts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Faccounts.md -->","partner-built/zoom-plugin/skills/rest-api/references/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-companion.md -->","partner-built/zoom-plugin/skills/rest-api/references/ai-services.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-services.md -->","partner-built/zoom-plugin/skills/rest-api/references/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauthentication.md -->","partner-built/zoom-plugin/skills/rest-api/references/auto-dialer.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauto-dialer.md -->","partner-built/zoom-plugin/skills/rest-api/references/calendar.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcalendar.md -->","partner-built/zoom-plugin/skills/rest-api/references/chatbot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fchatbot.md -->","partner-built/zoom-plugin/skills/rest-api/references/clips.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fclips.md -->","partner-built/zoom-plugin/skills/rest-api/references/cobrowse-sdk-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcobrowse-sdk-api.md -->","partner-built/zoom-plugin/skills/rest-api/references/commerce.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcommerce.md -->","partner-built/zoom-plugin/skills/rest-api/references/contact-center.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcontact-center.md -->","partner-built/zoom-plugin/skills/rest-api/references/crc.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcrc.md -->","partner-built/zoom-plugin/skills/rest-api/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rest-api/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/rest-api/references/graphql.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fgraphql.md -->","partner-built/zoom-plugin/skills/rest-api/references/healthcare.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fhealthcare.md -->","partner-built/zoom-plugin/skills/rest-api/references/mail.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmail.md -->","partner-built/zoom-plugin/skills/rest-api/references/marketplace-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmarketplace-apps.md -->","partner-built/zoom-plugin/skills/rest-api/references/meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmeetings.md -->","partner-built/zoom-plugin/skills/rest-api/references/number-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fnumber-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/openapi.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fopenapi.md -->","partner-built/zoom-plugin/skills/rest-api/references/phone.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fphone.md -->","partner-built/zoom-plugin/skills/rest-api/references/qss.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fqss.md -->","partner-built/zoom-plugin/skills/rest-api/references/quality-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fquality-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/rate-limits.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frate-limits.md -->","partner-built/zoom-plugin/skills/rest-api/references/recordings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frecordings.md -->","partner-built/zoom-plugin/skills/rest-api/references/reports.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Freports.md -->","partner-built/zoom-plugin/skills/rest-api/references/revenue-accelerator.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frevenue-accelerator.md -->","partner-built/zoom-plugin/skills/rest-api/references/rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frooms.md -->","partner-built/zoom-plugin/skills/rest-api/references/scheduler.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscheduler.md -->","partner-built/zoom-plugin/skills/rest-api/references/scim2.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscim2.md -->","partner-built/zoom-plugin/skills/rest-api/references/tasks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Ftasks.md -->","partner-built/zoom-plugin/skills/rest-api/references/team-chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fteam-chat.md -->","partner-built/zoom-plugin/skills/rest-api/references/users.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fusers.md -->","partner-built/zoom-plugin/skills/rest-api/references/video-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/video-sdk-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-sdk-api.md -->","partner-built/zoom-plugin/skills/rest-api/references/virtual-agent.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvirtual-agent.md -->","partner-built/zoom-plugin/skills/rest-api/references/webinars.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwebinars.md -->","partner-built/zoom-plugin/skills/rest-api/references/whiteboard.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwhiteboard.md -->","partner-built/zoom-plugin/skills/rest-api/references/workforce-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fworkforce-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/zoom-docs.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fzoom-docs.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/token-scope-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Ftoken-scope-playbook.md -->","partner-built/zoom-plugin/skills/rivet-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/rivet-sdk/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/rivet-sdk/examples/getting-started-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fgetting-started-pattern.md -->","partner-built/zoom-plugin/skills/rivet-sdk/examples/multi-client-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fmulti-client-pattern.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/rivet-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Frivet-reference-map.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/rivet-sdk/rivet-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Frivet-sdk.md -->","partner-built/zoom-plugin/skills/rivet-sdk/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/rivet-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rtms/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rtms/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FSKILL.md -->","partner-built/zoom-plugin/skills/rtms/concepts/connection-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Fconnection-architecture.md -->","partner-built/zoom-plugin/skills/rtms/concepts/lifecycle-flow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Flifecycle-flow.md -->","partner-built/zoom-plugin/skills/rtms/examples/ai-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fai-integration.md -->","partner-built/zoom-plugin/skills/rtms/examples/manual-websocket.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fmanual-websocket.md -->","partner-built/zoom-plugin/skills/rtms/examples/rtms-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Frtms-bot.md -->","partner-built/zoom-plugin/skills/rtms/examples/sdk-quickstart.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fsdk-quickstart.md -->","partner-built/zoom-plugin/skills/rtms/references/connection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fconnection.md -->","partner-built/zoom-plugin/skills/rtms/references/data-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fdata-types.md -->","partner-built/zoom-plugin/skills/rtms/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rtms/references/media-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fmedia-types.md -->","partner-built/zoom-plugin/skills/rtms/references/quickstart.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fquickstart.md -->","partner-built/zoom-plugin/skills/rtms/references/webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fwebhooks.md -->","partner-built/zoom-plugin/skills/rtms/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/scribe/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/scribe/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FSKILL.md -->","partner-built/zoom-plugin/skills/scribe/concepts/auth-and-processing-modes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fconcepts%2Fauth-and-processing-modes.md -->","partner-built/zoom-plugin/skills/scribe/examples/batch-webhook-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Fbatch-webhook-pipeline.md -->","partner-built/zoom-plugin/skills/scribe/examples/fast-mode-node.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Ffast-mode-node.md -->","partner-built/zoom-plugin/skills/scribe/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/scribe/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/scribe/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/scribe/references/versioning-and-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fversioning-and-drift.md -->","partner-built/zoom-plugin/skills/scribe/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/scribe/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-mcp%2FSKILL.md -->","partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-oauth%2FSKILL.md -->","partner-built/zoom-plugin/skills/start/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fstart%2FSKILL.md -->","partner-built/zoom-plugin/skills/team-chat/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/team-chat/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FSKILL.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/api-selection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fapi-selection.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fauthentication.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fdeployment.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/environment-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fenvironment-setup.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/message-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fmessage-structure.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/security.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fsecurity.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fwebhooks.md -->","partner-built/zoom-plugin/skills/team-chat/examples/button-actions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fbutton-actions.md -->","partner-built/zoom-plugin/skills/team-chat/examples/channel-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchannel-management.md -->","partner-built/zoom-plugin/skills/team-chat/examples/chatbot-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchatbot-setup.md -->","partner-built/zoom-plugin/skills/team-chat/examples/database-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdatabase-integration.md -->","partner-built/zoom-plugin/skills/team-chat/examples/dropdown-selects.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdropdown-selects.md -->","partner-built/zoom-plugin/skills/team-chat/examples/form-submissions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fform-submissions.md -->","partner-built/zoom-plugin/skills/team-chat/examples/llm-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fllm-integration.md -->","partner-built/zoom-plugin/skills/team-chat/examples/multi-step-workflows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fmulti-step-workflows.md -->","partner-built/zoom-plugin/skills/team-chat/examples/oauth-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Foauth-setup.md -->","partner-built/zoom-plugin/skills/team-chat/examples/scheduled-alerts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fscheduled-alerts.md -->","partner-built/zoom-plugin/skills/team-chat/examples/send-message.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fsend-message.md -->","partner-built/zoom-plugin/skills/team-chat/examples/slash-commands.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fslash-commands.md -->","partner-built/zoom-plugin/skills/team-chat/examples/token-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Ftoken-management.md -->","partner-built/zoom-plugin/skills/team-chat/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fget-started.md -->","partner-built/zoom-plugin/skills/team-chat/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/team-chat/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/team-chat/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/team-chat/references/jid-formats.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fjid-formats.md -->","partner-built/zoom-plugin/skills/team-chat/references/message-cards.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fmessage-cards.md -->","partner-built/zoom-plugin/skills/team-chat/references/rate-limits.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Frate-limits.md -->","partner-built/zoom-plugin/skills/team-chat/references/sample-comparison.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsample-comparison.md -->","partner-built/zoom-plugin/skills/team-chat/references/samples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsamples.md -->","partner-built/zoom-plugin/skills/team-chat/references/scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fscopes.md -->","partner-built/zoom-plugin/skills/team-chat/references/webhook-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fwebhook-events.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/deployment-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fdeployment-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/message-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fmessage-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/oauth-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Foauth-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/webhook-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fwebhook-issues.md -->","partner-built/zoom-plugin/skills/ui-toolkit/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FSKILL.md -->","partner-built/zoom-plugin/skills/ui-toolkit/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/ui-toolkit/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/android/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fandroid.md -->","partner-built/zoom-plugin/skills/video-sdk/android/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/android/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/android/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/android/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/event-handling-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fevent-handling-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/flutter-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fflutter-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fios.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/raw-data-vs-canvas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fraw-data-vs-canvas.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/cloud-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcloud-recording.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/live-streaming.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Flive-streaming.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/qt-gtk-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fqt-gtk-integration.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-audio-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-audio-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/virtual-audio-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fvirtual-audio-video.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Flinux.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/references/linux-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/pulseaudio-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fpulseaudio-setup.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/qt-dependencies.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fqt-dependencies.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fmacos.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/macos-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/event-handling-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fevent-handling-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/react-native-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Freact-native-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/video-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/video-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/video-sdk/references/licensing-and-entitlements.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Flicensing-and-entitlements.md -->","partner-built/zoom-plugin/skills/video-sdk/references/session-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fsession-lifecycle.md -->","partner-built/zoom-plugin/skills/video-sdk/references/token-contract-test-spec.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftoken-contract-test-spec.md -->","partner-built/zoom-plugin/skills/video-sdk/references/triage-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftriage-intake.md -->","partner-built/zoom-plugin/skills/video-sdk/references/troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftroubleshooting.md -->","partner-built/zoom-plugin/skills/video-sdk/references/ui-toolkit.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fui-toolkit.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/unity-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Funity-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/unity.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Funity.md -->","partner-built/zoom-plugin/skills/video-sdk/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/web/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/web/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/event-handling.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fevent-handling.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/framework-integrations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fframework-integrations.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/react-hooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Freact-hooks.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Frecording.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/screen-share.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fscreen-share.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fvideo-rendering.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/events-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fevents-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/web-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb.md -->","partner-built/zoom-plugin/skills/video-sdk/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/canvas-vs-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fcanvas-vs-raw-data.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/cloud-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcloud-recording.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/dotnet-winforms/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fdotnet-winforms%2FREADME.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-audio-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-audio-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/screen-share-subscription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fscreen-share-subscription.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-audio.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-audio.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-video.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fvideo-rendering.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/delegate-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fdelegate-methods.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/samples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fsamples.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/windows-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/windows-message-loop.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/windows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fwindows.md -->","partner-built/zoom-plugin/skills/virtual-agent/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/virtual-agent/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/concepts/webview-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fconcepts%2Fwebview-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/examples/js-bridge-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fexamples%2Fjs-bridge-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/virtual-agent/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/concepts/webview-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fconcepts%2Fwebview-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/examples/js-bridge-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fexamples%2Fjs-bridge-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/versioning-and-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fversioning-and-drift.md -->","partner-built/zoom-plugin/skills/virtual-agent/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/virtual-agent/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/concepts/lifecycle-and-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/examples/campaign-and-entry-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fexamples%2Fcampaign-and-entry-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/references/web-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Freferences%2Fweb-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/webhooks/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/webhooks/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FSKILL.md -->","partner-built/zoom-plugin/skills/webhooks/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/webhooks/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/webhooks/references/signature-verification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsignature-verification.md -->","partner-built/zoom-plugin/skills/webhooks/references/subscriptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsubscriptions.md -->","partner-built/zoom-plugin/skills/webhooks/references/verification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fverification.md -->","partner-built/zoom-plugin/skills/webhooks/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/websockets/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/websockets/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FSKILL.md -->","partner-built/zoom-plugin/skills/websockets/references/connection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fconnection.md -->","partner-built/zoom-plugin/skills/websockets/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/websockets/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/websockets/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/meeting-sdk-vs-zoom-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fmeeting-sdk-vs-zoom-apps.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/running-contexts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Frunning-contexts.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/security.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fsecurity.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/app-communication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fapp-communication.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/collaborate-mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fcollaborate-mode.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/guest-mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fguest-mode.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/in-client-oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fin-client-oauth.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-camera.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-camera.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-immersive.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-immersive.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/quick-start.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fquick-start.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/apis.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fapis.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/layers-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Flayers-api.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Foauth.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/zmail-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fzmail-sdk.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/debugging.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fdebugging.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/migration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fmigration.md -->","partner-built/zoom-plugin/skills/zoom-mcp/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/zoom-mcp/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-mcp/concepts/mcp-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Fmcp-architecture.md -->","partner-built/zoom-plugin/skills/zoom-mcp/concepts/oauth-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Foauth-setup.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/create-zoom-doc.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fcreate-zoom-doc.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/meeting-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fmeeting-lifecycle.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/search-and-act.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fsearch-and-act.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/transcript-retrieval.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Ftranscript-retrieval.md -->","partner-built/zoom-plugin/skills/zoom-mcp/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/zoom-mcp/references/tools.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ftools.md -->","partner-built/zoom-plugin/skills/zoom-mcp/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/authentication-and-identifiers.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Fauthentication-and-identifiers.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/tools.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Ftools.md -->","pdf-viewer/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2F.claude-plugin%2Fplugin.json -->","pdf-viewer/skills/view-pdf/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2Fskills%2Fview-pdf%2FSKILL.md -->","product-management/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2F.claude-plugin%2Fplugin.json -->","product-management/skills/competitive-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","product-management/skills/metrics-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fmetrics-review%2FSKILL.md -->","product-management/skills/product-brainstorming/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fproduct-brainstorming%2FSKILL.md -->","product-management/skills/roadmap-update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Froadmap-update%2FSKILL.md -->","product-management/skills/sprint-planning/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsprint-planning%2FSKILL.md -->","product-management/skills/stakeholder-update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fstakeholder-update%2FSKILL.md -->","product-management/skills/synthesize-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsynthesize-research%2FSKILL.md -->","product-management/skills/write-spec/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fwrite-spec%2FSKILL.md -->","productivity/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2F.claude-plugin%2Fplugin.json -->","productivity/skills/memory-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fmemory-management%2FSKILL.md -->","productivity/skills/start/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fstart%2FSKILL.md -->","productivity/skills/task-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Ftask-management%2FSKILL.md -->","productivity/skills/update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fupdate%2FSKILL.md -->","sales/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2F.claude-plugin%2Fplugin.json -->","sales/skills/account-context/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-context%2FSKILL.md -->","sales/skills/account-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-plan%2FSKILL.md -->","sales/skills/account-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-research%2FSKILL.md -->","sales/skills/account-tiering/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-tiering%2FSKILL.md -->","sales/skills/call-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-prep%2FSKILL.md -->","sales/skills/call-summary/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-summary%2FSKILL.md -->","sales/skills/close-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fclose-plan%2FSKILL.md -->","sales/skills/competitive-intelligence/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcompetitive-intelligence%2FSKILL.md -->","sales/skills/create-an-asset/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcreate-an-asset%2FSKILL.md -->","sales/skills/crm-hygiene-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcrm-hygiene-check%2FSKILL.md -->","sales/skills/customer-health/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-health%2FSKILL.md -->","sales/skills/customer-voice/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-voice%2FSKILL.md -->","sales/skills/daily-briefing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdaily-briefing%2FSKILL.md -->","sales/skills/deal-advance-gap/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-advance-gap%2FSKILL.md -->","sales/skills/deal-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-review%2FSKILL.md -->","sales/skills/deal-signals/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-signals%2FSKILL.md -->","sales/skills/deal-slip-scenario/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-slip-scenario%2FSKILL.md -->","sales/skills/draft-outreach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdraft-outreach%2FSKILL.md -->","sales/skills/end-of-day/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fend-of-day%2FSKILL.md -->","sales/skills/expansion-whitespace/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fexpansion-whitespace%2FSKILL.md -->","sales/skills/forecast/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fforecast%2FSKILL.md -->","sales/skills/handle-objection/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fhandle-objection%2FSKILL.md -->","sales/skills/inbox-sweep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Finbox-sweep%2FSKILL.md -->","sales/skills/lead-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flead-triage%2FSKILL.md -->","sales/skills/log-activity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flog-activity%2FSKILL.md -->","sales/skills/pipeline-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fpipeline-review%2FSKILL.md -->","sales/skills/renewal-radar/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frenewal-radar%2FSKILL.md -->","sales/skills/rep-context/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frep-context%2FSKILL.md -->","sales/skills/route-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Froute-lead%2FSKILL.md -->","sales/skills/schedule-meeting/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fschedule-meeting%2FSKILL.md -->","sales/skills/setup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fsetup%2FSKILL.md -->","sales/skills/stakeholder-map/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fstakeholder-map%2FSKILL.md -->","sales/skills/team-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fteam-pipeline%2FSKILL.md -->","sales/skills/update-opportunity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fupdate-opportunity%2FSKILL.md -->","sales/skills/weekly-wrap/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fweekly-wrap%2FSKILL.md -->","sales/skills/win-loss-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fwin-loss-review%2FSKILL.md -->","small-business/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2F.claude-plugin%2Fplugin.json -->","small-business/skills/ad-manager/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2FSKILL.md -->","small-business/skills/ad-manager/reference/ad_copy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fad_copy.md -->","small-business/skills/ad-manager/reference/change_playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fchange_playbook.md -->","small-business/skills/ad-manager/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdata_sources.md -->","small-business/skills/ad-manager/reference/diagnostics.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdiagnostics.md -->","small-business/skills/ad-manager/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fgotchas.md -->","small-business/skills/ap-processor/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2FSKILL.md -->","small-business/skills/ap-processor/reference/coding_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fcoding_rules.md -->","small-business/skills/ap-processor/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fgotchas.md -->","small-business/skills/ap-processor/reference/intake_and_extraction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fintake_and_extraction.md -->","small-business/skills/ap-processor/reference/matching_and_exceptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fmatching_and_exceptions.md -->","small-business/skills/ap-processor/reference/payment_run.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fpayment_run.md -->","small-business/skills/brand-style/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbrand-style%2FSKILL.md -->","small-business/skills/build-agent/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2FSKILL.md -->","small-business/skills/build-agent/reference/capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fcapture.md -->","small-business/skills/build-agent/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fgotchas.md -->","small-business/skills/build-agent/reference/skill_authoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fskill_authoring.md -->","small-business/skills/build-connector/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2FSKILL.md -->","small-business/skills/build-connector/reference/discovery.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fdiscovery.md -->","small-business/skills/build-connector/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fgotchas.md -->","small-business/skills/build-connector/reference/paths.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fpaths.md -->","small-business/skills/build-connector/reference/use-zapier.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fuse-zapier.md -->","small-business/skills/business-pulse/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2FSKILL.md -->","small-business/skills/business-pulse/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fdata_sources.md -->","small-business/skills/business-pulse/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fgotchas.md -->","small-business/skills/business-pulse/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Foutput_template.md -->","small-business/skills/business-pulse/reference/thresholds.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fthresholds.md -->","small-business/skills/business-pulse/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fv2_sources.md -->","small-business/skills/call-list/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcall-list%2FSKILL.md -->","small-business/skills/canva-creator/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2FSKILL.md -->","small-business/skills/canva-creator/reference/canva-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fcanva-api.md -->","small-business/skills/canva-creator/reference/examples/boutique-brief-campaign.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fexamples%2Fboutique-brief-campaign.md -->","small-business/skills/canva-creator/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fgotchas.md -->","small-business/skills/canva-creator/reference/hubspot-staging.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fhubspot-staging.md -->","small-business/skills/cash-flow-snapshot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2FSKILL.md -->","small-business/skills/cash-flow-snapshot/reference/examples/worked-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fexamples%2Fworked-example.md -->","small-business/skills/cash-flow-snapshot/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fgotchas.md -->","small-business/skills/cash-flow-snapshot/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fv2_sources.md -->","small-business/skills/close-month/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fclose-month%2FSKILL.md -->","small-business/skills/content-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2FSKILL.md -->","small-business/skills/content-strategy/reference/examples/retail-boutique-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fexamples%2Fretail-boutique-example.md -->","small-business/skills/content-strategy/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fgotchas.md -->","small-business/skills/content-strategy/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fv2_sources.md -->","small-business/skills/contract-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2FSKILL.md -->","small-business/skills/contract-review/reference/docusign-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fdocusign-fetch.md -->","small-business/skills/contract-review/reference/examples/flagged-summary-saas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fexamples%2Fflagged-summary-saas.md -->","small-business/skills/contract-review/reference/gmail-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgmail-fetch.md -->","small-business/skills/contract-review/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgotchas.md -->","small-business/skills/contract-review/reference/m365-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fm365-fetch.md -->","small-business/skills/crm-autopilot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2FSKILL.md -->","small-business/skills/crm-autopilot/reference/cleanup-checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fcleanup-checklist.md -->","small-business/skills/crm-autopilot/reference/examples/cleanup-deal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Fcleanup-deal.md -->","small-business/skills/crm-autopilot/reference/examples/log-call-happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-call-happy-path.md -->","small-business/skills/crm-autopilot/reference/examples/log-email-happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-email-happy-path.md -->","small-business/skills/crm-autopilot/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fgotchas.md -->","small-business/skills/crm-autopilot/reference/hubspot-fields.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fhubspot-fields.md -->","small-business/skills/crm-autopilot/reference/lightweight_crm.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Flightweight_crm.md -->","small-business/skills/crm-autopilot/reference/salesforce-fields.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fsalesforce-fields.md -->","small-business/skills/crm-autopilot/reference/standing_mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fstanding_mode.md -->","small-business/skills/grant-rfp-writer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2FSKILL.md -->","small-business/skills/grant-rfp-writer/reference/drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fdrafting.md -->","small-business/skills/grant-rfp-writer/reference/go_no_go.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgo_no_go.md -->","small-business/skills/grant-rfp-writer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgotchas.md -->","small-business/skills/grant-rfp-writer/reference/opportunity_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fopportunity_sources.md -->","small-business/skills/grant-rfp-writer/reference/org_profile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Forg_profile.md -->","small-business/skills/grow-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrow-pipeline%2FSKILL.md -->","small-business/skills/growth-pulse/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2FSKILL.md -->","small-business/skills/growth-pulse/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fdata_sources.md -->","small-business/skills/growth-pulse/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fgotchas.md -->","small-business/skills/growth-pulse/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Foutput_template.md -->","small-business/skills/growth-pulse/reference/thresholds.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fthresholds.md -->","small-business/skills/hiring-screener/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2FSKILL.md -->","small-business/skills/hiring-screener/reference/candidate_comms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fcandidate_comms.md -->","small-business/skills/hiring-screener/reference/fair_screening.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Ffair_screening.md -->","small-business/skills/hiring-screener/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fgotchas.md -->","small-business/skills/hiring-screener/reference/onboarding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fonboarding.md -->","small-business/skills/hiring-screener/reference/rubric.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Frubric.md -->","small-business/skills/inbox-manager/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2FSKILL.md -->","small-business/skills/inbox-manager/reference/digest_format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fdigest_format.md -->","small-business/skills/inbox-manager/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fgotchas.md -->","small-business/skills/inbox-manager/reference/handoffs.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fhandoffs.md -->","small-business/skills/inbox-manager/reference/reply_drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Freply_drafting.md -->","small-business/skills/inbox-manager/reference/triage_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Ftriage_rules.md -->","small-business/skills/inventory-planner/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2FSKILL.md -->","small-business/skills/inventory-planner/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fdata_sources.md -->","small-business/skills/inventory-planner/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fgotchas.md -->","small-business/skills/inventory-planner/reference/po_drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fpo_drafting.md -->","small-business/skills/inventory-planner/reference/seasonality.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fseasonality.md -->","small-business/skills/inventory-planner/reference/velocity_and_reorder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fvelocity_and_reorder.md -->","small-business/skills/invoice-chase/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2FSKILL.md -->","small-business/skills/invoice-chase/reference/examples/firm-reminder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Ffirm-reminder.md -->","small-business/skills/invoice-chase/reference/examples/gentle-reminder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Fgentle-reminder.md -->","small-business/skills/invoice-chase/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fgotchas.md -->","small-business/skills/invoice-chase/reference/tone-matching.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Ftone-matching.md -->","small-business/skills/invoice-chase/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fv2_sources.md -->","small-business/skills/job-post-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2FSKILL.md -->","small-business/skills/job-post-builder/reference/docusign-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fdocusign-routing.md -->","small-business/skills/job-post-builder/reference/examples/worked-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexamples%2Fworked-example.md -->","small-business/skills/job-post-builder/reference/existing-document-merge.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexisting-document-merge.md -->","small-business/skills/job-post-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fgotchas.md -->","small-business/skills/job-post-builder/reference/interview-guide-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Finterview-guide-structure.md -->","small-business/skills/job-post-builder/reference/job-post-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fjob-post-structure.md -->","small-business/skills/job-post-builder/reference/offer-letter-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Foffer-letter-template.md -->","small-business/skills/job-post-builder/reference/role-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Frole-intake.md -->","small-business/skills/lead-finder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2FSKILL.md -->","small-business/skills/lead-finder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fgotchas.md -->","small-business/skills/lead-finder/reference/icp_method.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Ficp_method.md -->","small-business/skills/lead-finder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Foutput_template.md -->","small-business/skills/lead-finder/reference/scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fscoring.md -->","small-business/skills/lead-finder/reference/sourcing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fsourcing.md -->","small-business/skills/lead-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2FSKILL.md -->","small-business/skills/lead-triage/reference/examples/happy-path-triage.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fexamples%2Fhappy-path-triage.md -->","small-business/skills/lead-triage/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fgotchas.md -->","small-business/skills/lead-triage/reference/hubspot-scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fhubspot-scoring.md -->","small-business/skills/marketing-monday/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmarketing-monday%2FSKILL.md -->","small-business/skills/monday-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonday-brief%2FSKILL.md -->","small-business/skills/month-end-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2FSKILL.md -->","small-business/skills/month-end-prep/reference/close-packet-format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fclose-packet-format.md -->","small-business/skills/month-end-prep/reference/examples/pl-narrative.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fexamples%2Fpl-narrative.md -->","small-business/skills/month-end-prep/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fgotchas.md -->","small-business/skills/month-end-prep/reference/paypal-settlements.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fpaypal-settlements.md -->","small-business/skills/month-end-prep/reference/quickbooks-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fquickbooks-reconcile.md -->","small-business/skills/month-end-prep/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fv2_sources.md -->","small-business/skills/month-end-prep/reference/xero-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fxero-reconcile.md -->","small-business/skills/month-end-prep/reference/zoho-books-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fzoho-books-reconcile.md -->","small-business/skills/outreach-composer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2FSKILL.md -->","small-business/skills/outreach-composer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fgotchas.md -->","small-business/skills/outreach-composer/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Foutput_template.md -->","small-business/skills/outreach-composer/reference/sequence_patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fsequence_patterns.md -->","small-business/skills/outreach-composer/reference/slop_test.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fslop_test.md -->","small-business/skills/pay-the-bills/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpay-the-bills%2FSKILL.md -->","small-business/skills/payroll-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2FSKILL.md -->","small-business/skills/payroll-prep/reference/anomaly_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fanomaly_rules.md -->","small-business/skills/payroll-prep/reference/books_sync.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fbooks_sync.md -->","small-business/skills/payroll-prep/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fgotchas.md -->","small-business/skills/payroll-prep/reference/run_sheet_format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Frun_sheet_format.md -->","small-business/skills/payroll-prep/reference/timesheet_intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Ftimesheet_intake.md -->","small-business/skills/plan-payroll/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fplan-payroll%2FSKILL.md -->","small-business/skills/proposal-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2FSKILL.md -->","small-business/skills/proposal-builder/reference/discovery_extraction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fdiscovery_extraction.md -->","small-business/skills/proposal-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fgotchas.md -->","small-business/skills/proposal-builder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Foutput_template.md -->","small-business/skills/proposal-builder/reference/pricing_method.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fpricing_method.md -->","small-business/skills/proposal-builder/reference/proposal_structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fproposal_structure.md -->","small-business/skills/reactivate/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freactivate%2FSKILL.md -->","small-business/skills/report-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2FSKILL.md -->","small-business/skills/report-builder/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fdata_sources.md -->","small-business/skills/report-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fgotchas.md -->","small-business/skills/report-builder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Foutput_template.md -->","small-business/skills/report-builder/reference/report_spec.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Freport_spec.md -->","small-business/skills/report-builder/reference/saved_reports.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fsaved_reports.md -->","small-business/skills/report-pack/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-pack%2FSKILL.md -->","small-business/skills/restock/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Frestock%2FSKILL.md -->","small-business/skills/review-reputation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2FSKILL.md -->","small-business/skills/review-reputation/reference/churn-signals.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fchurn-signals.md -->","small-business/skills/review-reputation/reference/examples/example-report.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fexamples%2Fexample-report.md -->","small-business/skills/review-reputation/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fgotchas.md -->","small-business/skills/review-reputation/reference/response-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fresponse-patterns.md -->","small-business/skills/review-reputation/reference/sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fsources.md -->","small-business/skills/seo-ai-visibility/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2FSKILL.md -->","small-business/skills/seo-ai-visibility/reference/ai_visibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fai_visibility.md -->","small-business/skills/seo-ai-visibility/reference/audit_checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Faudit_checklist.md -->","small-business/skills/seo-ai-visibility/reference/catalog_refresh.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcatalog_refresh.md -->","small-business/skills/seo-ai-visibility/reference/content_rewrite.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcontent_rewrite.md -->","small-business/skills/seo-ai-visibility/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fgotchas.md -->","small-business/skills/smb-onboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2FSKILL.md -->","small-business/skills/smb-onboard/reference/examples/happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fexamples%2Fhappy-path.md -->","small-business/skills/smb-onboard/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fgotchas.md -->","small-business/skills/smb-onboard/reference/onboard-checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fonboard-checklist.md -->","small-business/skills/smb-onboard/reference/website-research.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fwebsite-research.md -->","small-business/skills/smb-router/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2FSKILL.md -->","small-business/skills/smb-router/reference/connector-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2Freference%2Fconnector-map.md -->","small-business/skills/social-content-engine/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2FSKILL.md -->","small-business/skills/social-content-engine/reference/calendar.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcalendar.md -->","small-business/skills/social-content-engine/reference/canva-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcanva-api.md -->","small-business/skills/social-content-engine/reference/examples/okonkwo-campaign.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fexamples%2Fokonkwo-campaign.md -->","small-business/skills/social-content-engine/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fgotchas.md -->","small-business/skills/social-content-engine/reference/publishing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fpublishing.md -->","small-business/skills/social-content-engine/reference/shopify-assets.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fshopify-assets.md -->","small-business/skills/speed-to-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2FSKILL.md -->","small-business/skills/speed-to-lead/reference/approval.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fapproval.md -->","small-business/skills/speed-to-lead/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fgotchas.md -->","small-business/skills/speed-to-lead/reference/qualification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fqualification.md -->","small-business/skills/speed-to-lead/reference/response_patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fresponse_patterns.md -->","small-business/skills/tax-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-prep%2FSKILL.md -->","small-business/skills/tax-season-organizer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2FSKILL.md -->","small-business/skills/tax-season-organizer/reference/calculation-assumptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fcalculation-assumptions.md -->","small-business/skills/tax-season-organizer/reference/connector-queries.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fconnector-queries.md -->","small-business/skills/tax-season-organizer/reference/examples/quarterly-estimate.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fquarterly-estimate.md -->","small-business/skills/tax-season-organizer/reference/examples/year-end-1099.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fyear-end-1099.md -->","small-business/skills/tax-season-organizer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fgotchas.md -->","small-business/skills/tax-season-organizer/reference/output-formats.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Foutput-formats.md -->","small-business/skills/ticket-deflector/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2FSKILL.md -->","small-business/skills/ticket-deflector/reference/examples/deny-refund-request.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Fdeny-refund-request.md -->","small-business/skills/ticket-deflector/reference/examples/respond-refund-request.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Frespond-refund-request.md -->","small-business/skills/ticket-deflector/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fgotchas.md -->"},"files":{".claude-plugin/marketplace.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=.claude-plugin%2Fmarketplace.json -->","bio-research/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=bio-research%2F.claude-plugin%2Fplugin.json -->","bio-research/skills/instrument-data-to-allotrope/SKILL.md":"---\nname: instrument-data-to-allotrope\ndescription: Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.\n---\n\n# Instrument Data to Allotrope Converter\n\nConvert instrument files into standardized Allotrope Simple Model (ASM) format for LIMS upload, data lakes, or handoff to data engineering teams.\n\n> **Note: This is an Example Skill**\n>\n> This skill demonstrates how skills can support your data engineering tasks—automating schema transformations, parsing instrument outputs, and generating production-ready code.\n>\n> **To customize for your organization:**\n> - Modify the `references/` files to include your company's specific schemas or ontology mappings\n> - Use an MCP server to connect to systems that define your schemas (e.g., your LIMS, data catalog, or schema registry)\n> - Extend the `scripts/` to handle proprietary instrument formats or internal data standards\n>\n> This pattern can be adapted for any data transformation workflow where you need to convert between formats or validate against organizational standards.\n\n## Workflow Overview\n\n1. **Detect instrument type** from file contents (auto-detect or user-specified)\n2. **Parse file** using allotropy library (native) or flexible fallback parser\n3. **Generate outputs**:\n   - ASM JSON (full semantic structure)\n   - Flattened CSV (2D tabular format)\n   - Python parser code (for data engineer handoff)\n4. **Deliver** files with summary and usage instructions\n\n> **When Uncertain:** If you're unsure how to map a field to ASM (e.g., is this raw data or calculated? device setting or environmental condition?), ask the user for clarification. Refer to `references/field_classification_guide.md` for guidance, but when ambiguity remains, confirm with the user rather than guessing.\n\n## Quick Start\n\n```python\n# Install requirements first\npip install allotropy pandas openpyxl pdfplumber --break-system-packages\n\n# Core conversion\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# Convert with allotropy\nasm = allotrope_from_file(\"instrument_data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Output Format Selection\n\n**ASM JSON (default)** - Full semantic structure with ontology URIs\n- Best for: LIMS systems expecting ASM, data lakes, long-term archival\n- Validates against Allotrope schemas\n\n**Flattened CSV** - 2D tabular representation\n- Best for: Quick analysis, Excel users, systems without JSON support\n- Each measurement becomes one row with metadata repeated\n\n**Both** - Generate both formats for maximum flexibility\n\n## Calculated Data Handling\n\n**IMPORTANT:** Separate raw measurements from calculated/derived values.\n\n- **Raw data** → `measurement-document` (direct instrument readings)\n- **Calculated data** → `calculated-data-aggregate-document` (derived values)\n\nCalculated values MUST include traceability via `data-source-aggregate-document`:\n\n```json\n\"calculated-data-aggregate-document\": {\n  \"calculated-data-document\": [{\n    \"calculated-data-identifier\": \"SAMPLE_B1_DIN_001\",\n    \"calculated-data-name\": \"DNA integrity number\",\n    \"calculated-result\": {\"value\": 9.5, \"unit\": \"(unitless)\"},\n    \"data-source-aggregate-document\": {\n      \"data-source-document\": [{\n        \"data-source-identifier\": \"SAMPLE_B1_MEASUREMENT\",\n        \"data-source-feature\": \"electrophoresis trace\"\n      }]\n    }\n  }]\n}\n```\n\n**Common calculated fields by instrument type:**\n| Instrument | Calculated Fields |\n|------------|-------------------|\n| Cell counter | Viability %, cell density dilution-adjusted values |\n| Spectrophotometer | Concentration (from absorbance), 260/280 ratio |\n| Plate reader | Concentrations from standard curve, %CV |\n| Electrophoresis | DIN/RIN, region concentrations, average sizes |\n| qPCR | Relative quantities, fold change |\n\nSee `references/field_classification_guide.md` for detailed guidance on raw vs. calculated classification.\n\n## Validation\n\nAlways validate ASM output before delivering to the user:\n\n```bash\npython scripts/validate_asm.py output.json\npython scripts/validate_asm.py output.json --reference known_good.json  # Compare to reference\npython scripts/validate_asm.py output.json --strict  # Treat warnings as errors\n```\n\n**Validation Rules:**\n- Based on Allotrope ASM specification (December 2024)\n- Last updated: 2026-01-07\n- Source: https://gitlab.com/allotrope-public/asm\n\n**Soft Validation Approach:**\nUnknown techniques, units, or sample roles generate **warnings** (not errors) to allow for forward compatibility. If Allotrope adds new values after December 2024, the validator won't block them—it will flag them for manual verification. Use `--strict` mode to treat warnings as errors if you need stricter validation.\n\n**What it checks:**\n- Correct technique selection (e.g., multi-analyte profiling vs plate reader)\n- Field naming conventions (space-separated, not hyphenated)\n- Calculated data has traceability (`data-source-aggregate-document`)\n- Unique identifiers exist for measurements and calculated values\n- Required metadata present\n- Valid units and sample roles (with soft validation for unknown values)\n\n## Supported Instruments\n\nSee `references/supported_instruments.md` for complete list. Key instruments:\n\n| Category | Instruments |\n|----------|-------------|\n| Cell Counting | Vi-CELL BLU, Vi-CELL XR, NucleoCounter |\n| Spectrophotometry | NanoDrop One/Eight/8000, Lunatic |\n| Plate Readers | SoftMax Pro, EnVision, Gen5, CLARIOstar |\n| ELISA | SoftMax Pro, BMG MARS, MSD Workbench |\n| qPCR | QuantStudio, Bio-Rad CFX |\n| Chromatography | Empower, Chromeleon |\n\n## Detection & Parsing Strategy\n\n### Tier 1: Native allotropy parsing (PREFERRED)\n**Always try allotropy first.** Check available vendors directly:\n\n```python\nfrom allotropy.parser_factory import Vendor\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}\")\n\n# Common vendors:\n# AGILENT_TAPESTATION_ANALYSIS  (for TapeStation XML)\n# BECKMAN_VI_CELL_BLU\n# THERMO_FISHER_NANODROP_EIGHT\n# MOLDEV_SOFTMAX_PRO\n# APPBIO_QUANTSTUDIO\n# ... many more\n```\n\n**When the user provides a file, check if allotropy supports it before falling back to manual parsing.** The `scripts/convert_to_asm.py` auto-detection only covers a subset of allotropy vendors.\n\n### Tier 2: Flexible fallback parsing\n**Only use if allotropy doesn't support the instrument.** This fallback:\n- Does NOT generate `calculated-data-aggregate-document`\n- Does NOT include full traceability\n- Produces simplified ASM structure\n\nUse flexible parser with:\n- Column name fuzzy matching\n- Unit extraction from headers\n- Metadata extraction from file structure\n\n### Tier 3: PDF extraction\nFor PDF-only files, extract tables using pdfplumber, then apply Tier 2 parsing.\n\n## Pre-Parsing Checklist\n\nBefore writing a custom parser, ALWAYS:\n\n1. **Check if allotropy supports it** - Use native parser if available\n2. **Find a reference ASM file** - Check `references/examples/` or ask user\n3. **Review instrument-specific guide** - Check `references/instrument_guides/`\n4. **Validate against reference** - Run `validate_asm.py --reference <file>`\n\n## Common Mistakes to Avoid\n\n| Mistake | Correct Approach |\n|---------|------------------|\n| Manifest as object | Use URL string |\n| Lowercase detection types | Use \"Absorbance\" not \"absorbance\" |\n| \"emission wavelength setting\" | Use \"detector wavelength setting\" for emission |\n| All measurements in one document | Group by well/sample location |\n| Missing procedure metadata | Extract ALL device settings per measurement |\n\n## Code Export for Data Engineers\n\nGenerate standalone Python scripts that scientists can hand off:\n\n```python\n# Export parser code\npython scripts/export_parser.py --input \"data.csv\" --vendor \"VI_CELL_BLU\" --output \"parser_script.py\"\n```\n\nThe exported script:\n- Has no external dependencies beyond pandas/allotropy\n- Includes inline documentation\n- Can run in Jupyter notebooks\n- Is production-ready for data pipelines\n\n## File Structure\n\n```\ninstrument-data-to-allotrope/\n├── SKILL.md                          # This file\n├── scripts/\n│   ├── convert_to_asm.py            # Main conversion script\n│   ├── flatten_asm.py               # ASM → 2D CSV conversion\n│   ├── export_parser.py             # Generate standalone parser code\n│   └── validate_asm.py              # Validate ASM output quality\n└── references/\n    ├── supported_instruments.md     # Full instrument list with Vendor enums\n    ├── asm_schema_overview.md       # ASM structure reference\n    ├── field_classification_guide.md # Where to put different field types\n    └── flattening_guide.md          # How flattening works\n```\n\n## Usage Examples\n\n### Example 1: Vi-CELL BLU file\n```\nUser: \"Convert this cell counting data to Allotrope format\"\n[uploads viCell_Results.xlsx]\n\nClaude:\n1. Detects Vi-CELL BLU (95% confidence)\n2. Converts using allotropy native parser\n3. Outputs:\n   - viCell_Results_asm.json (full ASM)\n   - viCell_Results_flat.csv (2D format)\n   - viCell_parser.py (exportable code)\n```\n\n### Example 2: Request for code handoff\n```\nUser: \"I need to give our data engineer code to parse NanoDrop files\"\n\nClaude:\n1. Generates self-contained Python script\n2. Includes sample input/output\n3. Documents all assumptions\n4. Provides Jupyter notebook version\n```\n\n### Example 3: LIMS-ready flattened output\n```\nUser: \"Convert this ELISA data to a CSV I can upload to our LIMS\"\n\nClaude:\n1. Parses plate reader data\n2. Generates flattened CSV with columns:\n   - sample_identifier, well_position, measurement_value, measurement_unit\n   - instrument_serial_number, analysis_datetime, assay_type\n3. Validates against common LIMS import requirements\n```\n\n## Implementation Notes\n\n### Installing allotropy\n```bash\npip install allotropy --break-system-packages\n```\n\n### Handling parse failures\nIf allotropy native parsing fails:\n1. Log the error for debugging\n2. Fall back to flexible parser\n3. Report reduced metadata completeness to user\n4. Suggest exporting different format from instrument\n\n### ASM Schema Validation\nValidate output against Allotrope schemas when available:\n```python\nimport jsonschema\n# Schema URLs in references/asm_schema_overview.md\n```\n","bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md":"# ASM Schema Overview\n\nThe Allotrope Simple Model (ASM) is a JSON-based standard for representing laboratory instrument data with semantic consistency.\n\n## Core Concepts\n\n### Structure\nASM uses a hierarchical document structure:\n- **Manifest** - Links to ontologies and schemas\n- **Data** - The actual measurement data organized by technique\n\n### Key Components\n\n```json\n{\n  \"$asm.manifest\": {\n    \"vocabulary\": [\"http://purl.allotrope.org/voc/afo/REC/2023/09/\"],\n    \"contexts\": [\"http://purl.allotrope.org/json-ld/afo-context-REC-2023-09.jsonld\"]\n  },\n  \"<technique>-aggregate-document\": {\n    \"device-system-document\": { ... },\n    \"<technique>-document\": [\n      {\n        \"measurement-aggregate-document\": {\n          \"measurement-document\": [ ... ]\n        }\n      }\n    ]\n  }\n}\n```\n\n## Required Metadata Documents\n\n### data system document\nEvery ASM output MUST include this document with:\n- `ASM file identifier`: Output filename\n- `data system instance identifier`: System ID or \"N/A\"\n- `file name`: Source input filename\n- `UNC path`: Path to source file\n- `ASM converter name`: Parser identifier (e.g., \"allotropy_beckman_coulter_biomek\")\n- `ASM converter version`: Version string\n- `software name`: Instrument software that generated the source file\n\n### device system document\nEvery ASM output MUST include this document with:\n- `equipment serial number`: Main instrument serial\n- `product manufacturer`: Vendor name\n- `device document`: Array of sub-components (probes, pods, etc.)\n  - `device type`: Standardized type (e.g., \"liquid handler probe head\")\n  - `device identifier`: Logical name (e.g., \"Pod1\", not serial number)\n  - `equipment serial number`: Component serial\n  - `product manufacturer`: Component vendor\n\n## Available ASM Techniques\n\nThe official ASM repository includes **65 technique schemas**:\n\n```\nabsorbance, automated-reactors, balance, bga, binding-affinity, bulk-density,\ncell-counting, cell-culture-analyzer, chromatography, code-reader, conductance,\nconductivity, disintegration, dsc, dvs, electronic-lab-notebook,\nelectronic-spectrometry, electrophoresis, flow-cytometry, fluorescence,\nfoam-height, foam-qualification, fplc, ftir, gas-chromatography, gc-ms, gloss,\nhot-tack, impedance, lc-ms, light-obscuration, liquid-chromatography,\nloss-on-drying, luminescence, mass-spectrometry, metabolite-analyzer,\nmulti-analyte-profiling, nephelometry, nmr, optical-imaging, optical-microscopy,\nosmolality, oven-kf, pcr, ph, plate-reader, pressure-monitoring, psd, pumping,\nraman, rheometry, sem, solution-analyzer, specific-rotation, spectrophotometry,\nstirring, surface-area-analysis, tablet-hardness, temperature-monitoring,\ntensile-test, thermogravimetric-analysis, titration, ultraviolet-absorbance,\nx-ray-powder-diffraction\n```\n\nSee: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\n## Common ASM Schemas by Technique\n\nBelow are details for frequently-used techniques:\n\n### Cell Counting\nSchema: `cell-counting/REC/2024/09/cell-counting.schema.json`\n\nKey fields:\n- `viable-cell-density` (cells/mL)\n- `viability` (percentage)\n- `total-cell-count`\n- `dead-cell-count`\n- `cell-diameter-distribution-datum`\n\n### Spectrophotometry (UV-Vis)\nSchema: `spectrophotometry/REC/2024/06/spectrophotometry.schema.json`\n\nKey fields:\n- `absorbance` (dimensionless)\n- `wavelength` (nm)\n- `transmittance` (percentage)\n- `pathlength` (cm)\n- `concentration` with units\n\n### Plate Reader\nSchema: `plate-reader/REC/2024/06/plate-reader.schema.json`\n\nKey fields:\n- `absorbance`\n- `fluorescence`\n- `luminescence`\n- `well-location` (A1-H12)\n- `plate-identifier`\n\n### qPCR\nSchema: `pcr/REC/2024/06/pcr.schema.json`\n\nKey fields:\n- `cycle-threshold-result`\n- `amplification-efficiency`\n- `melt-curve-datum`\n- `target-DNA-description`\n\n### Chromatography\nSchema: `liquid-chromatography/REC/2023/09/liquid-chromatography.schema.json`\n\nKey fields:\n- `retention-time` (minutes)\n- `peak-area`\n- `peak-height`\n- `peak-width`\n- `chromatogram-data-cube`\n\n## Data Patterns\n\n### Value Datum\nSimple value with unit:\n```json\n{\n  \"value\": 1.5,\n  \"unit\": \"mL\"\n}\n```\n\n### Aggregate Datum\nCollection of related values:\n```json\n{\n  \"measurement-aggregate-document\": {\n    \"measurement-document\": [\n      { \"viable-cell-density\": {\"value\": 2.5e6, \"unit\": \"(cell/mL)\"} },\n      { \"viability\": {\"value\": 95.2, \"unit\": \"%\"} }\n    ]\n  }\n}\n```\n\n### Data Cube\nMulti-dimensional array data:\n```json\n{\n  \"cube-structure\": {\n    \"dimensions\": [{\"@componentDatatype\": \"double\", \"concept\": \"elapsed time\"}],\n    \"measures\": [{\"@componentDatatype\": \"double\", \"concept\": \"absorbance\"}]\n  },\n  \"data\": {\n    \"dimensions\": [[0, 1, 2, 3, 4]],\n    \"measures\": [[0.1, 0.2, 0.3, 0.4, 0.5]]\n  }\n}\n```\n\n## Validation\n\nValidate ASM output against official schemas:\n\n```python\nimport json\nimport jsonschema\nfrom urllib.request import urlopen\n\n# Load ASM output\nwith open(\"output.json\") as f:\n    asm = json.load(f)\n\n# Get schema URL from manifest\nschema_url = asm.get(\"$asm.manifest\", {}).get(\"$ref\")\n\n# Validate (simplified - real validation more complex)\n# Note: Full validation requires resolving $ref references\n```\n\n## Schema Repository\n\nOfficial schemas: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\nSchema structure:\n```\njson-schemas/adm/\n├── cell-counting/\n│   └── REC/2024/09/\n│       └── cell-counting.schema.json\n├── spectrophotometry/\n│   └── REC/2024/06/\n│       └── spectrophotometry.schema.json\n├── plate-reader/\n│   └── REC/2024/06/\n│       └── plate-reader.schema.json\n└── ...\n```\n\n## Common Issues\n\n### Missing Fields\nNot all instrument exports contain all ASM fields. Report completeness:\n```python\ndef report_completeness(asm, expected_fields):\n    found = set(extract_all_fields(asm))\n    missing = expected_fields - found\n    return len(found) / len(expected_fields) * 100\n```\n\n### Unit Variations\nInstruments may use different unit formats. The allotropy library normalizes these:\n- \"cells/mL\" → \"(cell/mL)\"\n- \"%\" → \"%\"\n- \"nm\" → \"nm\"\n\n### Date Formats\nASM uses ISO 8601: `2024-01-15T10:30:00Z`\n","bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md":"# Field Classification Guide\n\nThis guide helps classify instrument data fields into the correct ASM document locations. Use this when mapping raw instrument output to Allotrope Simple Model structure.\n\n## ASM Document Hierarchy\n\n```\n<technique>-aggregate-document\n├── device-system-document          # Instrument hardware info\n├── data-system-document            # Software/conversion info\n├── <technique>-document[]          # Per-run/sequence data\n│   ├── analyst                     # Who performed the analysis\n│   ├── measurement-aggregate-document\n│   │   ├── measurement-time\n│   │   ├── measurement-document[]  # Individual measurements\n│   │   │   ├── sample-document\n│   │   │   ├── device-control-aggregate-document\n│   │   │   └── [measurement fields]\n│   │   └── [aggregate-level metadata]\n│   ├── processed-data-aggregate-document\n│   │   └── processed-data-document[]\n│   │       ├── data-processing-document\n│   │       └── [processed results]\n│   └── calculated-data-aggregate-document\n│       └── calculated-data-document[]\n```\n\n## Field Classification Categories\n\n### 1. Device/Instrument Information → `device-system-document`\n\nHardware and firmware details about the physical instrument.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Instrument name | `model-number` | \"Vi-CELL BLU\", \"NanoDrop One\" |\n| Serial number | `equipment-serial-number` | \"VCB-12345\", \"SN001234\" |\n| Manufacturer | `product-manufacturer` | \"Beckman Coulter\", \"Thermo Fisher\" |\n| Firmware version | `firmware-version` | \"v2.1.3\" |\n| Device ID | `device-identifier` | \"Instrument_01\" |\n| Brand | `brand-name` | \"Beckman Coulter\" |\n\n**Rule:** If the value describes the physical instrument and doesn't change between runs, it goes in `device-system-document`.\n\n---\n\n### 2. Software/Data System Information → `data-system-document`\n\nInformation about software used for acquisition, analysis, or conversion.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Software name | `software-name` | \"Chromeleon\", \"Gen5\" |\n| Software version | `software-version` | \"7.3.2\" |\n| File name | `file-name` | \"experiment_001.xlsx\" |\n| File path | `file-identifier` | \"/data/runs/2024-01-15/\" |\n| Database ID | `ASM-converter-name` | \"allotropy v0.1.55\" |\n\n**Rule:** If the value describes software, file metadata, or data provenance, it goes in `data-system-document`.\n\n---\n\n### 3. Sample Information → `sample-document`\n\nMetadata about the biological/chemical sample being analyzed.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Sample ID | `sample-identifier` | \"Sample_A\", \"LIMS-001234\" |\n| Sample name | `written-name` | \"CHO Cell Culture Day 5\" |\n| Sample type/role | `sample-role-type` | \"unknown sample role\", \"control sample role\" |\n| Batch ID | `batch-identifier` | \"Batch-2024-001\" |\n| Description | `description` | \"Protein expression sample\" |\n| Well position | `location-identifier` | \"A1\", \"B3\" |\n\n**Rule:** If the value identifies or describes what was measured (not how), it goes in `sample-document`.\n\n---\n\n### 4. Device Control Settings → `device-control-aggregate-document`\n\nInstrument settings and parameters used during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Injection volume | `sample-volume-setting` | 10 µL |\n| Wavelength | `detector-wavelength-setting` | 254 nm |\n| Temperature | `compartment-temperature` | 37°C |\n| Flow rate | `flow-rate` | 1.0 mL/min |\n| Exposure time | `exposure-duration-setting` | 500 ms |\n| Detector gain | `detector-gain-setting` | 1.5 |\n| Illumination | `illumination-setting` | 80% |\n\n**Rule:** If the value is a configurable instrument parameter that affects measurement, it goes in `device-control-aggregate-document`.\n\n---\n\n### 5. Environmental Conditions → `device-control-document` or technique-specific\n\nAmbient or controlled environmental parameters during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Ambient temperature | `ambient-temperature` | 22.5°C |\n| Humidity | `ambient-relative-humidity` | 45% |\n| Column temperature | `compartment-temperature` | 30°C |\n| Sample temperature | `sample-temperature` | 4°C |\n| Electrophoresis temp | (technique-specific) | 26.4°C |\n\n**Rule:** Environmental conditions that affect measurement quality go with device control or in technique-specific locations.\n\n---\n\n### 6. Raw Measurement Data → `measurement-document`\n\nDirect instrument readings - the \"ground truth\" data.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Absorbance | `absorbance` | 0.523 AU |\n| Fluorescence | `fluorescence` | 12500 RFU |\n| Cell count | `total-cell-count` | 2.5e6 cells |\n| Peak area | `peak-area` | 1234.5 mAU·min |\n| Retention time | `retention-time` | 5.67 min |\n| Ct value | `cycle-threshold-result` | 24.5 |\n| Concentration (measured) | `mass-concentration` | 1.5 mg/mL |\n\n**Rule:** If the value is a direct instrument reading that wasn't computed from other values in this analysis, it goes in `measurement-document`.\n\n---\n\n### 7. Calculated/Derived Data → `calculated-data-aggregate-document`\n\nValues computed from raw measurements.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Viability % | `calculated-result` | 95.2% |\n| Concentration (from std curve) | `calculated-result` | 125 ng/µL |\n| Ratio (260/280) | `calculated-result` | 1.89 |\n| Relative quantity | `calculated-result` | 2.5x |\n| % Recovery | `calculated-result` | 98.7% |\n| CV% | `calculated-result` | 2.3% |\n\n**Calculated data document structure:**\n```json\n{\n  \"calculated-data-name\": \"viability\",\n  \"calculated-result\": {\"value\": 95.2, \"unit\": \"%\"},\n  \"calculation-description\": \"viable cells / total cells * 100\"\n}\n```\n\n**Rule:** If the value was computed from other measurements in this analysis, it goes in `calculated-data-aggregate-document`. Include `calculation-description` when possible.\n\n---\n\n### 8. Processed/Analyzed Data → `processed-data-aggregate-document`\n\nResults from data processing algorithms (peak integration, cell classification, etc.).\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Peak list | `peak-list` | Integrated peak results |\n| Cell size distribution | `cell-diameter-distribution` | Histogram data |\n| Baseline-corrected data | (in processed-data-document) | Corrected spectra |\n| Fitted curve | (in processed-data-document) | Standard curve fit |\n\n**Associated `data-processing-document`:**\n```json\n{\n  \"cell-type-processing-method\": \"trypan blue exclusion\",\n  \"cell-density-dilution-factor\": {\"value\": 2, \"unit\": \"(unitless)\"},\n  \"minimum-cell-diameter-setting\": {\"value\": 5, \"unit\": \"µm\"},\n  \"maximum-cell-diameter-setting\": {\"value\": 50, \"unit\": \"µm\"}\n}\n```\n\n**Rule:** If the value results from an algorithm or processing method applied to raw data, it goes in `processed-data-aggregate-document` with its processing parameters in `data-processing-document`.\n\n---\n\n### 9. Timing/Timestamps → Various locations\n\n| Timestamp Type | Location | ASM Field |\n|----------------|----------|-----------|\n| Measurement time | `measurement-document` | `measurement-time` |\n| Run start time | `analysis-sequence-document` | `analysis-sequence-start-time` |\n| Run end time | `analysis-sequence-document` | `analysis-sequence-end-time` |\n| Data export time | `data-system-document` | (custom) |\n\n**Rule:** Use ISO 8601 format: `2024-01-15T10:30:00Z`\n\n---\n\n### 10. Analyst/Operator Information → `<technique>-document`\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Operator name | `analyst` | \"jsmith\" |\n| Reviewer | (custom or extension) | \"Pending\" |\n\n**Rule:** Analyst goes at the technique-document level, not in individual measurements.\n\n---\n\n## Decision Tree\n\n```\nIs this field about...\n\nTHE INSTRUMENT ITSELF?\n├── Hardware specs → device-system-document\n└── Software/files → data-system-document\n\nTHE SAMPLE?\n└── Sample ID, name, type, batch → sample-document\n\nINSTRUMENT SETTINGS?\n└── Configurable parameters → device-control-aggregate-document\n\nENVIRONMENTAL CONDITIONS?\n└── Temp, humidity, etc. → device-control-document\n\nA DIRECT READING?\n└── Raw instrument output → measurement-document\n\nA COMPUTED VALUE?\n├── From other measurements → calculated-data-document\n└── From processing algorithm → processed-data-document\n\nTIMING?\n├── When measured → measurement-document.measurement-time\n└── When run started/ended → analysis-sequence-document\n\nWHO DID IT?\n└── Operator/analyst → <technique>-document.analyst\n```\n\n## Common Instrument-to-ASM Mappings\n\n> **Note:** These mappings are derived from the [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy/tree/main/src/allotropy/parsers). For authoritative mappings, consult the parser source code for your specific instrument.\n\n### Cell Counter (Vi-CELL BLU)\n*Source: `allotropy/parsers/beckman_vi_cell_blu/vi_cell_blu_structure.py`*\n\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Analysis date/time | `measurement_time` |\n| Analysis by | `analyst` |\n| Viability (%) | `viability` |\n| Viable (x10^6) cells/mL | `viable_cell_density` |\n| Total (x10^6) cells/mL | `total_cell_density` |\n| Cell count | `total_cell_count` |\n| Viable cells | `viable_cell_count` |\n| Average diameter (μm) | `average_total_cell_diameter` |\n| Average viable diameter (μm) | `average_live_cell_diameter` |\n| Average circularity | `average_total_cell_circularity` |\n| Cell type | `cell_type_processing_method` (data-processing) |\n| Dilution | `cell_density_dilution_factor` (data-processing) |\n| Min/Max Diameter | `minimum/maximum_cell_diameter_setting` (data-processing) |\n\n### Spectrophotometer (NanoDrop)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample Name | `sample_identifier` |\n| A260, A280 | `absorbance` (with wavelength) |\n| Concentration | `mass_concentration` |\n| 260/280 ratio | `a260_a280_ratio` |\n| Pathlength | `pathlength` |\n\n### Plate Reader\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Well | `location_identifier` |\n| Sample Type | `sample_role_type` |\n| Absorbance/OD | `absorbance` |\n| Fluorescence | `fluorescence` |\n| Plate ID | `container_identifier` |\n\n### Chromatography (HPLC)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Injection Volume | `injection_volume` |\n| Retention Time | `retention_time` |\n| Peak Area | `peak_area` |\n| Peak Height | `peak_height` |\n| Column Temp | `column_oven_temperature` |\n| Flow Rate | `flow_rate` |\n\n## Unit Handling\n\nOnly use units explicitly present in source data. If a value has no unit specified:\n- Use `(unitless)` as the unit value\n- Do NOT infer units based on domain knowledge\n\n## Calculated Data Traceability\n\nWhen creating calculated values, always link them to their source data using `data-source-aggregate-document`:\n\n```json\n{\n    \"calculated-data-name\": \"DIN\",\n    \"calculated-result\": {\"value\": 5.8, \"unit\": \"(unitless)\"},\n    \"calculated-data-identifier\": \"TEST_ID_147\",\n    \"data-source-aggregate-document\": {\n        \"data-source-document\": [{\n            \"data-source-identifier\": \"TEST_ID_145\",\n            \"data-source-feature\": \"sample\"\n        }]\n    }\n}\n```\n\nThis declares: \"DIN 5.8 was calculated from the sample at `TEST_ID_145`.\"\n\n**Why this matters:**\n- **Audits**: Prove a value came from specific raw data\n- **Debugging**: Trace unexpected results back to their source\n- **Reprocessing**: Know which inputs to re-analyze if algorithms change\n\n**Assign unique IDs to:**\n- Measurements, peaks, regions, and calculated values\n- Use a consistent naming pattern (e.g., `INSTRUMENT_TYPE_TEST_ID_N`)\n\nThis enables bidirectional traversal: trace from calculated → raw, or raw → all derived values.\n\n---\n\n## Nested Document Structure (Critical)\n\nA common mistake is \"flattening\" fields directly onto measurement documents when they should be wrapped in nested structures. This breaks schema compliance and loses semantic context.\n\n### Why Nesting Matters\n\nASM uses nested documents for semantic grouping:\n\n| Document | Purpose | Contains |\n|----------|---------|----------|\n| `sample document` | What was measured | Sample ID, locations, plate identifiers |\n| `device control aggregate document` | How instrument operated | Settings, parameters, techniques |\n| `custom information document` | Vendor-specific fields | Non-standard fields that don't map to ASM |\n\n### Sample Document Fields\n\nThese fields MUST be inside `sample document`, not flattened on measurement:\n\n```json\n// ❌ WRONG - Fields flattened on measurement\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample identifier\": \"Sample_A\",\n  \"location identifier\": \"A1\",\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n\n// ✅ CORRECT - Fields nested in sample document\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample document\": {\n    \"sample identifier\": \"Sample_A\",\n    \"location identifier\": \"A1\",\n    \"well plate identifier\": \"96WP001\"\n  },\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n```\n\n**Fields belonging in sample document:**\n- `sample identifier` - Sample ID/name\n- `written name` - Descriptive sample name\n- `batch identifier` - Batch/lot number\n- `sample role type` - Standard, blank, control, unknown\n- `location identifier` - Well position (A1, B3, etc.)\n- `well plate identifier` - Plate barcode\n- `description` - Sample description\n\n### Device Control Document Fields\n\nInstrument settings MUST be inside `device control aggregate document`:\n\n```json\n// ❌ WRONG - Device settings flattened\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device identifier\": \"Pod1\",\n  \"technique\": \"Custom\",\n  \"volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n\n// ✅ CORRECT - Settings nested in device control\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device control aggregate document\": {\n    \"device control document\": [{\n      \"device type\": \"liquid handler\",\n      \"device identifier\": \"Pod1\"\n    }]\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Fields belonging in device control:**\n- `device type` - Type of device\n- `device identifier` - Device ID\n- `detector wavelength setting` - Wavelength for detection\n- `compartment temperature` - Temperature setting\n- `sample volume setting` - Volume setting\n- `flow rate` - Flow rate setting\n\n### Custom Information Document\n\nVendor-specific fields that don't map to standard ASM terms go in `custom information document`:\n\n```json\n\"device control document\": [{\n  \"device type\": \"liquid handler\",\n  \"custom information document\": {\n    \"probe\": \"2\",\n    \"pod\": \"Pod1\",\n    \"source labware name\": \"Inducer\",\n    \"destination labware name\": \"GRP1\"\n  }\n}]\n```\n\n### Liquid Handler: Transfer Pairing\n\nFor liquid handlers, a measurement represents a complete transfer (aspirate + dispense), not separate operations:\n\n```json\n// ❌ WRONG - Separate records for aspirate and dispense\n[\n  {\"measurement identifier\": \"OP_001\", \"transfer type\": \"Aspirate\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}},\n  {\"measurement identifier\": \"OP_002\", \"transfer type\": \"Dispense\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}}\n]\n\n// ✅ CORRECT - Single record with source and destination\n{\n  \"measurement identifier\": \"TRANSFER_001\",\n  \"sample document\": {\n    \"source well location identifier\": \"1\",\n    \"destination well location identifier\": \"2\",\n    \"source well plate identifier\": \"96WP001\",\n    \"destination well plate identifier\": \"96WP002\"\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"},\n  \"transfer volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Pairing logic:**\n1. Match aspirate and dispense operations by probe number\n2. Create one measurement per matched pair\n3. Use `source_*` fields for aspirate location\n4. Use `destination_*` fields for dispense location\n5. Include both `aspiration volume` and `transfer volume`\n\n### Quick Reference: Nesting Decision\n\n```\nIs this field about...\n\nTHE SAMPLE BEING MEASURED?\n├── Sample ID, name, batch → sample document\n├── Well position → sample document.location identifier\n├── Plate barcode → sample document.well plate identifier\n└── Source/destination locations → sample document (with prefixes)\n\nINSTRUMENT SETTINGS?\n├── Standard settings → device control aggregate document\n└── Vendor-specific → custom information document\n\nA MEASUREMENT VALUE?\n└── Direct on measurement document (e.g., absorbance, volume)\n\nTRANSFER OPERATION TYPE?\n└── DON'T use \"transfer type\" - pair into single measurement\n    with source/destination fields instead\n```\n\n### Validation\n\nUse `validate_asm.py` to check for nesting issues:\n```bash\npython scripts/validate_asm.py output.json --reference known_good.json\n```\n\nThe validator checks for:\n- Fields incorrectly flattened on measurements\n- Missing `sample document` wrapper\n- Missing `device control aggregate document` wrapper\n- Missing `custom information document` for vendor fields\n- Liquid handler: separate transfer types instead of paired records\n\n## Sources\n\n- [Allotrope Simple Model Introduction](https://www.allotrope.org/introduction-to-allotrope-simple-model)\n- [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy)\n- [Allotrope Foundation ASM Overview](https://www.allotrope.org/asm)\n","bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md":"# Flattening ASM to 2D CSV\n\nConverting hierarchical ASM JSON to flat 2D tables for LIMS import, spreadsheet analysis, or data engineering pipelines.\n\n## Why Flatten?\n\nASM is semantically rich but hierarchical. Many systems need flat tables:\n- LIMS import (Benchling, STARLIMS, LabWare)\n- Excel/CSV analysis\n- Database loading\n- Quick visual inspection\n\n## Flattening Strategy\n\n### Core Principle\nEach **measurement** becomes one **row**. Metadata is repeated per row.\n\n### What's Excluded\nThe flattening intentionally **omits top-level ASM metadata** such as:\n- `$asm.manifest` (model version, schema URIs)\n- Root-level fields outside the technique aggregate document\n\nThis keeps the output focused on experimental data. If you need schema version tracking for compliance or audit purposes, consider storing the original ASM JSON alongside the flattened CSV, or modify the flattening script to include these fields.\n\n### Hierarchy to Columns\n```\nASM Hierarchy                    → Flat Column\n─────────────────────────────────────────────────\ndevice-system-document.\n  device-identifier              → instrument_serial_number\n  model-number                   → instrument_model\n  \nmeasurement-aggregate-document.\n  analyst                        → analyst\n  measurement-time               → measurement_datetime\n  \nmeasurement-document[].\n  sample-identifier              → sample_id\n  viable-cell-density.value      → viable_cell_density\n  viable-cell-density.unit       → viable_cell_density_unit\n  viability.value                → viability_percent\n```\n\n## Column Naming Convention\n\nUse snake_case with descriptive suffixes:\n\n| ASM Field | Flat Column |\n|-----------|-------------|\n| `viable-cell-density` | `viable_cell_density` |\n| `.value` | `_value` (or omit if obvious) |\n| `.unit` | `_unit` |\n| `measurement-time` | `measurement_datetime` |\n\n## Example: Cell Counting\n\n### ASM Input (simplified)\n```json\n{\n  \"cell-counting-aggregate-document\": {\n    \"device-system-document\": {\n      \"device-identifier\": \"VCB001\",\n      \"model-number\": \"Vi-CELL BLU\"\n    },\n    \"cell-counting-document\": [{\n      \"measurement-aggregate-document\": {\n        \"analyst\": \"jsmith\",\n        \"measurement-time\": \"2024-01-15T10:30:00Z\",\n        \"measurement-document\": [\n          {\n            \"sample-identifier\": \"Sample_A\",\n            \"viable-cell-density\": {\"value\": 2500000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 95.2, \"unit\": \"%\"}\n          },\n          {\n            \"sample-identifier\": \"Sample_B\",\n            \"viable-cell-density\": {\"value\": 1800000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 88.7, \"unit\": \"%\"}\n          }\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nsample_id,viable_cell_density,viable_cell_density_unit,viability_percent,analyst,measurement_datetime,instrument_serial_number,instrument_model\nSample_A,2500000,(cell/mL),95.2,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\nSample_B,1800000,(cell/mL),88.7,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\n```\n\n## Example: Plate Reader\n\n### ASM Input (simplified)\n```json\n{\n  \"plate-reader-aggregate-document\": {\n    \"plate-reader-document\": [{\n      \"measurement-aggregate-document\": {\n        \"plate-identifier\": \"ELISA_001\",\n        \"measurement-document\": [\n          {\"well-location\": \"A1\", \"absorbance\": {\"value\": 0.125, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A2\", \"absorbance\": {\"value\": 0.892, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A3\", \"absorbance\": {\"value\": 1.456, \"unit\": \"mAU\"}}\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nplate_id,well_position,absorbance,absorbance_unit\nELISA_001,A1,0.125,mAU\nELISA_001,A2,0.892,mAU\nELISA_001,A3,1.456,mAU\n```\n\n## Handling Data Cubes\n\nData cubes (time series, spectra) need special handling:\n\n### Option 1: Expand to rows\nEach point becomes a row:\n```csv\nsample_id,time_seconds,absorbance\nSample_A,0,0.100\nSample_A,60,0.125\nSample_A,120,0.150\n```\n\n### Option 2: Wide format\nMeasurements as columns:\n```csv\nsample_id,abs_0s,abs_60s,abs_120s\nSample_A,0.100,0.125,0.150\n```\n\n### Option 3: JSON array in cell\nKeep as array (some systems support this):\n```csv\nsample_id,absorbance_timeseries\nSample_A,\"[0.100,0.125,0.150]\"\n```\n\n## Standard Column Sets by Technique\n\n### Cell Counting\n```\nsample_id, viable_cell_density, viable_cell_density_unit, total_cell_count,\nviability_percent, average_cell_diameter, average_cell_diameter_unit,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Spectrophotometry\n```\nsample_id, wavelength_nm, absorbance, pathlength_cm, concentration,\nconcentration_unit, a260_a280_ratio, a260_a230_ratio,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Plate Reader / ELISA\n```\nplate_id, well_position, sample_type, sample_id, absorbance, absorbance_unit,\nconcentration, concentration_unit, dilution_factor, cv_percent,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### qPCR\n```\nsample_id, target_name, well_position, ct_value, ct_mean, ct_sd,\nquantity, quantity_unit, amplification_efficiency,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n## Python Implementation\n\n```python\nimport json\nimport pandas as pd\n\ndef flatten_asm(asm_dict, technique=\"cell-counting\"):\n    \"\"\"\n    Flatten ASM JSON to pandas DataFrame.\n    \n    Args:\n        asm_dict: Parsed ASM JSON\n        technique: ASM technique type\n        \n    Returns:\n        pandas DataFrame with one row per measurement\n    \"\"\"\n    rows = []\n    \n    # Get aggregate document\n    agg_key = f\"{technique}-aggregate-document\"\n    agg_doc = asm_dict.get(agg_key, {})\n    \n    # Extract device info\n    device = agg_doc.get(\"device-system-document\", {})\n    device_info = {\n        \"instrument_serial_number\": device.get(\"device-identifier\"),\n        \"instrument_model\": device.get(\"model-number\")\n    }\n    \n    # Get technique documents\n    doc_key = f\"{technique}-document\"\n    for doc in agg_doc.get(doc_key, []):\n        meas_agg = doc.get(\"measurement-aggregate-document\", {})\n        \n        # Extract common metadata\n        common = {\n            \"analyst\": meas_agg.get(\"analyst\"),\n            \"measurement_datetime\": meas_agg.get(\"measurement-time\"),\n            **device_info\n        }\n        \n        # Extract each measurement\n        for meas in meas_agg.get(\"measurement-document\", []):\n            row = {**common}\n            \n            # Flatten measurement fields\n            for key, value in meas.items():\n                if isinstance(value, dict) and \"value\" in value:\n                    # Value datum pattern\n                    col = key.replace(\"-\", \"_\")\n                    row[col] = value[\"value\"]\n                    if \"unit\" in value:\n                        row[f\"{col}_unit\"] = value[\"unit\"]\n                else:\n                    row[key.replace(\"-\", \"_\")] = value\n            \n            rows.append(row)\n    \n    return pd.DataFrame(rows)\n\n# Usage\nwith open(\"asm_output.json\") as f:\n    asm = json.load(f)\n\ndf = flatten_asm(asm, \"cell-counting\")\ndf.to_csv(\"flattened_output.csv\", index=False)\n```\n\n## LIMS Import Considerations\n\nWhen importing flattened data into a LIMS:\n- Match column names to your LIMS schema field names\n- Use ISO 8601 date format for timestamps\n- Ensure sample IDs match existing LIMS sample identifiers\n- Check if your LIMS expects units in separate columns or embedded in values\n","bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md":"# Supported Instruments\n\n## What Can This Skill Convert?\n\n**Any instrument data that maps to an Allotrope schema can be converted.** The skill uses a tiered parsing approach:\n\n1. **Native allotropy parsers** (listed below) - Highest fidelity, validated against vendor-specific formats\n2. **Flexible fallback parser** - Handles any tabular data (CSV, Excel, TXT) by mapping columns to ASM fields\n3. **PDF extraction** - Extracts tables from PDFs, then applies flexible parsing\n\nIf your instrument isn't listed below, the skill can still convert it as long as your data contains recognizable measurement fields (sample IDs, values, units, timestamps, etc.) that map to an ASM technique schema.\n\n---\n\n## Instruments with Native Allotropy Parsers\n\nThe following instruments have optimized parsers in the allotropy library with their Vendor enum values.\n\n## Cell Counting\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Beckman Coulter Vi-CELL BLU | `BECKMAN_VI_CELL_BLU` | .csv |\n| Beckman Coulter Vi-CELL XR | `BECKMAN_VI_CELL_XR` | .txt, .xls, .xlsx |\n| ChemoMetec NucleoView NC-200 | `CHEMOMETEC_NUCLEOVIEW` | .xlsx |\n| ChemoMetec NC-View | `CHEMOMETEC_NC_VIEW` | .xlsx |\n| Revvity Matrix | `REVVITY_MATRIX` | .csv |\n\n## Spectrophotometry (UV-Vis)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Thermo Fisher NanoDrop One | `THERMO_FISHER_NANODROP_ONE` | .csv, .xlsx |\n| Thermo Fisher NanoDrop Eight | `THERMO_FISHER_NANODROP_EIGHT` | .tsv, .txt |\n| Thermo Fisher NanoDrop 8000 | `THERMO_FISHER_NANODROP_8000` | .csv |\n| Unchained Labs Lunatic | `UNCHAINED_LABS_LUNATIC` | .csv, .xlsx |\n| Thermo Fisher Genesys 30 | `THERMO_FISHER_GENESYS30` | .csv |\n\n## Plate Readers (Multi-mode, Absorbance, Fluorescence)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| PerkinElmer EnVision | `PERKIN_ELMER_ENVISION` | .csv |\n| Agilent Gen5 (BioTek) | `AGILENT_GEN5` | .xlsx |\n| Agilent Gen5 Image | `AGILENT_GEN5_IMAGE` | .xlsx |\n| BMG MARS (CLARIOstar) | `BMG_MARS` | .csv, .txt |\n| BMG LabTech Smart Control | `BMG_LABTECH_SMART_CONTROL` | .csv |\n| Thermo SkanIt | `THERMO_SKANIT` | .xlsx |\n| Revvity Kaleido | `REVVITY_KALEIDO` | .csv |\n| Tecan Magellan | `TECAN_MAGELLAN` | .xlsx |\n\n## ELISA / Immunoassay\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| MSD Discovery Workbench | `MSD_WORKBENCH` | .txt |\n| MSD Methodical Mind | `METHODICAL_MIND` | .xlsx |\n| BMG MARS | `BMG_MARS` | .csv, .txt |\n\n## qPCR / PCR\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Applied Biosystems QuantStudio | `APPBIO_QUANTSTUDIO` | .xlsx |\n| Applied Biosystems QuantStudio Design & Analysis | `APPBIO_QUANTSTUDIO_DESIGNANALYSIS` | .xlsx, .csv |\n| Bio-Rad CFX Maestro | `BIORAD_CFX_MAESTRO` | .csv, .xlsx |\n| Roche LightCycler | `ROCHE_LIGHTCYCLER` | .txt |\n\n## Chromatography (HPLC, LC)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Waters Empower | `WATERS_EMPOWER` | .xml |\n| Thermo Fisher Chromeleon | `THERMO_FISHER_CHROMELEON` | .xml |\n| Agilent ChemStation | `AGILENT_CHEMSTATION` | .csv |\n\n## Electrophoresis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Agilent TapeStation | `AGILENT_TAPESTATION` | .csv |\n| PerkinElmer LabChip | `PERKIN_ELMER_LABCHIP` | .csv |\n\n## Flow Cytometry\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| BD Biosciences FACSDiva | `BD_BIOSCIENCES_FACSDIVA` | .xml |\n| FlowJo | `FLOWJO` | .wsp |\n\n## Solution Analysis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Roche Cedex BioHT | `ROCHE_CEDEX_BIOHT` | .xlsx |\n| Beckman Coulter Biomek | `BECKMAN_COULTER_BIOMEK` | .csv |\n\n## Auto-Detection Patterns\n\nThe skill attempts to identify instrument type from file contents using these patterns:\n\n### Vi-CELL BLU\n- Column headers: \"Sample ID\", \"Viable cells (x10^6 cells/mL)\", \"Viability (%)\"\n- File structure: CSV with specific column order\n\n### Vi-CELL XR\n- Column headers: \"Sample\", \"Total cells/ml\", \"Viable cells/ml\"\n- Multiple export formats supported\n\n### NanoDrop\n- Column headers: \"Sample Name\", \"Nucleic Acid Conc.\", \"A260\", \"A280\"\n- 260/280 and 260/230 ratio columns\n\n### Plate Readers (General)\n- Well identifiers (A1-H12 pattern)\n- \"Plate\", \"Well\", \"Sample\" columns\n- Block-based structure with metadata headers\n\n### ELISA\n- Standard curve data with concentrations\n- OD/absorbance readings\n- Sample/blank/standard classification\n\n## Using Vendor Enums\n\n```python\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}: {v.value}\")\n\n# Convert file\nasm = allotrope_from_file(\"data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Checking Supported Status\n\n```python\nfrom allotropy.parser_factory import get_parser\n\n# Check if a vendor/file combo is supported\ntry:\n    parser = get_parser(Vendor.BECKMAN_VI_CELL_BLU)\n    print(\"Supported!\")\nexcept Exception as e:\n    print(f\"Not supported: {e}\")\n```\n","bio-research/skills/nextflow-development/SKILL.md":"---\nname: nextflow-development\ndescription: Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation.\n---\n\n# nf-core Pipeline Deployment\n\nRun nf-core bioinformatics pipelines on local or public sequencing data.\n\n**Target users:** Bench scientists and researchers without specialized bioinformatics training who need to run large-scale omics analyses—differential expression, variant calling, or chromatin accessibility analysis.\n\n## Workflow Checklist\n\n```\n- [ ] Step 0: Acquire data (if from GEO/SRA)\n- [ ] Step 1: Environment check (MUST pass)\n- [ ] Step 2: Select pipeline (confirm with user)\n- [ ] Step 3: Run test profile (MUST pass)\n- [ ] Step 4: Create samplesheet\n- [ ] Step 5: Configure & run (confirm genome with user)\n- [ ] Step 6: Verify outputs\n```\n\n---\n\n## Step 0: Acquire Data (GEO/SRA Only)\n\n**Skip this step if user has local FASTQ files.**\n\nFor public datasets, fetch from GEO/SRA first. See [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) for the full workflow.\n\n**Quick start:**\n\n```bash\n# 1. Get study info\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download (interactive mode)\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 --fastq-dir ./fastq -o samplesheet.csv\n```\n\n**DECISION POINT:** After fetching study info, confirm with user:\n- Which sample subset to download (if multiple data types)\n- Suggested genome and pipeline\n\nThen continue to Step 1.\n\n---\n\n## Step 1: Environment Check\n\n**Run first. Pipeline will fail without passing environment.**\n\n```bash\npython scripts/check_environment.py\n```\n\nAll critical checks must pass. If any fail, provide fix instructions:\n\n### Docker issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | Install from https://docs.docker.com/get-docker/ |\n| Permission denied | `sudo usermod -aG docker $USER` then re-login |\n| Daemon not running | `sudo systemctl start docker` |\n\n### Nextflow issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | `curl -s https://get.nextflow.io \\| bash && mv nextflow ~/bin/` |\n| Version < 23.04 | `nextflow self-update` |\n\n### Java issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed / < 11 | `sudo apt install openjdk-11-jdk` |\n\n**Do not proceed until all checks pass.** For HPC/Singularity, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 2: Select Pipeline\n\n**DECISION POINT: Confirm with user before proceeding.**\n\n| Data Type | Pipeline | Version | Goal |\n|-----------|----------|---------|------|\n| RNA-seq | `rnaseq` | 3.22.2 | Gene expression |\n| WGS/WES | `sarek` | 3.7.1 | Variant calling |\n| ATAC-seq | `atacseq` | 2.1.2 | Chromatin accessibility |\n\nAuto-detect from data:\n```bash\npython scripts/detect_data_type.py /path/to/data\n```\n\nFor pipeline-specific details:\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md)\n- [references/pipelines/sarek.md](references/pipelines/sarek.md)\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md)\n\n---\n\n## Step 3: Run Test Profile\n\n**Validates environment with small data. MUST pass before real data.**\n\n```bash\nnextflow run nf-core/<pipeline> -r <version> -profile test,docker --outdir test_output\n```\n\n| Pipeline | Command |\n|----------|---------|\n| rnaseq | `nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq` |\n| sarek | `nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek` |\n| atacseq | `nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq` |\n\nVerify:\n```bash\nls test_output/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\nIf test fails, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 4: Create Samplesheet\n\n### Generate automatically\n\n```bash\npython scripts/generate_samplesheet.py /path/to/data <pipeline> -o samplesheet.csv\n```\n\nThe script:\n- Discovers FASTQ/BAM/CRAM files\n- Pairs R1/R2 reads\n- Infers sample metadata\n- Validates before writing\n\n**For sarek:** Script prompts for tumor/normal status if not auto-detected.\n\n### Validate existing samplesheet\n\n```bash\npython scripts/generate_samplesheet.py --validate samplesheet.csv <pipeline>\n```\n\n### Samplesheet formats\n\n**rnaseq:**\n```csv\nsample,fastq_1,fastq_2,strandedness\nSAMPLE1,/abs/path/R1.fq.gz,/abs/path/R2.fq.gz,auto\n```\n\n**sarek:**\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,/abs/path/tumor_R1.fq.gz,/abs/path/tumor_R2.fq.gz,1\npatient1,normal,L001,/abs/path/normal_R1.fq.gz,/abs/path/normal_R2.fq.gz,0\n```\n\n**atacseq:**\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/abs/path/ctrl_R1.fq.gz,/abs/path/ctrl_R2.fq.gz,1\n```\n\n---\n\n## Step 5: Configure & Run\n\n### 5a. Check genome availability\n\n```bash\npython scripts/manage_genomes.py check <genome>\n# If not installed:\npython scripts/manage_genomes.py download <genome>\n```\n\nCommon genomes: GRCh38 (human), GRCh37 (legacy), GRCm39 (mouse), R64-1-1 (yeast), BDGP6 (fly)\n\n### 5b. Decision points\n\n**DECISION POINT: Confirm with user:**\n\n1. **Genome:** Which reference to use\n2. **Pipeline-specific options:**\n   - **rnaseq:** aligner (star_salmon recommended, hisat2 for low memory)\n   - **sarek:** tools (haplotypecaller for germline, mutect2 for somatic)\n   - **atacseq:** read_length (50, 75, 100, or 150)\n\n### 5c. Run pipeline\n\n```bash\nnextflow run nf-core/<pipeline> \\\n    -r <version> \\\n    -profile docker \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome <genome> \\\n    -resume\n```\n\n**Key flags:**\n- `-r`: Pin version\n- `-profile docker`: Use Docker (or `singularity` for HPC)\n- `--genome`: iGenomes key\n- `-resume`: Continue from checkpoint\n\n**Resource limits (if needed):**\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n---\n\n## Step 6: Verify Outputs\n\n### Check completion\n\n```bash\nls results/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\n### Key outputs by pipeline\n\n**rnaseq:**\n- `results/star_salmon/salmon.merged.gene_counts.tsv` - Gene counts\n- `results/star_salmon/salmon.merged.gene_tpm.tsv` - TPM values\n\n**sarek:**\n- `results/variant_calling/*/` - VCF files\n- `results/preprocessing/recalibrated/` - BAM files\n\n**atacseq:**\n- `results/macs2/narrowPeak/` - Peak calls\n- `results/bwa/mergedLibrary/bigwig/` - Coverage tracks\n\n---\n\n## Quick Reference\n\nFor common exit codes and fixes, see [references/troubleshooting.md](references/troubleshooting.md).\n\n### Resume failed run\n\n```bash\nnextflow run nf-core/<pipeline> -resume\n```\n\n---\n\n## References\n\n- [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) - Downloading public GEO/SRA data\n- [references/troubleshooting.md](references/troubleshooting.md) - Common issues and fixes\n- [references/installation.md](references/installation.md) - Environment setup\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md) - RNA-seq pipeline details\n- [references/pipelines/sarek.md](references/pipelines/sarek.md) - Variant calling details\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md) - ATAC-seq details\n\n---\n\n## Disclaimer\n\nThis skill is provided as a prototype example demonstrating how to integrate nf-core bioinformatics pipelines into Claude Code for automated analysis workflows. The current implementation supports three pipelines (rnaseq, sarek, and atacseq), serving as a foundation that enables the community to expand support to the full set of nf-core pipelines.\n\nIt is intended for educational and research purposes and should not be considered production-ready without appropriate validation for your specific use case. Users are responsible for ensuring their computing environment meets pipeline requirements and for verifying analysis results.\n\nAnthropic does not guarantee the accuracy of bioinformatics outputs, and users should follow standard practices for validating computational analyses. This integration is not officially endorsed by or affiliated with the nf-core community.\n\n## Attribution\n\nWhen publishing results, cite the appropriate pipeline. Citations are available in each nf-core repository's CITATIONS.md file (e.g., https://github.com/nf-core/rnaseq/blob/3.22.2/CITATIONS.md).\n\n## Licenses\n\n- **nf-core pipelines:** MIT License (https://nf-co.re/about)\n- **Nextflow:** Apache License, Version 2.0 (https://www.nextflow.io/about-us.html)\n- **NCBI SRA Toolkit:** Public Domain (https://github.com/ncbi/sra-tools/blob/master/LICENSE)\n","bio-research/skills/nextflow-development/references/geo-sra-acquisition.md":"# GEO/SRA Data Acquisition\n\nDownload raw sequencing data from NCBI GEO/SRA and prepare it for nf-core pipelines.\n\n**Use this when:** Reanalyzing published datasets, validating findings, or comparing results against public cohorts.\n\n## Table of Contents\n\n- [Workflow Overview](#workflow-overview)\n- [Step 1: Fetch Study Information](#step-1-fetch-study-information)\n- [Step 2: Review Sample Groups](#step-2-review-sample-groups)\n- [Step 3: Download FASTQ Files](#step-3-download-fastq-files)\n- [Step 4: Generate Samplesheet](#step-4-generate-samplesheet)\n- [Step 5: Run nf-core Pipeline](#step-5-run-nf-core-pipeline)\n- [Supported Pipelines](#supported-pipelines)\n- [Supported Organisms](#supported-organisms)\n- [Complete Example](#complete-example)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Workflow Overview\n\nExample: \"Find differentially expressed genes in GSE309891 (drug-treated vs control)\"\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                    GEO/SRA DATA ACQUISITION                     │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Fetch study info     │\n                 │   • Query NCBI/SRA     │\n                 │   • Get metadata       │\n                 │   • Detect organism    │\n                 │   • Identify data type │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Present summary      │\n                 │   • Organism: Human    │\n                 │   • Genome: GRCh38     │\n                 │   • Type: RNA-Seq      │\n                 │   • Pipeline: rnaseq   │\n                 │   • Samples: 12        │\n                 │     (6 treated,        │\n                 │      6 control)        │\n                 │   • Size: ~24 GB       │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER CONFIRMS  │◄──── Decision point\n                    │  genome/pipeline│\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Select samples       │\n                 │   • Group by condition │\n                 │   • Show treated/ctrl  │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER SELECTS   │◄──── Decision point\n                    │  sample subset  │\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Download FASTQs      │\n                 │   • 24 files (R1+R2)   │\n                 │   • Parallel transfers │\n                 │   • Auto-resume        │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Generate samplesheet │\n                 │   • Map SRR to files   │\n                 │   • Pair R1/R2         │\n                 │   • Assign conditions  │\n                 └────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                    NF-CORE PIPELINE EXECUTION                   │\n│              (Continue with Step 1 of main workflow)            │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Instructions for Claude\n\nWhen assisting users with GEO/SRA data acquisition:\n\n1. **Always fetch study info first** to show the user what data is available\n2. **Ask for confirmation before downloading** - Present the sample groups and sizes, then ask which subset to download using AskUserQuestion\n3. **Suggest appropriate genome and pipeline** based on the organism and data type\n4. **Return to main SKILL.md workflow** after data preparation is complete\n\nExample confirmation question:\n```\nQuestion: \"Which sample group would you like to download?\"\nOptions:\n  - \"RNA-Seq:PAIRED (42 samples, ~87 GB)\"\n  - \"RNA-Seq:SINGLE (7 samples, ~4.5 GB)\"\n  - \"All samples (49 samples, ~92 GB)\"\n```\n\n---\n\n## Step 1: Fetch Study Information\n\nGet metadata about a GEO study before downloading.\n\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004\n```\n\n**Output includes:**\n- Study title and summary\n- Organism (with auto-suggested genome)\n- Number of samples and runs\n- Data types (RNA-Seq, ATAC-seq, etc.)\n- Estimated download size\n- Suggested nf-core pipeline\n\n**Save info to JSON:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004 -o study_info.json\n```\n\n---\n\n## Step 2: Review Sample Groups\n\nView sample groups organized by data type and layout. This is useful for studies with mixed data types.\n\n```bash\npython scripts/sra_geo_fetch.py groups <GEO_ID>\n```\n\n**Example output:**\n```\nSample Group          Count Layout     GSM Range                    Est. Size\n--------------------------------------------------------------------------------\nRNA-Seq                  42 PAIRED     GSM2879618...(42 samples)      87.4 GB\nRNA-Seq                   7 SINGLE     GSM2976181-GSM2976187           4.5 GB\n--------------------------------------------------------------------------------\nTOTAL                    49                                           91.9 GB\n\nAvailable groups for --subset option:\n  1. \"RNA-Seq:PAIRED\" - 42 samples (~87.4 GB)\n  2. \"RNA-Seq:SINGLE\" - 7 samples (~4.5 GB)\n```\n\n**List individual runs:**\n```bash\npython scripts/sra_geo_fetch.py list <GEO_ID>\n\n# Filter by data type\npython scripts/sra_geo_fetch.py list GSE110004 --filter \"RNA-Seq:PAIRED\"\n```\n\n**DECISION POINT:** Review the sample groups. Decide which subset to download if the study has multiple data types.\n\n---\n\n## Step 3: Download FASTQ Files\n\nDownload FASTQ files from ENA (faster than SRA).\n\n```bash\npython scripts/sra_geo_fetch.py download <GEO_ID> -o <OUTPUT_DIR>\n```\n\n**Options:**\n- `-o, --output`: Output directory (required)\n- `-i, --interactive`: Interactively select sample group to download\n- `-s, --subset`: Filter by data type (e.g., \"RNA-Seq:PAIRED\")\n- `-p, --parallel`: Parallel downloads (default: 4)\n- `-t, --timeout`: Download timeout in seconds (default: 600)\n\n### Interactive Mode (Recommended)\n\nUse `-i` flag for interactive sample selection when the study has multiple data types:\n\n```bash\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n```\n\n**Interactive output:**\n```\n============================================================\n  SELECT SAMPLE GROUP TO DOWNLOAD\n============================================================\n\n  [1] RNA-Seq (paired)\n      Samples: 42\n      GSM: GSM2879618...(42 samples)\n      Size: ~87.4 GB\n\n  [2] RNA-Seq (single)\n      Samples: 7\n      GSM: GSM2976181-GSM2976187\n      Size: ~4.5 GB\n\n  [0] Download ALL (49 samples)\n------------------------------------------------------------\n\nEnter selection (0-2):\n```\n\n### Direct Subset Selection\n\nAlternatively, specify the subset directly:\n\n```bash\n# Download only RNA-Seq paired-end data\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq \\\n    --subset \"RNA-Seq:PAIRED\" --parallel 6\n```\n\n**Note:** Downloads automatically skip existing files. Resume interrupted downloads by re-running the command.\n\n---\n\n## Step 4: Generate Samplesheet\n\nCreate a samplesheet compatible with nf-core pipelines.\n\n```bash\npython scripts/sra_geo_fetch.py samplesheet <GEO_ID> \\\n    --fastq-dir <FASTQ_DIR> \\\n    -o samplesheet.csv\n```\n\n**Options:**\n- `-f, --fastq-dir`: Directory containing downloaded FASTQ files (required)\n- `-o, --output`: Output samplesheet path (default: samplesheet.csv)\n- `-p, --pipeline`: Target pipeline (auto-detected if not specified)\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n```\n\n**Output:** The script will:\n1. Create samplesheet in the format required by the target pipeline\n2. Display suggested genome reference\n3. Show suggested nf-core command\n\n---\n\n## Step 5: Run nf-core Pipeline\n\nAfter generating the samplesheet, the script provides a suggested command.\n\n**Example output:**\n```\nSuggested command:\n   nextflow run nf-core/rnaseq \\\n       --input samplesheet.csv \\\n       --outdir results \\\n       --genome R64-1-1 \\\n       -profile docker\n```\n\n**DECISION POINT:** Review and confirm:\n1. Is the suggested pipeline correct?\n2. Is the genome reference correct for your organism?\n3. Do you need additional pipeline options?\n\nThen return to the main SKILL.md workflow (Step 1: Environment Check) to proceed with pipeline execution.\n\n---\n\n## Supported Pipelines\n\nThe skill auto-detects appropriate pipelines based on library strategy. Pipelines marked with ★ are fully supported with configs, samplesheet generation, and documentation. Others are suggested but require manual setup following nf-core documentation.\n\n| Library Strategy | Suggested Pipeline | Support |\n|------------------|--------------------|---------|\n| RNA-Seq          | nf-core/rnaseq     | ★ Full  |\n| ATAC-seq         | nf-core/atacseq    | ★ Full  |\n| WGS/WXS          | nf-core/sarek      | ★ Full  |\n| ChIP-seq         | nf-core/chipseq    | Manual  |\n| Bisulfite-Seq    | nf-core/methylseq  | Manual  |\n| miRNA-Seq        | nf-core/smrnaseq   | Manual  |\n| Amplicon         | nf-core/ampliseq   | Manual  |\n\n---\n\n## Supported Organisms\n\nCommon organisms with auto-suggested genomes:\n\n| Organism | Genome | Notes |\n|----------|--------|-------|\n| Homo sapiens | GRCh38 | Human reference |\n| Mus musculus | GRCm39 | Mouse reference |\n| Saccharomyces cerevisiae | R64-1-1 | Yeast S288C |\n| Drosophila melanogaster | BDGP6 | Fruit fly |\n| Caenorhabditis elegans | WBcel235 | C. elegans |\n| Danio rerio | GRCz11 | Zebrafish |\n| Arabidopsis thaliana | TAIR10 | Arabidopsis |\n| Rattus norvegicus | Rnor_6.0 | Rat |\n\nSee `scripts/config/genomes.yaml` for the full list.\n\n---\n\n## Complete Example\n\nReanalyze GSE110004 (yeast RNA-seq):\n\n```bash\n# 1. Get study info and sample groups\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download with interactive selection\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n# Select option [1] for RNA-Seq paired-end samples\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n\n# 4. Run nf-core/rnaseq (continue with main SKILL.md workflow)\nnextflow run nf-core/rnaseq \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome R64-1-1 \\\n    -profile docker\n```\n\n### Alternative: Non-interactive Download\n\n```bash\n# Review sample groups first\npython scripts/sra_geo_fetch.py groups GSE110004\n\n# Download specific subset directly\npython scripts/sra_geo_fetch.py download GSE110004 \\\n    --subset \"RNA-Seq:PAIRED\" \\\n    -o ./fastq \\\n    --parallel 4\n```\n\n---\n\n## Troubleshooting\n\n### ENA Download Fails\nIf ENA downloads fail, the data may need to be fetched directly from SRA:\n\n```bash\n# Create SRA tools environment\nconda create -n sra_tools -c bioconda sra-tools\n\n# Download with prefetch + fasterq-dump\nconda run -n sra_tools prefetch SRR6357070\nconda run -n sra_tools fasterq-dump SRR6357070 -O ./fastq\n```\n\n### No SRA Runs Found\nSome GEO datasets only have processed data, not raw sequencing reads. Check:\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\nIf \"Runs: 0\", the dataset may not have raw data in SRA.\n\n### SuperSeries Support\nGEO SuperSeries (which contain multiple SubSeries) are automatically handled. The tool will:\n1. Detect that a GEO ID is a SuperSeries\n2. Find the linked BioProject accession\n3. Fetch all SRA runs from the BioProject\n\nExample: GSE110004 is a SuperSeries that links to BioProject PRJNA432544.\n\n### Genome Not Recognized\nIf the organism is not in the genome mapping, manually specify the genome:\n```bash\n# Check available iGenomes\npython scripts/manage_genomes.py list\n\n# Or provide custom reference files to nf-core\nnextflow run nf-core/rnaseq --fasta /path/to/genome.fa --gtf /path/to/genes.gtf\n```\n\n---\n\n## Requirements\n\n- Python 3.8+\n- `requests` library (optional but recommended)\n- `pyyaml` library (optional, for genome config)\n- Network access to NCBI and ENA\n\nInstall optional dependencies:\n```bash\npip install requests pyyaml\n```\n","bio-research/skills/nextflow-development/references/installation.md":"# Installation\n\n## Contents\n- [Quick install](#quick-install)\n- [Docker setup](#docker-setup)\n- [Singularity setup (HPC)](#singularity-setup-hpc)\n- [nf-core tools (optional)](#nf-core-tools-optional)\n- [Verify installation](#verify-installation)\n- [Common issues](#common-issues)\n\n## Quick install\n\n```bash\n# Nextflow\ncurl -s https://get.nextflow.io | bash\nmv nextflow ~/bin/\nexport PATH=\"$HOME/bin:$PATH\"\n\n# Verify\nnextflow -version\njava -version  # Requires 11+\n```\n\n## Docker setup\n\n### Linux\n```bash\nsudo apt-get update && sudo apt-get install docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n### macOS\nDownload Docker Desktop: https://docker.com/products/docker-desktop\n\n### Verify\n```bash\ndocker run hello-world\n```\n\n## Singularity setup (HPC)\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install singularity-container\n\n# Or via conda\nconda install -c conda-forge singularity\n```\n\n### Configure cache\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\necho 'export NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"' >> ~/.bashrc\n```\n\n## nf-core tools (optional)\n\n```bash\npip install nf-core\n```\n\nUseful commands:\n```bash\nnf-core list                    # Available pipelines\nnf-core launch rnaseq           # Interactive parameter selection\nnf-core download rnaseq -r 3.14.0  # Download for offline use\n```\n\n## Verify installation\n\n```bash\nnextflow run nf-core/demo -profile test,docker --outdir test_demo\nls test_demo/\n```\n\n## Common issues\n\n**Java version wrong:**\n```bash\nexport JAVA_HOME=/path/to/java11\n```\n\n**Docker permission denied:**\n```bash\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n**Nextflow not found:**\n```bash\necho 'export PATH=\"$HOME/bin:$PATH\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n","bio-research/skills/nextflow-development/references/pipelines/atacseq.md":"# nf-core/atacseq\n\n**Version:** 2.1.2\n\n**Official Documentation:** https://nf-co.re/atacseq/2.1.2/\n**GitHub:** https://github.com/nf-core/atacseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/atacseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Quality metrics](#quality-metrics)\n\n## Test command\n\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\n```\n\nExpected: ~15 min, creates peaks and BigWig tracks.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/path/to/ctrl_rep1_R1.fq.gz,/path/to/ctrl_rep1_R2.fq.gz,1\nCONTROL,/path/to/ctrl_rep2_R1.fq.gz,/path/to/ctrl_rep2_R2.fq.gz,2\nTREATMENT,/path/to/treat_rep1_R1.fq.gz,/path/to/treat_rep1_R2.fq.gz,1\nTREATMENT,/path/to/treat_rep2_R1.fq.gz,/path/to/treat_rep2_R2.fq.gz,2\n```\n\n| Column | Required | Description |\n|--------|----------|-------------|\n| sample | Yes | Condition/group identifier |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | Yes | Absolute path to R2 (paired-end required) |\n| replicate | Yes | Replicate number (integer) |\n\n### Design file for differential analysis\n```csv\nsample,condition\nCONTROL,control\nTREATMENT,treatment\n```\n\nUse with `--deseq2_design design.csv`.\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 --read_length 50\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10` |\n| `--read_length` | 50 | Read length for MACS2 optimization |\n| `--narrow_peak` | true | Narrow peaks (false for broad) |\n| `--mito_name` | chrM | Mitochondrial chromosome name |\n| `--keep_mito` | false | Keep mitochondrial reads |\n| `--min_reps_consensus` | 1 | Min replicates for consensus peaks |\n\n### Differential accessibility\n```bash\n--deseq2_design design.csv\n```\n\n## Output files\n\n```\nresults/\n├── bwa/mergedLibrary/\n│   ├── *.mLb.mkD.sorted.bam     # Filtered, deduplicated alignments\n│   └── bigwig/\n│       └── *.bigWig             # Coverage tracks\n├── macs2/narrowPeak/\n│   ├── *.narrowPeak             # Peak calls\n│   └── consensus/\n│       └── consensus_peaks.bed  # Merged peaks across replicates\n├── deeptools/\n│   ├── plotFingerprint/         # Library complexity\n│   └── plotProfile/             # TSS enrichment\n├── deseq2/                      # If --deseq2_design provided\n└── multiqc/\n```\n\n**Key outputs:**\n- `*.mLb.mkD.sorted.bam`: Analysis-ready alignments\n- `*.narrowPeak`: MACS2 peak calls (BED format)\n- `consensus_peaks.bed`: Consensus peaks across replicates\n- `*.bigWig`: Genome browser tracks\n\n## Quality metrics\n\n| Metric | Good | Acceptable | Poor |\n|--------|------|------------|------|\n| Mapped reads | >80% | 60-80% | <60% |\n| Mitochondrial | <20% | 20-40% | >40% |\n| Duplicates | <30% | 30-50% | >50% |\n| FRiP | >30% | 15-30% | <15% |\n| TSS enrichment | >6 | 4-6 | <4 |\n\n**Fragment size**: Should show nucleosomal periodicity (~50bp nucleosome-free, ~200bp mono-nucleosome).\n\n## Downstream analysis\n\n```r\nlibrary(ChIPseeker)\nlibrary(GenomicRanges)\npeaks <- import(\"consensus_peaks.bed\")\npeakAnno <- annotatePeak(peaks, TxDb = TxDb.Hsapiens.UCSC.hg38.knownGene)\n```\n\n**Motif analysis:**\n```bash\nfindMotifsGenome.pl consensus_peaks.bed hg38 motifs/ -size 200\n```\n\n## Troubleshooting\n\n**Low FRiP**: Check library complexity in `plotFingerprint/`. May indicate over-transposition.\n\n**Few peaks**: Lower threshold with `--macs_qvalue 0.1` or use `--narrow_peak false` for broader peaks.\n\n**High duplicates**: Normal for low-input; pipeline removes by default.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/atacseq/2.1.2/parameters/\n- **Output documentation:** https://nf-co.re/atacseq/2.1.2/docs/output/\n- **Usage documentation:** https://nf-co.re/atacseq/2.1.2/docs/usage/\n","bio-research/skills/nextflow-development/references/pipelines/rnaseq.md":"# nf-core/rnaseq\n\n**Version:** 3.22.2\n\n**Official Documentation:** https://nf-co.re/rnaseq/3.22.2/\n**GitHub:** https://github.com/nf-core/rnaseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/rnaseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Downstream analysis](#downstream-analysis)\n\n## Test command\n\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\n```\n\nExpected: ~15 min, creates `multiqc/multiqc_report.html`.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,strandedness\nCONTROL_REP1,/path/to/ctrl1_R1.fq.gz,/path/to/ctrl1_R2.fq.gz,auto\nCONTROL_REP2,/path/to/ctrl2_R1.fq.gz,/path/to/ctrl2_R2.fq.gz,auto\nTREATMENT_REP1,/path/to/treat1_R1.fq.gz,/path/to/treat1_R2.fq.gz,auto\n```\n\n| Column | Required | Values |\n|--------|----------|--------|\n| sample | Yes | Alphanumeric, underscores allowed |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | No | Absolute path to R2 (empty for single-end) |\n| strandedness | Yes | `auto`, `forward`, `reverse`, `unstranded` |\n\n**Strandedness guide:**\n- `auto`: Inferred from data (recommended)\n- `forward`: TruSeq Stranded, dUTP protocols\n- `reverse`: Ligation-based protocols\n- `unstranded`: Non-stranded protocols\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--aligner` | `star_salmon` | Options: `star_salmon`, `star_rsem`, `hisat2` |\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10`, `BDGP6` |\n| `--pseudo_aligner` | - | Set to `salmon` for pseudo-alignment only |\n| `--skip_trimming` | false | Skip adapter trimming |\n| `--skip_alignment` | false | Pseudo-alignment only |\n\n### Custom reference\n```bash\n--fasta /path/to/genome.fa \\\n--gtf /path/to/annotation.gtf \\\n--star_index /path/to/star/  # Optional, builds if absent\n```\n\n## Output files\n\n```\nresults/\n├── star_salmon/\n│   ├── salmon.merged.gene_counts.tsv    # Raw counts for DESeq2\n│   ├── salmon.merged.gene_tpm.tsv       # TPM values\n│   └── *.bam                            # Alignments\n├── multiqc/\n│   └── multiqc_report.html              # QC summary\n└── pipeline_info/\n```\n\n**Key outputs:**\n- `salmon.merged.gene_counts.tsv`: Input for DESeq2/edgeR\n- `salmon.merged.gene_tpm.tsv`: Normalized expression\n\n## Downstream analysis\n\n```r\nlibrary(DESeq2)\ncounts <- read.delim(\"salmon.merged.gene_counts.tsv\", row.names=1)\ncoldata <- data.frame(\n    condition = factor(c(\"control\", \"control\", \"treatment\", \"treatment\"))\n)\ndds <- DESeqDataSetFromMatrix(\n    countData = round(counts),\n    colData = coldata,\n    design = ~ condition\n)\ndds <- DESeq(dds)\nres <- results(dds, contrast = c(\"condition\", \"treatment\", \"control\"))\n```\n\n## Troubleshooting\n\n**STAR index fails**: Increase memory with `--max_memory '64.GB'` or provide pre-built `--star_index`.\n\n**Low alignment rate**: Verify genome matches species; check FastQC for adapter contamination.\n\n**Strandedness detection fails**: Specify explicitly with `--strandedness reverse`.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/rnaseq/3.22.2/parameters/\n- **Output documentation:** https://nf-co.re/rnaseq/3.22.2/docs/output/\n- **Usage documentation:** https://nf-co.re/rnaseq/3.22.2/docs/usage/\n","bio-research/skills/nextflow-development/references/pipelines/sarek.md":"# nf-core/sarek\n\n**Version:** 3.7.1\n\n**Official Documentation:** https://nf-co.re/sarek/3.7.1/\n**GitHub:** https://github.com/nf-core/sarek\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/sarek/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Variant calling modes](#variant-calling-modes)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n\n## Test command\n\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\n```\n\nExpected: ~20 min, creates aligned BAMs and variant calls.\n\n## Samplesheet format\n\n### From FASTQ\n```csv\npatient,sample,lane,fastq_1,fastq_2\npatient1,tumor,L001,/path/to/tumor_L001_R1.fq.gz,/path/to/tumor_L001_R2.fq.gz\npatient1,tumor,L002,/path/to/tumor_L002_R1.fq.gz,/path/to/tumor_L002_R2.fq.gz\npatient1,normal,L001,/path/to/normal_R1.fq.gz,/path/to/normal_R2.fq.gz\n```\n\n### From BAM/CRAM\n```csv\npatient,sample,bam,bai\npatient1,tumor,/path/to/tumor.bam,/path/to/tumor.bam.bai\npatient1,normal,/path/to/normal.bam,/path/to/normal.bam.bai\n```\n\n### With tumor/normal status\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,tumor_R1.fq.gz,tumor_R2.fq.gz,1\npatient1,normal,L001,normal_R1.fq.gz,normal_R2.fq.gz,0\n```\n\n`status`: 0 = normal, 1 = tumor\n\n## Variant calling modes\n\n### Germline (single sample)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools haplotypecaller,snpeff\n```\n\n### Somatic (tumor-normal pair)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools mutect2,strelka,snpeff\n```\n\n### WES (exome)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --wes --intervals /path/to/targets.bed \\\n    --tools haplotypecaller,snpeff\n```\n\n### Joint germline (cohort)\n```bash\n--tools haplotypecaller --joint_germline\n```\n\n## Parameters\n\n### Available tools\n\n**Germline callers:**\n- `haplotypecaller`: GATK HaplotypeCaller\n- `freebayes`: FreeBayes\n- `deepvariant`: DeepVariant (GPU optional)\n- `strelka`: Strelka2 germline\n\n**Somatic callers:**\n- `mutect2`: GATK Mutect2\n- `strelka`: Strelka2 somatic\n- `manta`: Structural variants\n\n**CNV callers:**\n- `ascat`: Copy number\n- `controlfreec`: CNV detection\n- `tiddit`: SV calling\n\n**Annotation:**\n- `snpeff`: Functional annotation\n- `vep`: Variant Effect Predictor\n\n### Key parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--tools` | - | Comma-separated list of tools |\n| `--genome` | - | `GRCh38`, `GRCh37` |\n| `--wes` | false | Exome mode (requires `--intervals`) |\n| `--intervals` | - | BED file for targeted regions |\n| `--joint_germline` | false | Joint calling for cohorts |\n| `--skip_bqsr` | false | Skip base quality recalibration |\n\n## Output files\n\n```\nresults/\n├── preprocessing/\n│   └── recalibrated/           # Analysis-ready BAMs\n│       └── *.recal.bam\n├── variant_calling/\n│   ├── haplotypecaller/        # Germline VCFs\n│   ├── mutect2/                # Somatic VCFs (filtered)\n│   └── strelka/\n├── annotation/\n│   └── snpeff/                 # Annotated VCFs\n└── multiqc/\n```\n\n## Troubleshooting\n\n**BQSR fails**: Check known sites available for genome. Skip with `--skip_bqsr` for non-standard references.\n\n**Mutect2 no variants**: Verify tumor/normal pairing in samplesheet (check `status` column).\n\n**Out of memory**: `--max_memory '128.GB'` for WGS.\n\n**DeepVariant GPU**: Ensure NVIDIA Docker runtime configured.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/sarek/3.7.1/parameters/\n- **Output documentation:** https://nf-co.re/sarek/3.7.1/docs/output/\n- **Usage documentation:** https://nf-co.re/sarek/3.7.1/docs/usage/\n","bio-research/skills/nextflow-development/references/troubleshooting.md":"# Troubleshooting\n\nQuick fixes for common nf-core pipeline issues.\n\n## Contents\n- [Exit Codes](#exit-codes)\n- [HPC/Singularity Issues](#hpcsingularity-issues)\n- [Pipeline Failures](#pipeline-failures)\n- [RNA-seq Specific](#rna-seq-specific)\n- [Sarek Specific](#sarek-specific)\n- [ATAC-seq Specific](#atac-seq-specific)\n- [Resource Management](#resource-management)\n- [Getting Help](#getting-help)\n\n## Exit Codes\n\nCommon exit codes indicating resource issues (per [nf-core docs](https://nf-co.re/docs/usage/troubleshooting/crash_halfway)):\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 137 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 143 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 104, 134, 139, 247 | Out of memory | Increase `--max_memory` |\n| 1 | General error | Check `.nextflow.log` for details |\n\nMost pipelines auto-retry with 2x then 3x resources before failing.\n\n## HPC/Singularity Issues\n\n### Singularity cache issues\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\n```\n\n### Using Singularity instead of Docker\nOn HPC systems without Docker, use Singularity:\n```bash\nnextflow run nf-core/<pipeline> -profile singularity ...\n```\n\n> **Note**: For basic environment setup (Docker, Nextflow, Java installation), see the inline instructions in Step 1 of SKILL.md.\n\n## Pipeline Failures\n\n### Container pull failed\n- Check network connectivity\n- Try: `-profile singularity` instead of docker\n- For offline: `nf-core download <pipeline> -r <version>`\n\n### \"No such file\" errors\n- Use **absolute paths** in samplesheet\n- Verify files exist: `ls /path/to/file`\n\n### Resume not working\n```bash\n# Check work directory exists\nls -la work/\n\n# Force clean restart (loses cache)\nrm -rf work/ .nextflow*\nnextflow run nf-core/<pipeline> ...\n```\n\n## RNA-seq Specific\n\n### STAR index fails\n- Increase memory: `--max_memory '64.GB'`\n- Or provide pre-built: `--star_index /path/to/star/`\n\n### Low alignment rate\n- Verify genome matches species\n- Check FastQC for adapter contamination\n- Try different aligner: `--aligner hisat2`\n\n### Strandedness detection fails\n- Specify explicitly: `--strandedness reverse`\n- Common values: `forward`, `reverse`, `unstranded`\n\n## Sarek Specific\n\n### BQSR fails\n- Check known sites for genome\n- Skip for non-standard references: `--skip_bqsr`\n\n### Mutect2 no variants\n- Verify tumor/normal pairing\n- Check samplesheet `status` column: 0=normal, 1=tumor\n\n### Out of memory for WGS\n```bash\n--max_memory '128.GB' --max_cpus 16\n```\n\n### DeepVariant GPU issues\n- Ensure NVIDIA Docker runtime configured\n- Or use CPU mode (slower)\n\n## ATAC-seq Specific\n\n### Low FRiP score\n- Check library complexity in `plotFingerprint/`\n- May indicate over-transposition\n\n### Few peaks called\n- Lower threshold: `--macs_qvalue 0.1`\n- Use broad peaks: `--narrow_peak false`\n\n### High duplicates\n- Normal for low-input samples\n- Pipeline removes by default\n- Consider deeper sequencing\n\n## Resource Management\n\n### Set resource limits\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n### Check available resources\n```bash\n# CPUs\nnproc\n\n# Memory\nfree -h\n\n# Disk\ndf -h .\n```\n\n## Getting Help\n\n1. Check `.nextflow.log` for error details\n2. Search nf-core Slack: https://nf-co.re/join\n3. Open issue on GitHub: https://github.com/nf-core/<pipeline>/issues\n","bio-research/skills/nextflow-development/scripts/config/genomes.yaml":"# Organism to Genome Mapping for nf-core Pipelines\n# Maps organism names (as they appear in GEO/SRA) to iGenomes keys\n\norganisms:\n  # Human\n  \"Homo sapiens\":\n    genome: \"GRCh38\"\n    taxid: 9606\n    aliases: [\"human\", \"hg38\", \"GRCh38\"]\n    notes: \"Primary human reference genome\"\n\n  \"Homo sapiens (legacy)\":\n    genome: \"GRCh37\"\n    taxid: 9606\n    aliases: [\"hg19\", \"GRCh37\"]\n    notes: \"Legacy human reference, still used for some clinical data\"\n\n  # Mouse\n  \"Mus musculus\":\n    genome: \"GRCm39\"\n    taxid: 10090\n    aliases: [\"mouse\", \"mm39\", \"GRCm39\"]\n    notes: \"Current mouse reference genome\"\n\n  \"Mus musculus (legacy)\":\n    genome: \"GRCm38\"\n    taxid: 10090\n    aliases: [\"mm10\", \"GRCm38\"]\n    notes: \"Legacy mouse reference\"\n\n  # Yeast\n  \"Saccharomyces cerevisiae\":\n    genome: \"R64-1-1\"\n    taxid: 4932\n    aliases: [\"yeast\", \"sacCer3\", \"S288C\", \"budding yeast\"]\n    notes: \"S288C reference strain\"\n\n  # Fruit fly\n  \"Drosophila melanogaster\":\n    genome: \"BDGP6\"\n    taxid: 7227\n    aliases: [\"fly\", \"dm6\", \"fruit fly\", \"Dmel\"]\n    notes: \"Berkeley Drosophila Genome Project release 6\"\n\n  # Worm\n  \"Caenorhabditis elegans\":\n    genome: \"WBcel235\"\n    taxid: 6239\n    aliases: [\"worm\", \"ce11\", \"C. elegans\", \"Cele\"]\n    notes: \"WormBase reference\"\n\n  # Zebrafish\n  \"Danio rerio\":\n    genome: \"GRCz11\"\n    taxid: 7955\n    aliases: [\"zebrafish\", \"danRer11\", \"Drer\"]\n    notes: \"Genome Reference Consortium Zebrafish Build 11\"\n\n  # Arabidopsis\n  \"Arabidopsis thaliana\":\n    genome: \"TAIR10\"\n    taxid: 3702\n    aliases: [\"arabidopsis\", \"thale cress\", \"Atha\"]\n    notes: \"The Arabidopsis Information Resource v10\"\n\n  # Rat\n  \"Rattus norvegicus\":\n    genome: \"Rnor_6.0\"\n    taxid: 10116\n    aliases: [\"rat\", \"rn6\", \"Rnor\"]\n    notes: \"Rnor 6.0 reference\"\n\n  # Chicken\n  \"Gallus gallus\":\n    genome: \"GRCg6a\"\n    taxid: 9031\n    aliases: [\"chicken\", \"galGal6\", \"Ggal\"]\n    notes: \"Genome Reference Consortium Chicken Build 6a\"\n\n  # Pig\n  \"Sus scrofa\":\n    genome: \"Sscrofa11.1\"\n    taxid: 9823\n    aliases: [\"pig\", \"susScr11\", \"Sscr\"]\n    notes: \"Swine genome assembly 11.1\"\n\n  # Cow\n  \"Bos taurus\":\n    genome: \"ARS-UCD1.2\"\n    taxid: 9913\n    aliases: [\"cow\", \"bosTau9\", \"cattle\", \"Btau\"]\n    notes: \"USDA ARS assembly\"\n\n  # Dog\n  \"Canis lupus familiaris\":\n    genome: \"CanFam3.1\"\n    taxid: 9615\n    aliases: [\"dog\", \"canFam3\", \"Clup\"]\n    notes: \"Broad Institute CanFam3.1\"\n\n  # Frog\n  \"Xenopus tropicalis\":\n    genome: \"JGI_4.2\"\n    taxid: 8364\n    aliases: [\"frog\", \"xenTro9\", \"Xtro\"]\n    notes: \"JGI assembly version 4.2\"\n\n  # Maize/Corn\n  \"Zea mays\":\n    genome: \"Zm-B73-REFERENCE-NAM-5.0\"\n    taxid: 4577\n    aliases: [\"maize\", \"corn\", \"Zmay\"]\n    notes: \"B73 reference genome v5\"\n\n  # Rice\n  \"Oryza sativa\":\n    genome: \"IRGSP-1.0\"\n    taxid: 39947\n    aliases: [\"rice\", \"Osat\"]\n    notes: \"International Rice Genome Sequencing Project\"\n\n  # E. coli (common bacterial model)\n  \"Escherichia coli\":\n    genome: null\n    taxid: 562\n    aliases: [\"E. coli\", \"Ecol\"]\n    notes: \"Use specific strain reference; K-12 MG1655 common\"\n\n  # Fission yeast\n  \"Schizosaccharomyces pombe\":\n    genome: \"ASM294v2\"\n    taxid: 4896\n    aliases: [\"fission yeast\", \"S. pombe\", \"Spom\"]\n    notes: \"PomBase reference\"\n\n# Pipeline mapping based on library strategy\npipeline_suggestions:\n  \"RNA-SEQ\": \"rnaseq\"\n  \"ATAC-SEQ\": \"atacseq\"\n  \"CHIP-SEQ\": \"chipseq\"\n  \"WGS\": \"sarek\"\n  \"WXS\": \"sarek\"\n  \"EXOME\": \"sarek\"\n  \"AMPLICON\": \"ampliseq\"\n  \"BISULFITE-SEQ\": \"methylseq\"\n  \"HI-C\": \"hic\"\n  \"MIRNA-SEQ\": \"smrnaseq\"\n  \"RRBS\": \"methylseq\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml":"name: atacseq\nversion: \"2.1.2\"\ndescription: \"Chromatin accessibility analysis and peak calling\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/atacseq/{version}/\"\n  parameters: \"https://nf-co.re/atacseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/atacseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/atacseq\"\n  releases: \"https://github.com/nf-core/atacseq/releases\"\n\ndata_types:\n  - ATAC-seq\n  - chromatin accessibility\n  - open chromatin\n\ndetection_hints:\n  filename:\n    - atac\n    - atacseq\n    - chromatin\n    - accessibility\n  directory:\n    - atac\n    - atacseq\n    - chromatin\n    - epigenome\n    - epigenetics\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Condition/group identifier (replicates share same name)\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (paired-end required)\"\n\n    - name: replicate\n      required: true\n      type: integer\n      default: 1\n      inference: filename\n      description: \"Replicate number (integer)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: read_length\n    prompt: \"What is the read length of your sequencing data?\"\n    options:\n      - value: 50\n        label: \"50 bp\"\n        description: \"Short reads\"\n      - value: 75\n        label: \"75 bp\"\n        description: \"Standard length\"\n      - value: 100\n        label: \"100 bp\"\n        description: \"Common for modern sequencers\"\n      - value: 150\n        label: \"150 bp\"\n        description: \"Long reads\"\n    default: 50\n    recommendation: \"Check FASTQ files or sequencing report for exact length\"\n\n  - parameter: narrow_peak\n    prompt: \"What type of peaks are you expecting?\"\n    options:\n      - value: \"true\"\n        label: \"Narrow peaks (default for ATAC-seq)\"\n        description: \"Standard ATAC-seq open chromatin regions\"\n      - value: \"false\"\n        label: \"Broad peaks\"\n        description: \"For histone marks or broader accessibility regions\"\n    default: \"true\"\n    recommendation: \"Use narrow peaks for standard ATAC-seq\"\n\ntest_profile:\n  command: \"nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_atacseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/atacseq \\\n        -r 2.1.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --read_length {read_length} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"bwa/mergedLibrary/*.mLb.mkD.sorted.bam\"\n      description: \"Filtered, deduplicated alignments\"\n    - path: \"bwa/mergedLibrary/bigwig/*.bigWig\"\n      description: \"Coverage tracks for genome browsers\"\n    - path: \"macs2/narrowPeak/*.narrowPeak\"\n      description: \"Peak calls (BED format)\"\n    - path: \"macs2/narrowPeak/consensus/consensus_peaks.bed\"\n      description: \"Consensus peaks across replicates\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"macs2/narrowPeak\"\n      check: exists\n      description: \"Peak calls directory\"\n\nquality_metrics:\n  - name: mapped_reads\n    good: \">80%\"\n    acceptable: \"60-80%\"\n    poor: \"<60%\"\n  - name: mitochondrial\n    good: \"<20%\"\n    acceptable: \"20-40%\"\n    poor: \">40%\"\n  - name: duplicates\n    good: \"<30%\"\n    acceptable: \"30-50%\"\n    poor: \">50%\"\n  - name: frip\n    good: \">30%\"\n    acceptable: \"15-30%\"\n    poor: \"<15%\"\n  - name: tss_enrichment\n    good: \">6\"\n    acceptable: \"4-6\"\n    poor: \"<4\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"Low FRiP score\"\n    fix: \"Check library complexity in plotFingerprint. May indicate over-transposition or low quality\"\n  - error: \"Few peaks called\"\n    fix: \"Lower threshold with --macs_qvalue 0.1 or use --narrow_peak false for broader peaks\"\n  - error: \"High duplicates\"\n    fix: \"Normal for low-input samples. Pipeline removes by default. Consider deeper sequencing\"\n  - error: \"High mitochondrial reads\"\n    fix: \"Sample quality issue. Pipeline filters mito by default (--keep_mito false)\"\n\nreplicate_patterns:\n  - \"_rep(\\\\d+)\"\n  - \"_R(\\\\d+)_\"\n  - \"_(\\\\d+)$\"\n  - \"_replicate(\\\\d+)\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml":"name: rnaseq\nversion: \"3.22.2\"\ndescription: \"Gene expression quantification and differential expression analysis\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/rnaseq/{version}/\"\n  parameters: \"https://nf-co.re/rnaseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/rnaseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/rnaseq\"\n  releases: \"https://github.com/nf-core/rnaseq/releases\"\n\ndata_types:\n  - RNA-seq\n  - mRNA-seq\n  - bulk RNA-seq\n\ndetection_hints:\n  filename:\n    - rna\n    - rnaseq\n    - mrna\n    - expression\n  directory:\n    - rnaseq\n    - rna\n    - expression\n    - transcriptome\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (empty for single-end)\"\n\n    - name: strandedness\n      required: true\n      type: enum\n      allowed:\n        - auto\n        - forward\n        - reverse\n        - unstranded\n      default: \"auto\"\n      inference: default\n      description: \"Library strandedness (auto recommended)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended for human)\"\n        description: \"Latest human reference assembly\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference for compatibility\"\n      - value: mm10\n        label: \"Mouse mm10/GRCm38\"\n        description: \"Mouse reference genome\"\n      - value: BDGP6\n        label: \"Drosophila BDGP6\"\n        description: \"Fruit fly reference\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: aligner\n    prompt: \"Which alignment strategy would you prefer?\"\n    options:\n      - value: star_salmon\n        label: \"STAR + Salmon (recommended)\"\n        description: \"Most accurate, standard for differential expression\"\n      - value: star_rsem\n        label: \"STAR + RSEM\"\n        description: \"Better for isoform-level quantification\"\n      - value: hisat2\n        label: \"HISAT2\"\n        description: \"Lower memory requirements, faster\"\n    default: star_salmon\n    recommendation: \"Use star_salmon unless memory-constrained or need isoforms\"\n\ntest_profile:\n  command: \"nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_rnaseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/rnaseq \\\n        -r 3.22.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --aligner {aligner} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      description: \"Raw gene counts for DESeq2/edgeR\"\n    - path: \"star_salmon/salmon.merged.gene_tpm.tsv\"\n      description: \"TPM normalized expression values\"\n    - path: \"star_salmon/*.bam\"\n      description: \"Aligned reads\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      check: non_empty\n      description: \"Count matrix must have data\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"STAR index fails\"\n    fix: \"Increase memory with --max_memory '64.GB' or provide pre-built --star_index\"\n  - error: \"Low alignment rate\"\n    fix: \"Verify genome matches species; check FastQC for adapter contamination\"\n  - error: \"Strandedness detection fails\"\n    fix: \"Specify explicitly with --strandedness reverse (or forward/unstranded)\"\n","bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml":"name: sarek\nversion: \"3.7.1\"\ndescription: \"Variant calling for WGS/WES data (germline and somatic)\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/sarek/{version}/\"\n  parameters: \"https://nf-co.re/sarek/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/sarek/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/sarek\"\n  releases: \"https://github.com/nf-core/sarek/releases\"\n\ndata_types:\n  - WGS\n  - WES\n  - whole genome sequencing\n  - whole exome sequencing\n  - tumor-normal\n  - germline\n  - somatic\n\ndetection_hints:\n  filename:\n    - tumor\n    - normal\n    - germline\n    - wgs\n    - wes\n    - exome\n    - dna\n    - variant\n  directory:\n    - variant\n    - wgs\n    - wes\n    - exome\n    - germline\n    - somatic\n\nsamplesheet:\n  input_types:\n    - fastq\n    - bam\n    - cram\n\n  columns:\n    - name: patient\n      required: true\n      type: string\n      inference: filename\n      description: \"Patient/subject identifier for grouping samples\"\n\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier (e.g., tumor, normal)\"\n\n    - name: lane\n      required: false\n      type: string\n      default: \"L001\"\n      inference: filename\n      description: \"Sequencing lane\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R2 FASTQ\"\n\n    - name: bam\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM file\"\n\n    - name: bai\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM index\"\n\n    - name: status\n      required: false\n      type: integer\n      allowed:\n        - 0\n        - 1\n      default: 0\n      inference: filename\n      description: \"0=normal, 1=tumor (critical for somatic calling)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome should be used?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference with most annotation support\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"For compatibility with older datasets\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human data\"\n\n  - parameter: tools\n    prompt: \"What type of variant calling do you need?\"\n    options:\n      - value: \"haplotypecaller,snpeff\"\n        label: \"Germline variants (single samples)\"\n        description: \"For finding inherited variants in normal samples\"\n        condition: \"no tumor samples detected\"\n      - value: \"mutect2,strelka,snpeff\"\n        label: \"Somatic variants (tumor-normal pairs)\"\n        description: \"For finding cancer mutations with matched normal\"\n        condition: \"tumor-normal pairs detected\"\n      - value: \"haplotypecaller,deepvariant,snpeff\"\n        label: \"Germline with DeepVariant\"\n        description: \"Higher accuracy germline calling (requires GPU)\"\n      - value: \"mutect2,manta,snpeff\"\n        label: \"Somatic with structural variants\"\n        description: \"Comprehensive tumor analysis including SVs\"\n    default: \"haplotypecaller,snpeff\"\n    recommendation: \"Use somatic tools if tumor/normal pairs detected, otherwise germline\"\n\n  - parameter: wes\n    prompt: \"Is this whole exome sequencing (WES) data?\"\n    options:\n      - value: \"false\"\n        label: \"No - Whole Genome Sequencing (WGS)\"\n        description: \"Full genome coverage\"\n      - value: \"true\"\n        label: \"Yes - Whole Exome Sequencing (WES)\"\n        description: \"Requires --intervals BED file\"\n    default: \"false\"\n    recommendation: \"If WES, user must provide intervals BED file\"\n\ntest_profile:\n  command: \"nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\"\n  duration: \"20 minutes\"\n  success_indicators:\n    - \"test_sarek/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        -resume\n\n  wes_template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        --wes \\\n        --intervals {intervals} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"preprocessing/recalibrated/*.recal.bam\"\n      description: \"Analysis-ready BAM files\"\n    - path: \"variant_calling/*/*.vcf.gz\"\n      description: \"Variant call files\"\n    - path: \"annotation/snpeff/*.ann.vcf.gz\"\n      description: \"Annotated variants\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"preprocessing/recalibrated\"\n      check: exists\n      description: \"Recalibrated BAMs directory\"\n\nresources:\n  min_memory: \"16.GB\"\n  recommended_memory: \"64.GB\"\n  wgs_memory: \"128.GB\"\n  min_cpus: 4\n  recommended_cpus: 16\n  disk_space: \"500.GB\"\n\ntroubleshooting:\n  - error: \"BQSR fails\"\n    fix: \"Check known sites available for genome. Skip with --skip_bqsr for non-standard references\"\n  - error: \"Mutect2 no variants\"\n    fix: \"Verify tumor/normal pairing in samplesheet (check status column: 0=normal, 1=tumor)\"\n  - error: \"Out of memory\"\n    fix: \"--max_memory '128.GB' for WGS data\"\n  - error: \"DeepVariant GPU issues\"\n    fix: \"Ensure NVIDIA Docker runtime configured, or use CPU mode\"\n\ntumor_normal_keywords:\n  tumor:\n    - tumor\n    - tumour\n    - met\n    - metastasis\n    - primary\n    - cancer\n    - malignant\n  normal:\n    - normal\n    - germline\n    - blood\n    - pbmc\n    - control\n    - healthy\n    - matched\n","bio-research/skills/scientific-problem-selection/SKILL.md":"---\nname: scientific-problem-selection\ndescription: This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include \"I have an idea for a project\", \"I'm stuck on my research\", \"help me evaluate this project\", \"what should I work on\", or \"I need strategic advice about my research\".\n---\n\n# Scientific Problem Selection Skills\n\nA conversational framework for systematic scientific problem selection based on Fischbach & Walsh's \"Problem choice and decision trees in science and engineering\" (Cell, 2024).\n\n## Getting Started\n\nPresent users with three entry points:\n\n**1) Pitch an idea for a new project** — to work it up together\n\n**2) Share a problem in a current project** — to troubleshoot together\n\n**3) Ask a strategic question** — to navigate the decision tree together\n\nThis conversational entry meets scientists where they are and establishes a collaborative tone.\n\n---\n\n## Option 1: Pitch an Idea\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your idea (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their idea, return a quick summary (no more than one paragraph) demonstrating understanding. Note the general area of research and rephrase the idea in a way that highlights its kernel—showing alignment and readiness to dive into details.\n\n### Follow-up Prompt\nThen ask for more detail: \"Now give me a bit more detail. You might include, however briefly or even say where you are unsure:\n1. What exactly you want to do\n2. How you currently plan to do it\n3. If it works, why will it be a big deal\n4. What you think are the major risks\"\n\n### Workflow\nFrom there, guide the user through the early stages of problem selection and evaluation:\n- **Skill 1: Intuition Pumps** - Refine and strengthen the idea\n- **Skill 2: Risk Assessment** - Identify and manage project risks\n- **Skill 3: Optimization Function** - Define success metrics\n- **Skill 4: Parameter Strategy** - Determine what to fix vs. keep flexible\n\nSee `references/01-intuition-pumps.md`, `references/02-risk-assessment.md`, `references/03-optimization-function.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 2: Troubleshoot a Problem\n\n### Initial Prompt\nAsk: **\"Tell me a short version of your problem (1-2 sentences or whatever is easy).\"**\n\n### Response Approach\nAfter the user shares their problem, return a quick summary (no more than one paragraph) demonstrating understanding. Note the context of the project where the problem occurred and rephrase the problem—highlighting its core essence—so the user knows the situation is understood. Also raise additional questions that seem important to discuss.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The overall goal of your project (if we have not talked about it before)\n2. What exactly went wrong\n3. Your current ideas for fixing it\"\n\n### Workflow\nFrom there, guide the user through troubleshooting and decision tree navigation:\n- **Skill 5: Decision Tree Navigation** - Plan decision points and navigate between execution and strategic thinking\n- **Skill 4: Parameter Strategy** - Fix one parameter at a time, let others float\n- **Skill 6: Adversity Response** - Frame problems as opportunities for growth\n- **Skill 7: Problem Inversion** - Strategies for navigating around obstacles\n\nAlways include workarounds that might be useful whether or not the problem can be fixed easily.\n\nSee `references/05-decision-tree.md`, `references/06-adversity-planning.md`, `references/07-problem-inversion.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 3: Ask a Strategic Question\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your question (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their question, return a quick summary (no more than one paragraph) demonstrating understanding. Note the broader context and rephrase the question—highlighting its crux—to confirm alignment with their thinking.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The setting (i.e., is this about a current or future project)\n2. A bit more detail about what you're thinking\"\n\n### Workflow\nFrom there, draw on the specific modules from the problem choice framework most appropriate to the question:\n- **Skills 1-4** for future project planning (ideation, risk, optimization, parameters)\n- **Skills 5-7** for current project navigation (decision trees, adversity, inversion)\n- **Skill 8** for communication and synthesis\n- **Skill 9** for comprehensive workflow orchestration\n\nSee the complete reference materials in the `references/` folder.\n\n---\n\n## Core Framework Concepts\n\n### The Central Insight\n**Problem Choice >> Execution Quality**\n\nEven brilliant execution of a mediocre problem yields incremental impact. Good execution of an important problem yields substantial impact.\n\n### The Time Paradox\nScientists typically spend:\n- **Days** choosing a problem\n- **Years** solving it\n\nThis imbalance limits impact. These skills help invest more time choosing wisely.\n\n### Evaluation Axes\n**For Evaluating Ideas:**\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nSkills help move ideas rightward (more feasible) and upward (more impactful).\n\n### The Risk Paradox\n- Don't avoid risk—befriend it\n- No risk = incremental work\n- But: Multiple miracles = avoid or refine\n- **Balance:** Understood, quantified, manageable risk\n\n### The Parameter Paradox\n- Too many fixed = brittleness\n- Too few fixed = paralysis\n- **Sweet spot:** Fix ONE meaningful constraint\n\n### The Adversity Principle\n- Crises are inevitable (don't be surprised)\n- Crises are opportune (don't waste them)\n- **Strategy:** Fix problem AND upgrade project simultaneously\n\n---\n\n## The 9 Skills Overview\n\n| Skill | Purpose | Output | Time |\n|-------|---------|--------|------|\n| 1. Intuition Pumps | Generate high-quality research ideas | Problem Ideation Document | ~1 week |\n| 2. Risk Assessment | Identify and manage project risks | Risk Assessment Matrix | 3-5 days |\n| 3. Optimization Function | Define success metrics | Impact Assessment Document | 2-3 days |\n| 4. Parameter Strategy | Decide what to fix vs. keep flexible | Parameter Strategy Document | 2-3 days |\n| 5. Decision Tree Navigation | Plan decision points and altitude dance | Decision Tree Map | 2 days |\n| 6. Adversity Response | Prepare for crises as opportunities | Adversity Playbook | 2 days |\n| 7. Problem Inversion | Navigate around obstacles | Problem Inversion Analysis | 1 day |\n| 8. Integration & Synthesis | Synthesize into coherent plan | Project Communication Package | 3-5 days |\n| 9. Meta-Framework | Orchestrate complete workflow | Complete Project Package | 1-6 weeks |\n\n---\n\n## Skill Workflow\n\n```\nSKILL 1: Intuition Pumps\n         | (generates idea)\n         v\nSKILL 2: Risk Assessment\n         | (evaluates feasibility)\n         v\nSKILL 3: Optimization Function\n         | (defines success metrics)\n         v\nSKILL 4: Parameter Strategy\n         | (determines flexibility)\n         v\nSKILL 5: Decision Tree\n         | (plans execution and evaluation)\n         v\nSKILL 6: Adversity Planning\n         | (prepares for failure modes)\n         v\nSKILL 7: Problem Inversion\n         | (provides pivot strategies)\n         v\nSKILL 8: Integration & Communication\n         | (synthesizes into coherent plan)\n         v\nSKILL 9: Meta-Skill\n         (orchestrates complete workflow)\n```\n\n---\n\n## Key Design Principles\n\n1. **Conversational Entry** - Meet users where they are with three clear starting points\n2. **Thoughtful Interaction** - Ask clarifying questions; low confidence prompts additional input\n3. **Literature Integration** - Use PubMed searches at strategic points for validation\n4. **Concrete Outputs** - Every skill produces tangible 1-2 page documents\n5. **Building Specificity** - Progressive detail emerges through targeted questions\n6. **Flexibility** - Skills work independently, sequentially, or iteratively\n7. **Scientific Rigor** - Claims about generality and feasibility should be evidence-based\n\n---\n\n## Who Should Use These Skills\n\n### Graduate Students (Primary Audience)\n- **When:** Choosing thesis projects, qualifying exams, committee meetings\n- **Focus:** Skills 1-3 (ideation, risk, impact) + Skill 9 (complete workflow)\n- **Timeline:** 2-4 weeks for comprehensive planning\n\n### Postdocs\n- **When:** Starting new position, planning independent projects, fellowship applications\n- **Focus:** All skills, emphasizing independence and risk management\n- **Timeline:** 1-2 weeks intensive planning\n\n### Principal Investigators\n- **When:** New lab, new direction, mentoring trainees, grant cycles\n- **Focus:** Skills 1, 3, 4, 6 (ideation, impact, parameters, adversity)\n- **Timeline:** Ongoing, integrate into lab culture\n\n### Startup Founders\n- **When:** Company inception, pivot decisions, investor pitches\n- **Focus:** Skills 1-4 (ideation through parameters) + Skill 8 (communication)\n- **Timeline:** 1-2 weeks for initial planning, revisit quarterly\n\n---\n\n## Reference Materials\n\nDetailed skill documentation is available in the `references/` folder:\n\n| File | Content | Search Patterns |\n|------|---------|-----------------|\n| `01-intuition-pumps.md` | Generate research ideas | `Intuition Pump #`, `Trap #`, `Phase [0-9]` |\n| `02-risk-assessment.md` | Risk identification | `Risk.*1-5`, `go/no-go`, `assumption` |\n| `03-optimization-function.md` | Success metrics | `Generality.*Learning`, `optimization`, `impact` |\n| `04-parameter-strategy.md` | Parameter fixation | `fixed.*float`, `constraint`, `parameter` |\n| `05-decision-tree.md` | Decision tree navigation | `altitude`, `Level [0-9]`, `decision` |\n| `06-adversity-planning.md` | Adversity response | `adversity`, `crisis`, `ensemble` |\n| `07-problem-inversion.md` | Problem inversion strategies | `Strategy [0-9]`, `inversion`, `goal` |\n| `08-integration-synthesis.md` | Integration and synthesis | `narrative`, `communication`, `story` |\n| `09-meta-framework.md` | Complete workflow | `Phase`, `workflow`, `orchestrat` |\n\n---\n\n## Expected Outcomes\n\n### Immediate (After Completing Workflow)\n- Clear project vision\n- Honest risk assessment\n- Contingency plans\n- Communication materials ready\n- Confidence in problem choice\n\n### 6-Month\n- Faster decisions (have framework)\n- Productive adversity handling\n- No existential crises (risks mitigated)\n\n### 2-Year\n- Published results or strong progress\n- Avoided dead-end projects\n- Career aligned with goals\n- **Time well-spent** (ultimate measure)\n\n---\n\n## Foundational Reference\n\n**Fischbach, M.A., & Walsh, C.T. (2024).** \"Problem choice and decision trees in science and engineering.\" *Cell*, 187, 1828-1833.\n\nBased on course BIOE 395 taught at Stanford University.\n","bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md":"# SKILL: Intuition Pumps for Scientific Problem Ideation\n\n## Overview\nThis skill helps scientists generate high-quality research ideas by providing systematic prompts (\"intuition pumps\") and identifying common ideation traps. Based on the framework that most biological and chemical science projects involve **perturbing a system, measuring it, and analyzing the data**, this skill guides users through structured ideation that can significantly impact how they spend years of their career.\n\n## Core Framework\n\n### The Three Pillars of Scientific Work\nResearch advances generally fall into one of these categories, each with two dimensions:\n\n**PERTURBATION**\n- *Logic*: Novel ways to manipulate biological systems (e.g., using CRISPR for deep mutational scanning)\n- *Technology*: New tools for manipulation (e.g., developing base editors, creating whole-genome CRISPR libraries)\n\n**MEASUREMENT**  \n- *Logic*: Novel applications of existing measurement tools (e.g., using tissue clearing to study liver fibrosis)\n- *Technology*: New measurement capabilities (e.g., developing tissue-clearing techniques, super-resolution microscopy)\n\n**THEORY/COMPUTATION**\n- *Logic*: Using computational tools to make discoveries (e.g., applying AlphaFold to identify protein functions)\n- *Technology*: Building new algorithms or models (e.g., developing machine learning architectures for biological data)\n\nUnderstanding which quadrant resonates with the user can help identify their niche and guide ideation.\n\n## The Skill Workflow\n\n### Phase 1: Initial Discovery Questions (5-10 minutes)\n\nBefore diving into intuition pumps, Claude should gather context by asking the user:\n\n1. **What is the user's general research area or field?** (e.g., immunology, synthetic biology, neuroscience, protein engineering)\n\n2. **What excites the user most about science?**\n   - Building new tools/technologies?\n   - Discovering fundamental principles?\n   - Solving practical problems?\n   - Understanding dynamic processes?\n\n3. **What are the user's existing strengths?** (Select all that apply)\n   - Specific techniques (please list)\n   - Computational skills\n   - Access to unique systems/models\n   - Domain expertise in a particular area\n\n4. **Current constraints:**\n   - Time horizon for this project? (months/years)\n   - Resources available?\n   - Must it connect to existing work, or can the user start fresh?\n\n5. **On a scale of 1-5, how would the user rate their current idea?**\n   - Likelihood of success: 1 (very risky) to 5 (highly feasible)\n   - Potential impact: 1 (incremental) to 5 (transformative)\n\n### Phase 2: Applying Intuition Pumps\n\nBased on the user's responses, Claude should guide them through relevant intuition pumps from this list:\n\n#### Intuition Pump #1: Make It Systematic\n**Prompt:** Take any one-off perturbation or measurement and make it systematic.\n\n**Examples:**\n- Instead of mutating one enzyme, measure kinetic parameters across an entire enzyme family\n- Instead of one CRISPR mutant → genome-wide screen with transcriptomic readout\n- Instead of imaging one condition → high-throughput imaging across thousands of conditions\n\n**Prompt for User:** What one-off experiment in your field could become a systematic survey?\n\n#### Intuition Pump #2: Identify Technology Limitations\n**Prompt:** What are the fundamental limitations of technologies you use? These limitations are opportunities.\n\n**Examples:**\n- Microscopy can't resolve beyond diffraction limit → super-resolution microscopy\n- DNA synthesis can't make complete genomes → develop assembly methods\n- Genetic screens have precise input but imprecise output → develop high-dimensional readouts\n- We do single gene KOs but networks are complex → develop combinatorial perturbation methods\n\n**Prompt for User:** What technology limitation frustrates you most? How might you turn that limitation into an opportunity?\n\n#### Intuition Pump #3: The \"I Can't Imagine\" Test\n**Prompt:** I can't imagine a future in which we don't have ____, but it doesn't exist yet.\n\n**Examples:**\n- The ability to design highly efficient enzymes like we design other proteins\n- The ability to deliver genome editing payloads to any cell type in vivo\n- 3D tomographic imaging of live cells at molecular resolution\n- Proteome-scale sequencing with the throughput of RNA-seq\n\n**Prompt for User:** What capability seems inevitable but doesn't exist yet in your field?\n\n#### Intuition Pump #4: Static vs. Dynamic Understanding\n**Prompt:** We understand biological \"parts lists\" but rarely understand dynamic processes.\n\n**Key Insight:** Most observations are single-timepoint, single-perturbation format. But biological systems are dynamic—like humans flowing through Grand Central Station or money through financial systems.\n\n**Examples:**\n- Understanding growth factor signaling like we understand turning a key in a car engine\n- Time-resolved cell atlases with lineage tracing through entire development\n- Following metabolite flux through pathways in real-time\n\n**Prompt for User:** What dynamic process in your field do we observe as static snapshots? How might you capture the full temporal or spatial dynamics?\n\n#### Intuition Pump #5: Pick a New Axis\n**Prompt:** We almost always use time as the x-axis for dynamic processes. What other coordinate could you use?\n\n**Example:** Instead of time, use \"infection progression\" markers to enable monitoring asynchronous cells\n\n**Prompt for User:** What non-temporal coordinate could reveal new biology in your system?\n\n#### Intuition Pump #6: Create a Technology Platform\n**Prompt:** Instead of answering one question, could you build a platform that enables many questions?\n\n**Examples:**\n- Antibodies for intracellular targets (not just extracellular)\n- AI that predicts perturbations needed to reach desired cell states\n- Universal genome delivery vehicles\n\n**Prompt for User:** What platform would transform how your field asks questions?\n\n#### Intuition Pump #7: Dogs That Don't Bark\n**Prompt:** Why doesn't something exist or occur? Absence can be as informative as presence.\n\n**Examples:**\n- Why are there no Gram-negative bacteria on human skin?\n- Why do some catalytically inactive enzymes persist through evolution?\n- Why don't certain cell types exist in certain tissues?\n\n**Prompt for User:** What absence puzzles you in your field?\n\n### Phase 3: Avoiding Common Traps\n\nAfter generating ideas, we must evaluate them critically. Here are the most common traps:\n\n#### Trap #1: The Truffle Hound\n**Warning:** Don't become so good at one system or technique that you fail to ask questions of biological import.\n\n**Bad:** \"What is the role of p190 RhoGAP in wing development?\"  \n**Better:** \"How do signaling pathways and cytoskeleton coordinate to control wing development?\"\n\n**Self-Check:** Is the question driven by biological curiosity or by what the user is technically capable of?\n\n#### Trap #2: Applying Existing Tool to New System\n**Warning:** \"Let's use CRISPR in my organism\" can be valuable but risks crowding and incrementalism.\n\n**When It Works:** The user is enabling a field that truly needs this capability\n**When It Fails:** The tool is already widely applied; the contribution will be incremental\n\n**Self-Check:** Will this tool application open new biological questions, or just extend existing observations? Claude should help the user evaluate this honestly.\n\n#### Trap #3: Jumping on the First Idea\n**Warning:** Treating ideas with reverence instead of skepticism. Confirmation bias sets in quickly.\n\n**Better Approach:** Users should treat new ideas like leeches trying to steal their time. Look for the warts. Develop several ideas in parallel and comparison shop.\n\n**Self-Check:** Has the user critically evaluated at least 3-5 alternative approaches?\n\n#### Trap #4: Too Many Fixed Parameters\n**Warning:** Fixing too many parameters at the outset creates a poor technique-application match.\n\n**Example of Over-Constraining:** \"I will use spatial transcriptomics to study antigen-presenting cell and T cell interactions in the tumor microenvironment.\"\n- This fixes: technique (spatial transcriptomics), cell types, and context\n- If any assumption fails, the project fails\n\n**Self-Check:** Has the user fixed more than 2 parameters before starting?\n\n#### Trap #5: Too Few Fixed Parameters\n**Warning:** \"I want to do impactful work in cell engineering\" → paralysis\n\n**Resolution:** Constraints engender creativity. Fix ONE parameter at a time and let creativity flow.\n\n**Self-Check:** Does the user have at least one concrete constraint to work with?\n\n### Phase 4: Literature Integration\n\nTo ensure the idea has appropriate scope and hasn't been thoroughly explored, Claude should ask:\n\n1. **What are 2-3 key questions or gaps the idea addresses?**\n\n2. **What should be searched in PubMed to:**\n   - Understand the current state of the field?\n   - Identify related approaches?\n   - Find empirical knowledge from adjacent domains that could inform the approach?\n\nClaude should use PubMed to:\n- Assess how general/specific the problem is\n- Identify relevant methodological advances\n- Find analogous systems or approaches in other fields\n- Determine the degree of competition\n\n### Phase 5: Idea Refinement and Output\n\nAfter working through intuition pumps, avoiding traps, and reviewing literature, Claude should help the user:\n\n1. **Crystallize the Idea:**\n   - Biological question\n   - Technical approach (perturbation/measurement/theory: logic vs. technology)\n   - What's novel about this angle?\n\n2. **Articulate Fixed vs. Floating Parameters:**\n   - What MUST remain constant in the approach?\n   - What can be flexible if obstacles arise?\n\n3. **Identify Key Assumptions:**\n   - What must be true for this to work?\n   - Which assumptions are about biology vs. technology capabilities?\n\n4. **Sketch Alternative Paths:**\n   - If the primary approach fails, what's Plan B?\n   - Can the project be designed to succeed regardless of outcome?\n\n## Output Deliverable\n\nAt the end of this skill, Claude should produce a **2-page Problem Ideation Document** containing:\n\n### Page 1: Core Idea\n- **Title:** Concise project name\n- **The Question:** What biological question is being asked?\n- **The Approach:** How will it be answered? (Specify perturbation/measurement/computation: logic vs. technology)\n- **What's Novel:** The unique angle\n- **Why It Matters:** Potential impact (generality × learning, or technology development)\n- **Intuition Pump(s) Used:** Which prompted this idea\n\n### Page 2: Critical Analysis\n- **Fixed vs. Floating Parameters:**\n  - Fixed: What must stay constant\n  - Floating: What can adapt\n\n- **Key Assumptions & Risk Assessment:**\n  - Biological assumptions (risk level 1-5)\n  - Technical assumptions (risk level 1-5)\n\n- **Traps Avoided:** Which pitfalls were navigated around?\n\n- **Alternative Approaches:** Plan B and Plan C\n\n- **Literature Context:**\n  - 3-5 key papers that inform or relate to this work\n  - Degree of competition (low/medium/high)\n  - The user's edge/advantage\n\n- **Next Steps:** First 3 concrete experiments or analyses\n\n## Key Principles to Remember\n\n1. **Reversal of Polarity:** Treat ideas with skepticism, not reverence. Look for flaws before falling in love.\n\n2. **Comparison Shopping:** Develop multiple ideas in parallel. The act of comparison improves decision-making.\n\n3. **Fix One Parameter at a Time:** Constraints engender creativity, but too many constraints prevent it.\n\n4. **Think in Ensembles:** The user is picking a family of possible projects, not a singular path. Flexibility is essential.\n\n5. **Balance Logic and Technology:** Novel biology can come from new tools OR clever application of existing tools.\n\n6. **Systematic Over One-Off:** High-throughput and systematic approaches often reveal more than single observations.\n\n7. **Dynamic Over Static:** Biological systems are dynamic. How can process be captured rather than snapshot?\n\n## Getting Started\n\nWhen the user is ready, Claude should guide them through the Phase 1 questions to begin the systematic ideation process. The key message: spending extra time on problem choice is the highest-leverage activity in science. A well-chosen problem executed reasonably well will have more impact than a mediocre problem executed brilliantly.\n\n---\n\n*This skill is based on the problem choice framework developed by Michael A. Fischbach and Christopher T. Walsh, as described in \"Problem choice and decision trees in science and engineering\" (Cell, 2024).*\n","bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md":"# SKILL 2: Risk Assessment and Assumption Analysis\n\n## Overview\nThis skill helps scientists systematically identify, quantify, and manage project risk through rigorous assumption analysis. The goal is not to eliminate risk—risk-free projects tend to be incremental—but to name it, quantify it, and work steadily to chip away at it. This skill builds directly on the Problem Ideation Document from Skill 1.\n\n## Core Principle\n\n**\"Don't avoid risk; befriend it.\"**\n\nThe most important concept in problem choice is the two-axis evaluation:\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nThis skill focuses on the X-axis, helping users move their project rightward through systematic risk analysis.\n\n## Why This Matters\n\nA project with a high-risk assumption that won't read out for >2 years is problematic. One that requires multiple miracles to succeed should be avoided or refined. The human tendency is to stay in a safe local space, work laterally, and put off facing existential risks—like an ostrich burying its head in the sand. This skill helps users face risk head-on.\n\n## The Skill Workflow\n\n### Phase 1: Extract Project Assumptions (10-15 minutes)\n\nFirst, Claude should gather information about the user's project from Skill 1:\n\n1. **Project Summary** (from Skill 1):\n   - The biological question\n   - The technical approach\n   - What's novel about it\n\n2. **Project Horizon:**\n   - How long is this project expected to take? (months/years)\n   - What is the user's role? (graduate student, postdoc, PI, startup founder)\n\n3. **Initial Risk Sense:**\n   - What keeps the user up at night about this project?\n   - What's the scariest assumption?\n\n### Phase 2: Comprehensive Assumption Listing\n\nClaude should work with the user to list EVERY assumption the project makes from inception through conclusion. Assumptions fall into two categories:\n\n#### Type A: Assumptions About Biological Reality\nThese are facts about the world that either are or aren't true. They won't change during the project.\n\n**Examples:**\n- New cell types exist beyond what's currently known\n- A particular gene regulates the process being studied\n- Two proteins physically interact\n- A pathway functions in the organism of interest\n- The biological effect size is detectable\n\n#### Type B: Assumptions About Technical Capability\nThese are about whether technology can do what's needed. These CAN change during the project as methods improve.\n\n**Examples:**\n- A specific cell type can be isolated\n- Sequencing will generate high-quality data\n- An assay has sufficient throughput\n- Computational analysis can distinguish signal from noise\n- Gene editing will work in the system\n\n**Claude should ask:**\n1. What must be true about the biology for this to work?\n2. What must the technology be able to do?\n3. What about the experimental design—what assumptions are built in?\n4. What about the analysis—can it deliver what's needed?\n5. If everything works, can the findings be validated?\n6. Will the findings be interpretable and meaningful?\n\n### Phase 3: Risk Scoring (The Assumption Analysis Table)\n\nFor each assumption, Claude should help the user assign two scores:\n\n#### Risk Level (1-5 scale):\n- **1** = Very likely to be true/work (>90% confidence)\n- **2** = Likely (70-90% confidence)\n- **3** = Uncertain (40-70% confidence)\n- **4** = Unlikely (10-40% confidence)\n- **5** = Very unlikely (<10% confidence)\n\n#### Time to Test (months):\nHow long before the user will know if this assumption is valid?\n\n**Critical Rules:**\n1. Be brutally honest—try to convince oneself of being WRONG, not right\n2. Distinguish between biological vs. technical assumptions\n3. Consider whether technical assumptions might improve over time\n4. Note which assumptions depend on earlier assumptions succeeding\n\n### Phase 4: Risk Profile Evaluation\n\nOnce the complete table is ready, Claude should analyze the risk profile:\n\n#### Red Flags to Identify:\n1. **The Late High-Risk Problem:** Risk level 4-5 assumption that won't read out until >18 months\n2. **The Multiple Miracles:** More than 2-3 assumptions with risk level 4-5\n3. **The Dependency Chain:** High-risk assumptions stacked in sequence\n4. **The Ostrich Pattern:** Starting with low-risk work while avoiding the high-risk tests\n\n#### Green Lights:\n1. **Early Go/No-Go:** Highest-risk assumption testable in <6 months\n2. **Multiple Candidates:** Project can succeed with several different outcomes\n3. **Graceful Degradation:** If assumption X fails, assumption Y provides alternative path\n4. **Risk Distribution:** High-risk assumptions balanced across timeline\n\n**Rule of Thumb:** If you have a risk level 5 assumption three years out, pick another project.\n\n### Phase 5: Risk Mitigation Strategies\n\nFor each high-risk assumption (level 4-5), Claude should help develop mitigation strategies:\n\n#### Strategy 1: Move High-Risk Tests Earlier\n**Question:** Can a quicker, cruder test be designed that answers most of what's needed?\n\n**Example:** Instead of waiting 2 years to validate a new cell type exists, consider:\n- Using existing markers as a proxy\n- Testing in a simpler model system first\n- Using computational predictions to increase confidence\n\n#### Strategy 2: Multiple Candidates Approach\n**Question:** Can multiple candidates be tested in parallel to increase likelihood of success?\n\n**Example:** Instead of:\n- Testing one kinase → Test a panel of 10 kinases\n- Building one engineered organism → Build and test a library\n- Pursuing one therapeutic target → Pursue 3 related targets\n\n#### Strategy 3: Reframe the Question\n**Question:** Can the project scope be adjusted to reduce critical assumptions while maintaining impact?\n\n**Example from lecture:**\n- **Original:** Identify NEW enteroendocrine cell types (high risk: they may not exist)\n- **Reframed:** Better characterize KNOWN but incompletely understood cell types (lower risk)\n\n#### Strategy 4: Change the System\n**Question:** Is there a different biological system with similar scientific value but lower technical risk?\n\n**Example from lecture:**\n- **Original:** Intestinal epithelium (hard to manipulate genetically)\n- **Alternative:** Liver (easier genetic manipulation options exist)\n\n#### Strategy 5: Add Complementary Approaches\n**Question:** Can a parallel approach be added that de-risks the main assumption?\n\n**Example from lecture:**\n- Add spatial transcriptomics to scRNA-seq\n- This provides biogeographic context and validates cell type existence earlier\n\n### Phase 6: Go/No-Go Experiment Design\n\nFor the top 3 highest-risk assumptions, Claude should help design the critical go/no-go experiments:\n\n**For each, specify:**\n1. **The Question:** Exactly what is being tested?\n2. **The Experiment:** Most direct test possible (even if crude)\n3. **Success Criteria:** What result means \"go\"?\n4. **Failure Response:** What result means \"pivot\" or \"stop\"?\n5. **Timeline:** How soon can this be run?\n6. **Resources:** What is needed?\n\n**Key Principle:** Cut right to the critical go/no-go experiment. Don't just start with easy stuff—the risk points aren't going away.\n\n### Phase 7: Literature Validation\n\nClaude should search PubMed to help calibrate risk assessments:\n\n**Search for:**\n1. **Precedents:** Has anyone done something similar? (Reduces technical risk)\n2. **Biological Evidence:** What's known about the system? (Informs biological risk)\n3. **Technical Benchmarks:** How well do the methods work in practice?\n4. **Adjacent Successes:** Has anyone solved related problems?\n\n**Questions to ask the user:**\n- What specific searches would help calibrate risk?\n- Are there particular papers that informed the assumptions?\n- Are there technical benchmarks to look up?\n\n### Phase 8: Revised Project Plan\n\nBased on the risk analysis, Claude should help create a revised plan:\n\n#### Option A: De-Risk the Current Plan\n- Reorder experiments to test high-risk assumptions early\n- Add complementary approaches\n- Design multiple-candidate strategies\n\n#### Option B: Reframe the Project\n- Adjust scope while maintaining impact\n- Change biological system\n- Modify technical approach\n\n#### Option C: Pick a Different Project\nSometimes the honest answer is: \"This has too many miracles.\" That's valuable to know BEFORE investing years.\n\n## Output Deliverable\n\nClaude should produce a **2-page Risk Assessment Document**:\n\n### Page 1: Assumption Analysis Table\n\n| Assumption | Type* | Risk† | Time‡ | Notes |\n|------------|-------|-------|-------|-------|\n| [Assumption 1] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| [Assumption 2] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| ... | ... | ... | ... | ... |\n\n*Bio = Biological reality, Tech = Technical capability  \n†Risk: 1=very likely to 5=very unlikely  \n‡Time to test in months\n\n#### Risk Profile Summary:\n- **Total Assumptions:** X\n- **High Risk (4-5):** X assumptions\n- **Late High Risk (>18mo):** X assumptions\n- **Critical Path:** [Identify the chain of dependent assumptions]\n- **Overall Assessment:** [Green/Yellow/Red light with explanation]\n\n### Page 2: Risk Mitigation Plan\n\n#### Top 3 High-Risk Assumptions:\nFor each:\n1. **The Assumption:** [Stated clearly]\n2. **Current Risk Level & Timeline:** X (risk) at Y months\n3. **Why This Risk Exists:** [Explanation]\n4. **Mitigation Strategy:** [From Strategies 1-5 above]\n5. **Go/No-Go Experiment:**\n   - Experiment design\n   - Success criteria\n   - Timeline\n   - What you'll do if it fails\n\n#### Revised Project Timeline:\n```\nMonth 0-6:   [Early go/no-go experiments]\nMonth 6-12:  [Based on go/no-go results]\nMonth 12-18: [...]\nMonth 18+:   [...]\n```\n\n#### Contingency Plans:\n- **If assumption X fails:** [Plan B]\n- **If assumption Y fails:** [Plan C]\n- **Multiple success paths:** [How project can succeed different ways]\n\n#### Decision Points:\n- **Month X:** Evaluate [assumptions A, B] → Go/Pivot/Stop decision\n- **Month Y:** Evaluate [assumptions C, D] → Go/Pivot/Stop decision\n\n## Practical Examples\n\n### Example 1: ScRNA-Seq for Enteroendocrine Cells\n\n**High-Risk Assumptions Identified:**\n1. \"New cell types can be validated experimentally\" (Risk 5, 24 months)\n2. \"Knockout will yield biologically relevant phenotype\" (Risk 5, 30 months)\n\n**Problem:** Two risk-5 assumptions at 24+ months = RED FLAG\n\n**Mitigation Applied:**\n- Reframe to study known but poorly characterized cells (reduces Risk 5→3)\n- Switch to liver instead of intestine (improves validation timeline: 30→18 months)\n- Add spatial transcriptomics (provides earlier validation checkpoint at 16 months)\n\n### Example 2: Bacterial Therapy for Chronic Kidney Disease\n\n**High-Risk Assumption Identified:**\n\"Key uremic toxins leading to effects can be determined\" (Risk 4, unknown timeline)\n\n**Problem:** Critical assumption with unclear path to resolution\n\n**Mitigation Applied:**\n- Focus on known lead toxins (IS and PCS) rather than discovering new ones\n- Add parallel track: test multiple toxin candidates\n- Design study where learning toxin identity IS the outcome (multiple success paths)\n\n## Key Principles to Remember\n\n1. **Try to Convince Yourself You're Wrong:** The goal is critical evaluation, not confirmation bias.\n\n2. **Ignore Everything But Key Risk Points:** Don't get distracted by easy tasks. The high-risk assumptions aren't going away.\n\n3. **Early and Often:** Design go/no-go experiments at the earliest feasible moment.\n\n4. **Be Candid About Risk:** When presenting ideas, acknowledging risk makes your case MORE convincing, not less.\n\n5. **No Risk, No Interest:** The goal isn't zero risk—it's understood, quantified, manageable risk.\n\n6. **Risk Can Change:** Technical assumptions may improve as methods advance. Build this into your planning.\n\n7. **Compare Risk Profiles:** Evaluate multiple projects in parallel to compare risk profiles and make better choices.\n\n8. **Watch for the Ostrich Pattern:** Are you avoiding the scary experiment? That's human nature, but a critical failure mode.\n\n## Warning Signs\n\n**Warning signs include:**\n- Risk level 5 assumptions >2 years out\n- More than 3 assumptions at risk level 4-5\n- Highest-risk assumptions at the END of the timeline\n- Rationalizing why high-risk assumptions will \"probably work out\"\n- Planning to \"start with the easy stuff\" while avoiding risk tests\n- Inability to articulate clear go/no-go criteria\n\n**Good shape indicators:**\n- Highest-risk tests happen in first 6 months\n- Multiple paths to success exist\n- Clear plans for what to do if key assumptions fail\n- Risk is distributed across the timeline\n- Testing assumptions, not confirming hopes\n\n## Getting Started\n\nClaude should begin with Phase 1 by asking for:\n1. The project summary from Skill 1\n2. Project timeline expectations\n3. What concerns the user most about this project\n\nTogether, Claude and the user will build a rigorous risk assessment that dramatically improves the likelihood of success by helping avoid years of work on projects with insurmountable obstacles.\n\n---\n\n*Remember: Spending time on risk analysis is the most valuable investment a scientist can make. A well-understood risk profile enables moving forward with confidence or pivoting with clarity—both are valuable outcomes.*\n","bio-research/skills/scientific-problem-selection/references/03-optimization-function.md":"# SKILL 3: Optimization Function Selection\n\n## Overview\nThis skill helps scientists articulate HOW their project should be evaluated and define what success means. While Skill 2 focused on likelihood of success (the X-axis), this skill focuses on impact if successful (the Y-axis). The key insight: **value is in the eye of a belief system**—the value creation framework must be explicitly stated and led with.\n\n## Core Principle\n\n**\"Pick the right optimization function.\"**\n\nDifferent types of projects should be evaluated by different metrics. A common source of conflict between trainees and PIs, or authors and referees, is a misunderstanding about which category a project falls under. The root cause is often failure to articulate evaluation criteria clearly.\n\n## The Fundamental Truth\n\nThe default state of:\n1. Every new discovery is **irrelevance**\n2. Every new technology is **non-use**\n3. Every company is **death**\n\nScientists must actively work against these defaults by choosing the right metrics and scoring well on at least one axis.\n\n## The Skill Workflow\n\n### Phase 1: Project Categorization (5 minutes)\n\nFirst, Claude should determine what type of project the user is pursuing:\n\n**Question 1: What is the primary goal?**\nA. Understand how biology works (fundamental knowledge)\nB. Enable new experiments or capabilities (tool/technology)\nC. Solve a practical problem (invention/application)\nD. Something else (please describe)\n\n**Question 2: What would \"success\" look like in 3-5 years?**\n- 1-2 sentences describing the ideal outcome\n\n**Question 3: Who cares if this succeeds?**\n- Academic researchers in the subfield?\n- Broader scientific community across fields?\n- Clinicians or practitioners?\n- Industry partners or companies?\n- General public or specific communities?\n- All of the above?\n\nBased on the answers, Claude should help identify the right optimization function.\n\n### Phase 2: Understanding the Three Main Frameworks\n\n#### Framework 1: Basic Science\n**Axes:** How much did we learn? × How general/fundamental is the object of study?\n\n**Philosophy:** A high score on EITHER axis yields substantial impact. You don't need both.\n\n**Examples:**\n- **High Generality, Medium Learning:** Ribosome stalling complex\n  - Updates understanding of translation (fundamental process)\n  - Scores well because translation is universal\n  \n- **Medium Generality, High Learning:** Oxytricha germ-line nucleus\n  - Genomic acrobatics may not be common to other organisms\n  - BUT elegant mapping scores highly on how much we learned\n  - May yield tools for genome editing (bonus)\n  \n- **High on Both Axes (Landmark):** RNA interference, biomolecular condensates\n  - These are rare—don't expect every project to be here\n  - But aim to score well on at least one axis\n\n**Key Questions:**\n- How many systems/organisms does this apply to?\n- Does it update understanding of a fundamental process?\n- Will textbooks need to be rewritten?\n- What new questions does this open?\n\n#### Framework 2: Technology Development\n**Axes:** How widely will it be used? × How critical is it for the application?\n\n**Philosophy:** Again, high score on EITHER axis is sufficient.\n\n**Examples:**\n- **Widely Used, Not Critical:** BLAST\n  - Used in countless projects\n  - Rarely THE critical tool, but enormous cumulative impact\n  \n- **Not Widely Used, Highly Critical:** Cryo-electron tomography\n  - Too complicated for broad adoption\n  - But generates stunning data that's impossible to get otherwise\n  - When you need it, nothing else works\n  \n- **High on Both Axes (Game-Changing):** \n  - GFP, CRISPR, AlphaFold (the famous ones)\n  - But also: lentiviral delivery, cell sorting, massively parallel sequencing\n  - Technologies we cannot imagine living without\n\n**Key Questions:**\n- How many labs would adopt this?\n- For what fraction of experiments is this THE enabling technology?\n- What becomes possible that wasn't before?\n- How hard is it to implement?\n\n**Critical Rule:** A tool that won't be widely used AND isn't critical for an application probably isn't worth building.\n\n#### Framework 3: Typical Invention/Application\n**Axes:** How much good? × For how many people?\n\n**Philosophy:** Useful for translational work, frugal science, global health.\n\n**Examples:**\n- Foldscope: Paper microscope accessible to millions of students globally\n- Neglected tropical disease intervention: Quality-adjusted life years per $100\n- Medical device: Number of patients who can access treatment\n\n**Key Questions:**\n- What problem does this solve?\n- How many people have this problem?\n- How much better is their life if you solve it?\n- What's the cost per person helped?\n\n### Phase 3: Selecting and Articulating Your Framework\n\nBased on your Phase 1 responses, let me help you choose:\n\n**If you selected A (fundamental knowledge):** → Basic Science Framework\n**If you selected B (enable experiments):** → Technology Development Framework  \n**If you selected C (solve practical problem):** → Invention Framework\n\n**Now, let's be explicit:**\n\n1. **State Your Framework:** \"This project should be evaluated as [basic science/technology development/invention].\"\n\n2. **Define Your Axes:** \n   - X-axis measures: [specific metric]\n   - Y-axis measures: [specific metric]\n\n3. **Make Your Case:**\n   - X-axis score (Low/Medium/High): [Your assessment + reasoning]\n   - Y-axis score (Low/Medium/High): [Your assessment + reasoning]\n\n4. **Threshold Check:** \n   - Do you score at least MEDIUM-HIGH on one axis?\n   - If both are LOW-MEDIUM, you have a problem\n\n### Phase 4: Alternative or Custom Metrics\n\nSometimes standard frameworks don't fit. Examples where custom metrics work:\n\n**Alternative Metric Examples:**\n- **Frugal Science:** How many children in low/middle-income countries gain access to microscopy?\n- **Neglected Disease:** Quality-adjusted life years saved per $100 invested\n- **Sustainability:** Tons of CO₂ equivalent prevented × cost-effectiveness\n- **Equity:** Reduction in disparity metric × number of people affected\n\n**When to propose alternative metrics:**\n- Your work addresses a specific underserved need\n- Standard metrics miss your core value proposition\n- You're working in an emerging area without established norms\n- Your work crosses traditional boundaries\n\n**How to propose alternative metrics:**\n1. Explain why standard metrics are insufficient\n2. Define your proposed metric clearly\n3. Provide a value creation index (two axes)\n4. Show how your project scores on these axes\n\n### Phase 5: Comparative Assessment\n\nEven if absolute impact is hard to estimate, comparative assessment is valuable:\n\n**Exercise: Compare 3 Related Projects**\n\nFor your project and two alternatives (either from literature or hypothetical):\n\n| Project | Framework | X-Axis Score | Y-Axis Score | Overall |\n|---------|-----------|--------------|--------------|---------|\n| Yours | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 1 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 2 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n\n**Comparative Questions:**\n- Which would be most impactful if they all work?\n- Which has the best risk-adjusted impact?\n- Are you pursuing the best option?\n- If not, why? (Sometimes there are good reasons: resources, expertise, timing)\n\n### Phase 6: Avoiding Metric Mismatch\n\n**Common Mismatches:**\n\n#### Mismatch 1: Basic Science vs. Technology Evaluation\n**Scenario:** You're doing fundamental biology, but reviewers ask \"How widely will this be used?\"\n\n**Problem:** They're evaluating basic science with technology metrics\n\n**Solution:** Explicitly frame as basic science. Lead with: \"This updates our understanding of [fundamental process], which is conserved across [many systems].\"\n\n#### Mismatch 2: Technology vs. Basic Science Evaluation\n**Scenario:** You're building a tool, but reviewers ask \"How much did we learn about biology?\"\n\n**Problem:** They're evaluating technology with basic science metrics\n\n**Solution:** Explicitly frame as technology development. Lead with: \"This enables experiments that are currently impossible, which [X] labs need for [Y] applications.\"\n\n#### Mismatch 3: Within-Category Confusion\n**Scenario:** Your basic science is specific but deep, but reviewers want broad generality\n\n**Problem:** They think both axes are required, rather than either/or\n\n**Solution:** Explicitly acknowledge: \"While this may not be universal, the depth of mechanistic insight scores highly on the learning axis.\"\n\n#### Mismatch 4: Time Horizon Mismatch\n**Scenario:** You're working on long-term fundamental research, but reviewers want immediate impact\n\n**Problem:** Different value systems about when impact should materialize\n\n**Solution:** Articulate your time horizon explicitly and provide historical examples of similar timelines\n\n### Phase 7: Value System Discussion\n\nThis is where Claude explicitly discusses the user's belief system about what matters:\n\n**Questions for Reflection:**\n\n1. **What drives the user?**\n   - Discovery and understanding?\n   - Enabling others?\n   - Solving problems?\n   - Building things?\n\n2. **What would make the user proud?**\n   - Paper in Cell/Nature/Science?\n   - Tool used by hundreds of labs?\n   - Treatment reaching patients?\n   - Opening a new field?\n\n3. **How does the user want to be remembered?**\n   - \"Discovered X\"\n   - \"Built Y that enabled Z\"\n   - \"Solved problem W\"\n   - \"Trained students who went on to...\"\n\n4. **Whose approval matters?**\n   - Specific senior scientists in the field?\n   - Broader community across fields?\n   - Practitioners who use tools?\n   - People whose lives are improved?\n\n**There are no wrong answers—but alignment matters:**\n- The project should match the user's value system\n- The evaluation framework should match the project type\n- Communication should lead with the framework\n\n### Phase 8: Literature Benchmarking\n\nClaude should use PubMed to benchmark impact in the user's area:\n\n**Searches should include:**\n\n1. **Impact Exemplars:** Papers the user considers high-impact in the field\n   - What framework did they use (implicitly or explicitly)?\n   - How did they score on the axes?\n   - What made them successful?\n\n2. **Analogous Projects:** Similar approaches or systems\n   - How were they evaluated?\n   - What impact did they achieve?\n   - What can be learned from their framing?\n\n3. **Field Expectations:** What's typical for the area?\n   - Are basic science papers common?\n   - Is technology development valued?\n   - What level of impact is \"good enough\"?\n\n**Questions to ask the user:**\n- What papers should be analyzed as benchmarks?\n- What search terms capture the field's impact exemplars?\n- Are there specific journals or authors whose framing to emulate?\n\n### Phase 9: Communication Strategy\n\nOnce the framework is selected, here's how to lead with it:\n\n#### In Talks:\n**Opening Frame (within first 2 slides):**\n- \"The goal of this work is to understand [fundamental process X] in [general system Y]\" → Basic science\n- \"We're developing a technology that will enable [critical experiment X] for [community Y]\" → Technology\n- \"This invention addresses [problem X] affecting [N] people\" → Application\n\n#### In Papers:\n**Abstract Structure:**\n- State your framework implicitly through word choice\n- Basic science: \"reveals,\" \"demonstrates,\" \"shows that\"\n- Technology: \"enables,\" \"provides,\" \"makes it possible to\"\n- Application: \"solves,\" \"addresses,\" \"improves\"\n\n#### In Grants:\n**Broader Impact Section:**\n- Explicitly name your evaluation framework\n- Provide the two-axis assessment\n- Score yourself on each axis with evidence\n\n#### With Your PI/Committee:\n**Alignment Conversation:**\n- \"I want to make sure we're aligned on how this should be evaluated\"\n- \"I see this as [framework], scoring [X] on [axis 1] and [Y] on [axis 2]\"\n- \"Do you agree, or do you see it differently?\"\n- \"This matters because...\" [explain downstream implications]\n\n## Output Deliverable\n\nClaude should produce a **2-page Impact Assessment Document**:\n\n### Page 1: Framework and Scoring\n\n#### Project Categorization:\n- **Type:** Basic Science / Technology Development / Invention / Custom\n- **Rationale:** [Why this categorization fits]\n\n#### Optimization Function:\n- **X-Axis:** [Metric name and definition]\n- **Y-Axis:** [Metric name and definition]\n- **Custom Rationale (if applicable):** [Why standard metrics don't fit]\n\n#### Self-Assessment:\n\n**X-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Y-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Overall Assessment:**\n- Score on at least one axis: ☑ Yes / ☐ No\n- Strong justification: ☑ Yes / ☐ No\n- Aligned with your values: ☑ Yes / ☐ No\n\n#### Visual Framework:\n```\n         [Your Project Type]\n              \nY-Axis    |           ★ Your Project\n[Metric]  |         /\n          |       /\n          |     /\n          |   /\n          |_________________\n              X-Axis [Metric]\n              \n★ = Your project\nReference projects plotted for context\n```\n\n### Page 2: Communication and Alignment\n\n#### Value System Alignment:\n- **What Drives You:** [Discovery/Enabling/Problem-solving/Building]\n- **Success Definition:** [What would make this worthwhile]\n- **Approval Sources:** [Whose opinion matters and why]\n- **Framework Fit:** [How project aligns with values]\n\n#### Potential Mismatches to Avoid:\n1. [Specific mismatch type]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n2. [Another mismatch]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n#### Communication Strategy:\n\n**For Talks:**\n- Opening frame: [Exact language to use in first 2 slides]\n- Key phrases: [Vocabulary that signals your framework]\n\n**For Papers:**\n- Abstract structure: [Framework-appropriate language]\n- Impact statement: [How to articulate in discussion]\n\n**For Grants:**\n- Broader impact: [How to score yourself explicitly]\n- Justification: [Evidence for scores]\n\n**For Mentors:**\n- Alignment question: [Exact question to ask]\n- Your perspective: [How you see it]\n- Discussion points: [What matters for alignment]\n\n#### Comparative Analysis:\n\n| Project | Type | X-Score | Y-Score | Notes |\n|---------|------|---------|---------|-------|\n| Yours | [Type] | [L/M/H] | [L/M/H] | [Key strengths] |\n| Benchmark 1 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Benchmark 2 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Alternative | [Type] | [L/M/H] | [L/M/H] | [Why not pursuing] |\n\n#### Action Items:\n1. [Specific step to strengthen X-axis score or argument]\n2. [Specific step to strengthen Y-axis score or argument]\n3. [Communication alignment with key stakeholders]\n\n## Practical Examples\n\n### Example 1: Ribosome Stalling (Basic Science)\n- **Framework:** Basic science\n- **X-Axis (Generality):** HIGH—translation is universal\n- **Y-Axis (Learning):** MEDIUM—mechanism of one quality control system\n- **Assessment:** High on generality alone = substantial impact\n- **Communication:** \"Updates our understanding of translation quality control\"\n\n### Example 2: BLAST (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** VERY HIGH—used by virtually all molecular biologists\n- **Y-Axis (Critical):** LOW-MEDIUM—helpful but rarely essential\n- **Assessment:** Extreme breadth of use = enormous cumulative impact\n- **Communication:** \"Enables rapid sequence comparison across all biological databases\"\n\n### Example 3: Cryo-EM Tomography (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** LOW—complex, expensive, specialized\n- **Y-Axis (Critical):** VERY HIGH—generates impossible-to-get-otherwise data\n- **Assessment:** Extreme criticality for niche = high impact\n- **Communication:** \"Enables 3D visualization of molecular machines in native cellular context\"\n\n### Example 4: Foldscope (Invention)\n- **Framework:** Invention (custom metric)\n- **X-Axis (Good):** MEDIUM—functional microscopy\n- **Y-Axis (People):** VERY HIGH—millions of students globally\n- **Assessment:** Massive reach × modest utility = transformative for education\n- **Communication:** \"Democratizes microscopy for global education\"\n\n## Key Principles to Remember\n\n1. **Value Is in the Eye of a Belief System:** Make yours explicit.\n\n2. **Lead with Your Metric:** Don't assume others share your framework.\n\n3. **Either Axis Suffices:** You don't need both—just score well on one.\n\n4. **Articulate Early:** Discuss with mentors before you're 2 years in.\n\n5. **Avoid Default State:** Work actively against irrelevance/non-use.\n\n6. **Compare, Don't Absolute:** Even rough comparison beats ignoring impact.\n\n7. **Align Communication:** Your words should signal your framework.\n\n8. **Match Project to Values:** Life is too short for misaligned work.\n\n## Warning Signs\n\n**Warning signs include:**\n- Inability to articulate which framework applies\n- Scoring LOW on both axes\n- Project type and evaluation framework don't match\n- User and PI have different frameworks but haven't discussed it\n- Using basic science metrics for a tool or vice versa\n- Never explicitly discussing impact assessment\n\n**Good shape indicators:**\n- Clear statement of optimization function\n- MEDIUM-HIGH score on at least one axis\n- Framework matches project type\n- Alignment with key stakeholders\n- Communication signals framework clearly\n- Benchmarking against comparable work\n\n## Getting Started\n\nClaude should begin Phase 1 by asking:\n1. What is the primary goal? (A/B/C/D)\n2. What would success look like in 3-5 years?\n3. Who cares if this succeeds?\n\nTogether, Claude and the user will select the right optimization function and position the work for maximum impact.\n\n---\n\n*Remember: Impact assessment isn't about ego—it's about ensuring work matters in the way the scientist wants it to matter. Explicit framing prevents years of misalignment.*\n","bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md":"# SKILL 4: Parameter Fixation Strategy\n\n## Overview\nThis skill helps scientists strategically decide which parameters to fix and which to keep flexible in their project. The paradox: too many fixed parameters creates brittleness, but too few causes paralysis. The key is fixing ONE parameter thoughtfully and letting others float—constraints engender creativity.\n\n## Core Principle\n\n**\"Fix one parameter; let the others float.\"**\n\nMost failure modes in ideation involve fixing too many parameters at the outset (system + method + application). Conversely, statements like \"I want to do impactful work in cell engineering\" are so broad they cause paralysis. The sweet spot: fix one meaningful constraint and let creativity flow within that boundary.\n\n## What Are Project Parameters?\n\nParameters are the choices that define your project:\n\n**Common Parameters:**\n- **System:** Which organism/cell type/tissue/molecule?\n- **Question:** What biological phenomenon to study?\n- **Tool/Method:** Which experimental approach?\n- **Application:** What practical use or goal?\n- **Output:** What form will results take?\n- **Collaborators:** Who will you work with?\n- **Timeline:** How fast must you move?\n- **Resources:** What's available/necessary?\n\n## The Skill Workflow\n\n### Phase 1: Parameter Inventory (10 minutes)\n\nFirst, let's identify what's already fixed in your current project idea:\n\n**Question 1: List your project parameters**\n\nFor each category, indicate if it's **FIXED** (must stay) or **FLOATING** (could change):\n\n| Parameter Type | Your Choice | Status (F/FL) | Why Fixed? |\n|----------------|-------------|---------------|------------|\n| **System** | [organism/cell/tissue] | F / FL | [reason] |\n| **Question** | [biological phenomenon] | F / FL | [reason] |\n| **Tool/Method** | [techniques] | F / FL | [reason] |\n| **Application** | [use case/goal] | F / FL | [reason] |\n| **Timeline** | [duration] | F / FL | [reason] |\n| **Resources** | [equipment/funding] | F / FL | [reason] |\n\n**Question 2: Count your fixed parameters**\n- How many did you mark as FIXED? _____\n- If >2, you may have over-constrained the problem\n\n**Question 3: Why are they fixed?**\nFor each fixed parameter, is it because:\nA. Your expertise/passion\nB. Lab resources/capabilities  \nC. Advisor requirements\nD. You think it's the \"best\" solution\nE. Historical accident (you started this way)\n\n### Phase 2: The GLP-1 Example (Case Study)\n\nLet's learn from a concrete example:\n\n**Proposed Project:** Engineer a T cell to produce GLP-1 (glucagon-like peptide-1) for continuous supply.\n\n**Analysis: What's Fixed?**\n1. Improving GLP-1 receptor agonist delivery characteristics (the problem)\n2. Using an engineered T cell (the solution)\n\n**Problem:** Two parameters fixed = poor technique-application match\n\n**Alternative Framings:**\n\n**If you fix Parameter 1 (GLP-1 delivery):**\n- Let the solution float\n- Better options: peptide engineering for extended half-life, oral peptides, small molecules, B cells (better protein secretion)\n- Why T cell is suboptimal: Not designed for protein secretion\n- **Best for:** Trainee in metabolism lab who cares about GLP-1\n\n**If you fix Parameter 2 (Engineered T cell):**\n- Let the application float\n- Better options: local-acting peptides (cytokines, chemokines, growth factors) for oncology/autoimmunity/regeneration\n- Why GLP-1 is suboptimal: Doesn't leverage T cell's natural capabilities\n- **Best for:** Trainee in immunology/cell engineering lab\n\n**Key Insight:** Which parameter you fix depends on YOUR interests and your lab's expertise. Both can lead to great projects, but they're DIFFERENT projects.\n\n### Phase 3: Diagnostic Questions\n\n**The Goldilocks Test:**\n\n**Too Many Fixed Parameters (>2):**\n- Are you forcing a technique-application match?\n- If one assumption fails, does everything fail?\n- Are you more attached to HOW than WHAT?\n- Does your project sound like: \"Use X to do Y in Z\"?\n\n**Too Few Fixed Parameters (0-1 very broad):**\n- Do you feel paralyzed where to start?\n- Is your statement super generic? (\"Do impactful work in...\")\n- Are you avoiding commitment?\n- Do you have decision fatigue?\n\n**Just Right (1-2 well-chosen):**\n- Do you have creative constraints?\n- Can you articulate why THIS constraint matters?\n- If one approach fails, do alternatives exist?\n- Does the constraint energize you?\n\n### Phase 4: The Illumina Example (Constraints Drive Innovation)\n\n**Historical Context:** Next-generation sequencing wasn't designed; we got Illumina's approach (many short reads).\n\n**Initial Constraint:** Short reads seemed like a limitation\n- Not what we would have \"asked for\"\n- Seemed inferior to long reads\n\n**Innovation Unleashed:**\n- Computational methods (assembly algorithms)\n- Novel applications (RNA-seq, ChIP-seq, ATAC-seq)\n- Unexpected uses (protein folding via sequencing)\n- Biochemical creativity to work within constraints\n\n**Lesson:** Constraints don't limit creativity—they focus it. If you feel stuck, fix ONE parameter and watch resourcefulness emerge.\n\n### Phase 5: Which Parameter Should You Fix?\n\n**Strategic Questions to Identify the Right Fixed Parameter:**\n\n1. **What can you prototype quickly?**\n   - What test article could you build rapidly?\n   - Which experimental conditions enable early go/no-go?\n   - What gives you fastest feedback?\n\n2. **What are people around you unusually good at?**\n   - Lab expertise?\n   - Core facility capabilities?\n   - Collaborator strengths?\n   - Your unique skill combination?\n\n3. **What do you enjoy so much you don't think of it as work?**\n   - System you're passionate about?\n   - Technique you love?\n   - Type of question that excites you?\n\n4. **What's your competitive advantage?**\n   - Unique resource access?\n   - Rare skill combination?\n   - Proprietary data/reagents?\n   - First-mover opportunity?\n\n**Common Strategic Choices:**\n\n**Fix the System (Let question & tool float):**\n- Good if: You're an expert in the organism/tissue/cell type\n- Enables: Asking multiple questions, trying various tools\n- Example: \"I study *Drosophila* neural development; I'll let the specific questions and methods emerge\"\n\n**Fix the Question (Let system & tool float):**\n- Good if: You care deeply about a biological phenomenon\n- Enables: Testing across systems, using best tool for each\n- Example: \"I want to understand phase separation; I'll study it wherever it's clearest\"\n\n**Fix the Tool (Let system & question float):**\n- Good if: You're developing or mastering a technology\n- Enables: Finding best applications, comparing across systems\n- Example: \"I'm building a new microscopy method; I'll find the most impactful uses\"\n\n**Fix the Application (Let system & tool float):**\n- Good if: You have a specific translational goal\n- Enables: Trying multiple approaches, testing in different models\n- Example: \"I want to treat disease X; I'm open to any validated approach\"\n\n### Phase 6: Parameter Flexibility Matrix\n\nFor your project, let's create a flexibility assessment:\n\n| Parameter | Currently | Should Be? | If Problem Arises, Could This Float? |\n|-----------|-----------|------------|--------------------------------------|\n| System | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Question | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Tool | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Application | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Timeline | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Resources | [F/FL] | [F/FL] | Yes / No / Maybe |\n\n**Analysis:**\n- **Flexibility Score:** How many \"Yes\" or \"Maybe\"? _____\n- **Risk Assessment:** If <3 can float, you're brittle\n- **Pivot Potential:** Which parameters provide escape routes?\n\n### Phase 7: Scenario Planning\n\nFor each fixed parameter, let's plan what happens if it becomes untenable:\n\n**Fixed Parameter 1: [Name it]**\n- **Why it's fixed:** [Your reason]\n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n**Fixed Parameter 2: [Name it]**\n- **Why it's fixed:** [Your reason]  \n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n### Phase 8: The Unfixing Exercise\n\nSometimes you need to unfix parameters to escape a rut:\n\n**Current State:** [Describe your over-constrained project]\n\n**Unfixing Experiment:**\n\n**Try 1: Unfix the System**\n- Keep question & tool\n- What other systems could you study?\n- Which would be easier/faster/more informative?\n\n**Try 2: Unfix the Tool**\n- Keep system & question\n- What other methods exist?\n- Which are more mature/accessible/powerful?\n\n**Try 3: Unfix the Question**\n- Keep system & tool\n- What other questions could you ask?\n- Which would be more impactful/feasible?\n\n**Evaluation:** Does any \"unfixed\" version seem better than your original? If yes, you over-constrained.\n\n### Phase 9: Literature Reality Check\n\nLet's use PubMed to see how others handled parameter fixation:\n\n**Search 1: Successful projects in your area**\n- What did they fix?\n- What did they let float?\n- Did they pivot from their initial parameter choices?\n\n**Search 2: Failed or stalled projects**\n- (Often in discussion sections or preprints)\n- Did they over-constrain?\n- What parameters trapped them?\n\n**Search 3: Method papers**\n- How did technology developers choose applications?\n- Did they fix the tool and let applications emerge?\n\n**Your Searches:**\nWhat specific papers should we analyze for parameter lessons?\n\n## Output Deliverable\n\n**2-Page Parameter Strategy Document**\n\n### Page 1: Current State and Analysis\n\n#### Parameter Inventory:\n| Parameter | Current Status | Strategic Rationale | Flexibility |\n|-----------|----------------|---------------------|-------------|\n| System | Fixed: [X] | [Why] | Can float if: [condition] |\n| Question | Floating: [Y,Z] | [Why] | Constrained by: [X] |\n| Tool | [Status] | [Why] | [Contingency] |\n| Application | [Status] | [Why] | [Contingency] |\n\n#### Diagnostic Summary:\n- **Fixed Parameters:** [Count and list]\n- **Assessment:** ☐ Too Many (>2) / ☐ Just Right (1-2) / ☐ Too Few (0, too broad)\n- **Primary Fixed Parameter:** [The one that matters most]\n- **Reason for Fixation:** [Expertise/Passion/Resources/Other]\n\n#### Goldilocks Test Results:\n- Over-constrained indicators: [Yes/No to each test]\n- Under-constrained indicators: [Yes/No to each test]\n- Verdict: [Analysis]\n\n### Page 2: Strategy and Contingencies\n\n#### Recommended Parameter Strategy:\n\n**Core Fixed Parameter:** [The one to keep]\n- **Rationale:** [Why this one]\n- **Your advantage:** [Expertise/access/passion]\n- **Enables:** [What becomes possible]\n\n**Parameters That Should Float:** [List]\n- [Parameter 1]: [How to explore alternatives]\n- [Parameter 2]: [How to explore alternatives]\n\n#### If Core Assumptions Fail:\n\n**Scenario 1: [Specific failure mode]**\n- **Unfix:** [Which parameter to let float]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n**Scenario 2: [Another failure mode]**\n- **Unfix:** [Which parameter]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n#### Project Ensemble:\n```\nCore Fixed: [X]\n\nPossible Projects:\n1. [X] + [A] + [B1] → [Outcome]\n2. [X] + [A] + [B2] → [Outcome]\n3. [X] + [C] + [B1] → [Outcome]\n\nAll share [X], but float other parameters\n```\n\n#### Strategic Questions Answered:\n1. **Quick prototype:** [How to test quickly]\n2. **Team strengths:** [Who's good at what]\n3. **Your passion:** [What energizes you]\n4. **Competitive advantage:** [Your edge]\n\n#### Historical Parallel:\n[Example like Illumina where constraints drove innovation in your field]\n- The constraint: [What seemed limiting]\n- The innovation: [How people worked within it]\n- Your application: [How this applies to your project]\n\n## Practical Examples\n\n### Example 1: GLP-1 T Cell Project (Over-Constrained)\n- **Fixed:** GLP-1 delivery + T cell engineering\n- **Problem:** Poor technique-application match\n- **Solution:** Unfix one parameter\n  - Fix delivery, float cell type → Better options emerge\n  - Fix T cell, float payload → Better applications emerge\n\n### Example 2: Drosophila Neurobiologist (Well-Constrained)\n- **Fixed:** *Drosophila* nervous system\n- **Floating:** Specific questions, methods\n- **Works because:** Deep system expertise, many tools available\n- **Enables:** Pursuing most impactful questions as field evolves\n\n### Example 3: \"Impactful Cell Engineering\" (Under-Constrained)\n- **Fixed:** Nothing specific\n- **Problem:** Paralysis from too many options\n- **Solution:** Fix one meaningful constraint\n  - Option A: Fix CAR-T platform → Find best applications\n  - Option B: Fix autoimmune disease → Find best cell engineering approach\n  - Option C: Fix specific rare disease → Let methods emerge\n\n## Key Principles to Remember\n\n1. **Constraints Engender Creativity:** Limitations focus resourcefulness\n\n2. **One Parameter Rule:** Fix one meaningful constraint, let others float\n\n3. **Match to Your Strengths:** Fix the parameter you have advantage in\n\n4. **Technique-Application Match:** Don't force tools into wrong problems\n\n5. **Flexibility = Resilience:** Floating parameters provide pivot options\n\n6. **Historical Lesson:** Best technologies emerged from working within constraints (Illumina)\n\n7. **Not Forever:** Parameters can unfix mid-project when stuck\n\n## Warning Signs\n\n**Over-Constrained (Too Many Fixed):**\n- Project sounds like: \"Use X to study Y in Z\"\n- When one assumption fails, everything fails\n- You're attached to HOW more than WHAT\n- Forcing a technique-application match\n\n**Under-Constrained (Too Few/Vague):**\n- Statement is incredibly broad (\"impactful work in...\")\n- Feeling paralyzed about where to start\n- Avoiding commitment due to infinite options\n- No clear next experimental step\n\n**Well-Constrained:**\n- One clear fixed parameter with good rationale\n- Multiple paths within that constraint\n- Energized by the focused challenge\n- If one approach fails, alternatives exist\n\n## Ready to Begin?\n\nLet's start with Phase 1. Please provide:\n1. Your current project description\n2. List of what you think is fixed vs. floating\n3. Your lab's core expertise\n4. What aspect excites you most\n\nTogether we'll optimize your parameter strategy for maximum creativity and resilience.\n\n---\n\n*Remember: The right constraint is liberating, not limiting. It channels creativity into productive directions while maintaining flexibility for pivots.*\n","bio-research/skills/scientific-problem-selection/references/05-decision-tree.md":"# SKILL 5: Decision Tree Navigation (\"The Altitude Dance\")\n\n## Overview\nThis skill teaches you to move fluidly between execution (Level 1: getting stuff done) and strategic evaluation (Level 2: critical thinking). Projects rarely unfold linearly—they require frequent course correction. Most trainees should spend MORE time on their project's decision tree.\n\n## Core Principle\n**\"Learn the altitude dance\"**\n\nMove back and forth frequently between:\n- **Level 1:** Full immersion in experimental details or coding\n- **Level 2:** Step back, clear your head, evaluate as if someone else did the work\n\nThese cannot be done simultaneously. The key to navigating a project's decision tree is alternating between these levels deliberately.\n\n## Key Concepts\n\n**Why Decision Trees Matter:**\nOnce you're in a project, the landscape changes:\n- You've learned from initial experiments\n- New papers have been published\n- Technology has advanced\n- Your assumptions have been tested\n\nAt any decision point, you should rarely follow your plan from 2 years ago—there will be a better alternative.\n\n**The Altitude Levels:**\n- **Level 1 (Ground Level):** Doing the work, troubleshooting, optimizing\n- **Level 2 (Strategic Altitude):** What did we learn? What should we do next?\n- **Level 3 (Field Altitude):** How does this fit in the broader landscape?\n- **Level 4 (Career Altitude):** Is this the right use of my finite time?\n\n**Common Failure Modes:**\n1. **Stuck in Level 1:** Troubleshooting endlessly without reassessing the plan\n2. **Only Level 2:** Brilliant strategist but never rolls up sleeves\n3. **No rhythm:** Switching randomly instead of deliberately\n\n## Workflow\n\n### Phase 1: Map Your Decision Tree\n\nFor your project, identify:\n1. **Initial plan:** What was the intended path?\n2. **Branch points:** Where might alternative paths emerge?\n3. **Decision criteria:** What determines which branch to take?\n4. **New information:** What could change the landscape?\n\n### Phase 2: Establish Your Rhythm\n\n**Recommended Schedule:**\n- **Daily:** Level 1 work (experiments, coding, analysis)\n- **Weekly:** Level 2 evaluation (1-2 hours, ideally Friday afternoon)\n- **Monthly:** Level 3 field review (read new papers, attend seminars)\n- **Quarterly:** Level 4 career check-in (with mentor)\n\n**Level 2 Weekly Protocol:**\n1. Clear your head (walk, coffee, change of scene)\n2. Review what happened this week\n3. Ask: What did we learn?\n4. Ask: What should happen next?\n5. Update decision tree\n6. Plan next week's Level 1 work\n\n### Phase 3: Decision Points\n\nAt each major branch point:\n\n**Example: Genetic Screen Hits Wall**\n\nInstead of endless troubleshooting:\n- **Alternative 1:** Redo computational analysis with larger genome dataset\n- **Alternative 2:** Use AlphaFold models to search for similar folds\n- **Alternative 3:** Print and test larger candidate set (DNA synthesis cheaper now)\n\n**Framework:**\n1. **Acknowledge the stuck point**\n2. **Step to Level 2:** Evaluate with fresh eyes\n3. **Consider: What's newly possible?** (technology, knowledge)\n4. **Generate 3 alternatives**\n5. **Decide:** Troubleshoot more vs. pursue alternative\n\n## Output: Decision Tree Map\n- Visual map of your project's decision points\n- Update frequency schedule\n- Criteria for each branch point\n- Protocol for getting unstuck\n","bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md":"# SKILL 6: Adversity Response Planning (\"The Adversity Feature\")\n\n## Overview\nThis skill helps you prepare for inevitable crises and reframe them as opportunities. The term \"adversity feature\" (like a \"rock garden\" on a mountain bike trail) captures the mindset: adversity is not an obstacle—it's an opportunity to develop skill and improve your project.\n\n## Core Principle\n**\"Capitalize on the 'adversity feature'\"**\n\nAdversity in a project is inevitable AND opportune:\n- **Inevitable:** Almost every project suffers existential crisis or sharp turn\n- **Opportune:** Two valuable outcomes possible:\n  1. Fix the problem AND upgrade the project simultaneously\n  2. Develop reasoning-your-way-out skills (best growth opportunity)\n\n## Key Concepts\n\n**Why Adversity Is Inevitable:**\n- Technology doesn't work as advertised\n- Biological assumptions prove false\n- You get scooped\n- Key collaborator leaves\n- Funding runs out\n- Results don't support hypothesis\n\n**Why Adversity Is Opportune:**\n- Forces you to think deeply about alternatives\n- Removes sunk-cost bias (path is blocked anyway)\n- Often leads to better projects than original plan\n- Develops critical problem-solving skills\n- Makes you resourceful\n\n**The Crisis Mindset:**\n- **Wrong:** \"This is a disaster that delays me\"\n- **Right:** \"This is the crisis I've been waiting for—don't waste it\"\n\n## Workflow\n\n### Phase 1: Anticipate Failure Modes\n\nFor your project, list likely adversity scenarios:\n1. **Technical failures:** Method doesn't work, signal too low, etc.\n2. **Biological surprises:** System behaves unexpectedly\n3. **Competition:** Someone scoops you\n4. **Resource issues:** Funding, equipment, access\n5. **Timeline pressures:** Takes longer than expected\n\nFor each, rate:\n- Likelihood (Low/Medium/High)\n- Impact if it happens (Low/Medium/High)\n- When it might surface (early/mid/late)\n\n### Phase 2: Upgrade Opportunities\n\nFor each high-likelihood or high-impact failure mode:\n\n**Question 1: How could you fix this AND make the project better?**\nNot just: \"Get it working\"\nInstead: \"Use this as opportunity to improve the approach\"\n\n**Example: Your Cell Type Can't Be Isolated**\n- Fix: Develop new isolation method\n- Upgrade: Make method work for whole class of cell types\n- Result: Better project (technology paper) + original biology\n\n**Question 2: What skill would you develop by solving this?**\n- Computational: Learn new analysis method\n- Technical: Master challenging technique\n- Conceptual: Reason through biological complexity\n\n### Phase 3: The Ensemble View\n\n**Critical Insight:** You're not picking ONE project path—you're picking an ENSEMBLE of possible projects that share core elements.\n\n**Your Project Ensemble:**\n```\nCore Theme: [What stays constant]\n\nPath 1: [Original plan]\nPath 2: [If assumption A fails]\nPath 3: [If technical barrier B encountered]\nPath 4: [If scooped on C]\n\nAll paths lead to impactful results, just different ones\n```\n\nThis reframing is liberating: when adversity strikes, you're not failing—you're discovering which path in the ensemble you're actually on.\n\n### Phase 4: Historical Examples\n\n**Example 1: PROTAC Discovery**\n- **Original Plan:** Create molecules to degrade specific kinase\n- **Crisis:** Didn't work for intended target\n- **Upgrade:** Test across kinome systematically\n- **Result:** Better project (mapped degradable kinome, discovered that target engagement ≠ degradation)\n- **Impact:** More influential than if original plan succeeded\n\n**Example 2: Steroid Receptor Study**\n- **Original Plan:** Identify THE receptor for a steroid\n- **Crisis:** Binds multiple receptors at different affinities\n- **Upgrade:** Reframe question: How does finite receptor pool sense infinite lipids?\n- **Result:** Combinatorial sensing model (like piano chords)\n- **Impact:** More interesting than \"receptor X binds steroid Y\"\n\n## Output: Adversity Playbook\n\n**Page 1: Anticipated Crises**\n| Crisis | Likelihood | Impact | Timeline | Growth Opportunity |\n|--------|-----------|--------|----------|-------------------|\n| [Crisis 1] | H/M/L | H/M/L | Early/Mid/Late | [Skill developed] |\n\n**Page 2: Upgrade Strategies**\nFor each high-priority crisis:\n- **The Crisis:** [Description]\n- **Fix Strategy:** [How to solve it]\n- **Upgrade Strategy:** [How to make project better while fixing]\n- **Alternative Path:** [New direction if fix doesn't work]\n- **Ensemble Position:** [How this fits in project family]\n\n**Page 3: Resilience Rituals**\n- **Weekly check-in:** Review what went wrong, what was learned\n- **Monthly ensemble review:** Update the family of possible projects\n- **Crisis protocol:** When major setback hits, take 2 days to think before acting\n- **Growth tracking:** Document skills developed through adversity\n","bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md":"# SKILL 7: Problem Inversion Strategies (\"Turn It On Its Head\")\n\n## Overview\nThis skill provides three concrete strategies for navigating around obstacles by reframing problems. When stuck, instead of pushing harder on the current approach, try inverting the problem.\n\n## Core Principle\n**\"Turn a problem on its head\"**\n\nThree powerful strategies:\n1. **Unfix parameters** (covered in Skill 4, applied here in crisis)\n2. **Don't achieve goal A? Achieve comparable goal B**\n3. **\"I have the answer; what is the question?\"**\n\n## Strategy 1: Unfix Parameters (In Crisis Mode)\n\n**When to Use:** Run-of-the-mill issues in project execution\n\n**Approach:** Let a \"sacred\" fixed parameter float\n\n**Example from Lecture:**\n- **Stuck:** Spatial transcriptomics of APC-T cell interactions in tumor microenvironment\n- **All fixed:** Technique, cell types, context\n- **Inversion:**\n  - Unfix technique → What else could measure these interactions?\n  - Unfix cell types → What other interactions matter in tumors?\n  - Unfix context → Where else do APC-T interactions matter?\n\n**Your Application:**\nFor each fixed parameter in your project:\n- What if this floated?\n- What alternatives exist?\n- Which would be easier/faster/more informative?\n\n## Strategy 2: Comparable Goal Substitution\n\n**When to Use:** Existential threats to project (can't achieve original goal)\n\n**Approach:** Achieve a different but equally valuable goal\n\n**Mindset Shift:**\n- **Wrong:** \"I failed to do X\"\n- **Right:** \"The world needs Y instead, which I CAN do\"\n\n**Example from Lectures: PROTAC Story**\n- **Goal A (Failed):** Degrade specific therapeutic target\n- **Goal B (Achieved):** Map which kinases ARE degradable\n- **Value:** B is more impactful (general principle + method validation)\n- **Learning:** Target engagement ≠ degradation (important discovery)\n\n**Framework:**\n1. **Original goal:** [What you wanted]\n2. **Why it failed:** [Specific reason]\n3. **What CAN you do with current data/tools:** [Capabilities]\n4. **Comparable goals:**\n   - Option 1: [Different but related goal]\n   - Option 2: [Another alternative]\n   - Option 3: [Yet another]\n5. **Which is most valuable:** [Analysis]\n6. **How to frame it:** [Communication strategy]\n\n## Strategy 3: Answer Seeking Question\n\n**When to Use:** End-of-project challenges (interpretation, framing, application)\n\n**Approach:** You got an answer, but not to your original question. What question DOES your data answer?\n\n**Mindset Shift:**\n- **Wrong:** \"This doesn't answer my question\"\n- **Right:** \"What interesting question does this answer?\"\n\n**Example from Lectures: Steroid Receptor**\n- **Original Question:** What is THE receptor for this steroid?\n- **Answer Obtained:** Binds multiple receptors at different affinities\n- **Problem:** Can't answer original question (no single receptor)\n- **Inversion:** \"What question does this answer?\"\n- **New Question:** How does finite receptor pool sense infinite lipids?\n- **Answer:** Combinatorial sensing (pattern = unique \"chord\")\n- **Impact:** More interesting than intended finding\n\n**Framework:**\n1. **Original question:** [What you asked]\n2. **Data obtained:** [What you actually found]\n3. **Why it doesn't answer:** [The mismatch]\n4. **What DOES the data show clearly:** [Solid findings]\n5. **What questions could these answer:**\n   - Question 1: [Option]\n   - Question 2: [Option]\n   - Question 3: [Option]\n6. **Which is most interesting:** [Assessment]\n7. **How to reframe paper/project:** [New framing]\n\n## Workflow\n\n### Phase 1: Identify Your Obstacle\n- **Type:** Technical / Biological / Competitive / Interpretive\n- **Severity:** Run-of-mill / Existential / End-stage\n- **Description:** [What's blocking you]\n\n### Phase 2: Select Strategy\n\n| Obstacle Type | Recommended Strategy |\n|--------------|---------------------|\n| Technical barrier, mid-project | Strategy 1 (Unfix parameters) |\n| Can't achieve original goal | Strategy 2 (Comparable goal) |\n| Have data, unclear what it means | Strategy 3 (Answer seeking question) |\n\n### Phase 3: Apply Strategy\n\nWork through the relevant framework above with your specific situation.\n\n### Phase 4: Evaluate Alternatives\n\nFor each alternative generated:\n- **Scientific value:** How interesting is this?\n- **Feasibility:** How hard to execute?\n- **Timeline:** How long will it take?\n- **Impact:** How does this compare to original plan?\n- **Your advantage:** Do you still have edge here?\n\n## Output: Problem Inversion Analysis\n\n**Page 1: Current Situation**\n- **Obstacle:** [Clear description]\n- **Why you're stuck:** [Root cause]\n- **Original plan:** [What you intended]\n- **Current capability:** [What you CAN do]\n\n**Page 2: Strategy Applications**\n\n**Strategy 1 (Unfix Parameters):**\n| Fixed Parameter | If This Floated | Alternative Approaches | Assessment |\n|----------------|-----------------|----------------------|------------|\n| [Param 1] | [Consequences] | [Options] | [Value] |\n\n**Strategy 2 (Comparable Goals):**\n| Original Goal | Why It Failed | Comparable Goal | Value Assessment |\n|--------------|---------------|----------------|------------------|\n| [Goal A] | [Reason] | [Goal B] | [Compare impact] |\n\n**Strategy 3 (Answer → Question):**\n- **Data obtained:** [What you have]\n- **Question 1 it could answer:** [Option 1]\n- **Question 2 it could answer:** [Option 2]\n- **Question 3 it could answer:** [Option 3]\n- **Most interesting:** [Selection + reasoning]\n\n**Page 3: Recommended Path**\n- **Selected strategy:** [1, 2, or 3]\n- **New direction:** [Specific plan]\n- **Why this is better:** [Not just \"it works\" but \"it's more interesting\"]\n- **Communication approach:** [How to frame this pivot]\n- **Timeline:** [New schedule]\n","bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md":"# SKILL 8: Integration and Synthesis\n\n## Overview\nThis final individual skill synthesizes all previous skills into a coherent project plan and communication strategy. You'll create a complete package that demonstrates thoughtful problem selection and rigorous planning.\n\n## Core Principle\n**\"Tell a compelling story with your choices\"**\n\nHumans love stories. Your project should have:\n- **Setting:** Background and problem framing\n- **Problem statement:** Clear, general enough to be interesting, specific enough to be distinctive\n- **New idea/approach:** Your angle (perturbation/measurement/theory: logic vs. technology)\n- **Iteration:** Loop of \"we wondered X → did Y → found Z → interpreted as W\"\n- **Conclusion:** What we learned and/or what's now possible\n- **Passion:** Authentic enthusiasm\n\n## Workflow\n\n### Phase 1: Gather Your Skill Outputs\n\nCollect your completed documents:\n- ☐ Skill 1: Problem Ideation Document\n- ☐ Skill 2: Risk Assessment Matrix\n- ☐ Skill 3: Impact Assessment Document\n- ☐ Skill 4: Parameter Strategy Document\n- ☐ Skill 5: Decision Tree Map\n- ☐ Skill 6: Adversity Playbook\n- ☐ Skill 7: Problem Inversion Analysis (if applicable)\n\n### Phase 2: Create Narrative Arc\n\n**Story Structure for Your Project:**\n\n**1. Setting (Background)**\n- What's known in the field?\n- What's the gap or opportunity?\n- Why does this matter?\n\n**2. Problem Statement**\n- General enough: connects to broad principle\n- Specific enough: distinctive and tractable\n- Your framing from Skill 1\n\n**3. Your Approach**\n- Perturbation/Measurement/Theory\n- Logic vs. Technology\n- What's novel about your angle (from Skill 1)\n- How your optimization function shapes approach (from Skill 3)\n\n**4. Strategy**\n- Fixed vs. floating parameters (from Skill 4)\n- Decision points mapped out (from Skill 5)\n- Risk mitigation built in (from Skill 2)\n- Adversity contingencies (from Skill 6)\n\n**5. Why You**\n- Your competitive advantage\n- Lab expertise\n- Your passion and alignment\n- Timeline and resources\n\n### Phase 3: Communication Formats\n\n**Format 1: 3-Slide, 5-Minute Presentation**\n\n**Slide 1: The Opportunity**\n- Setting + Problem statement\n- One key figure or schematic\n- Why this matters (optimization function)\n\n**Slide 2: Your Approach**\n- New idea/angle\n- Key experiments or analyses\n- What makes this feasible\n- Decision tree highlights\n\n**Slide 3: Impact and Timeline**\n- What you'll learn or enable\n- Success metrics\n- Timeline with milestones\n- Your advantage\n\n**Slide Design Tips:**\n- Minimal text (bullets are fine here)\n- Strong visuals\n- Tell story, don't catalog facts\n- Passion shows through\n\n**Format 2: 1-Page Written Summary**\n\n**Paragraph 1:** Setting and problem (2-3 sentences)\n**Paragraph 2:** Your approach and novelty (3-4 sentences)\n**Paragraph 3:** Why it will work (risk mitigation, your advantage) (2-3 sentences)\n**Paragraph 4:** Impact and timeline (2-3 sentences)\n\n**Total:** ~250-300 words that could be abstract or summary\n\n**Format 3: 1-Minute Elevator Pitch**\n\n**Structure:**\n- \"I'm working on [problem] because [why it matters]\"\n- \"Current approaches are limited by [gap]\"\n- \"My angle is [approach] which is novel because [what's new]\"\n- \"This will [impact] and I have [advantage]\"\n\n**Practice until:** Natural, passionate, memorable\n\n### Phase 4: Integration Document\n\n**Complete Project Plan Integrating All Skills:**\n\n**Section 1: Problem Selection Rationale**\n- How you generated this idea (Skill 1 intuition pumps)\n- Why this problem matters (Skill 3 optimization function)\n- Your competitive advantage\n\n**Section 2: Risk Management**\n- Assumption analysis table (Skill 2)\n- Go/no-go experiments\n- Timeline with checkpoints\n- Mitigation strategies\n\n**Section 3: Execution Strategy**\n- Fixed vs. floating parameters (Skill 4)\n- Decision tree navigation plan (Skill 5)\n- Adversity response protocols (Skill 6)\n- Project ensemble (alternative paths)\n\n**Section 4: Communication Plan**\n- Presentations (3-slide deck)\n- Written summary (1-page)\n- Elevator pitch (1-minute)\n- Key messages for different audiences\n\n**Section 5: Career Alignment**\n- How this fits your trajectory\n- Skills you'll develop\n- Network you'll build\n- Next steps after this project\n\n## Output: Complete Project Package\n\n**Document 1: Integrated Project Plan (4-6 pages)**\n- All sections above\n- References to individual skill outputs\n- Timeline and milestones\n- Resource requirements\n\n**Document 2: Communication Materials**\n- 3-slide presentation\n- 1-page summary\n- Elevator pitch script\n- Talking points for different audiences\n\n**Document 3: Living Documents**\n- Decision tree (to update regularly)\n- Risk assessment (to review quarterly)\n- Adversity playbook (to consult in crisis)\n- Parameter strategy (to revisit if stuck)\n\n## Key Principles\n\n1. **Integration, Not Duplication:** Each skill output serves a purpose in the whole\n2. **Story Over Catalog:** Communicate choices, not just facts\n3. **Passion Matters:** Authentic enthusiasm is persuasive\n4. **Living Plan:** This evolves; revisit quarterly\n5. **Alignment:** Project, values, and career fit together\n6. **Preparation:** You've thought through contingencies\n7. **Communication:** You can pitch this clearly to anyone\n\n## Ready to Synthesize\n\nWith all skills complete, you now have a comprehensive, thoughtful, rigorous approach to problem selection and project planning. This is the highest-leverage work you can do in science.\n","bio-research/skills/scientific-problem-selection/references/09-meta-framework.md":"# SKILL 9: Meta-Framework - Complete Problem Selection Workflow\n\n## Overview\nThis meta-skill orchestrates the complete problem selection process, guiding users through Skills 1-8 in a systematic, iterative way. This skill should be used when comprehensive support is needed from ideation through execution planning, with integrated literature searches and coherent documentation.\n\n## When to Use This Skill\n\n**Use Skill 9 (Complete Workflow) when:**\n- Starting a new project from scratch\n- Major project pivot or reframe needed\n- Grant/fellowship application requiring systematic planning\n- Thesis committee meeting preparation\n- Startup company planning\n- Want comprehensive, documented problem selection process\n\n**Use Individual Skills when:**\n- You're at a specific stage (e.g., just need risk assessment)\n- Quick consultation on one aspect\n- Updating one component of existing plan\n- Teaching/learning one concept\n\n## The Complete Workflow\n\n### Overview of the Journey\n\n```\nSTART: Vague idea or area of interest\n    ↓\n[SKILL 1] → Problem Ideation Document\n    ↓\n[SKILL 2] → Risk Assessment Matrix\n    ↓\n[SKILL 3] → Impact Assessment Document\n    ↓\n[SKILL 4] → Parameter Strategy Document\n    ↓\n[SKILL 5] → Decision Tree Map\n    ↓\n[SKILL 6] → Adversity Playbook\n    ↓\n[SKILL 7] → Problem Inversion Analysis (if needed)\n    ↓\n[SKILL 8] → Integrated Project Plan + Communication Materials\n    ↓\nEND: Comprehensive, rigorous project ready to execute\n```\n\n**Estimated Time:**\n- **Intensive:** 1 week of focused work (full-time)\n- **Distributed:** 4-6 weeks with other commitments\n- **With iterations:** Add 50% more time\n\n**You'll invest time once to save years of potential missteps.**\n\n## Phase-by-Phase Workflow\n\n### Phase 1: Preparation (Before Starting)\n\n**Gather Your Context:**\n1. **Your background:**\n   - Research area/field\n   - Current position (grad student, postdoc, PI, etc.)\n   - Lab expertise and resources\n   - Timeline constraints\n\n2. **Your starting point:**\n   - Vague area of interest?\n   - Specific problem in mind?\n   - Must build on existing work?\n   - Starting completely fresh?\n\n3. **Your goals:**\n   - Publication target (journal tier, timeline)?\n   - Degree requirement (thesis chapter)?\n   - Funding application?\n   - Startup foundation?\n   - Career development?\n\n**Set Expectations:**\n- This process will challenge your assumptions\n- You may discover your initial idea needs major revision\n- That's the point—better to know now than after 2 years\n- Intellectual honesty is required; this only works if you're rigorous\n\n### Phase 2: Ideation (Skill 1) - ~1 week\n\n**What We'll Do:**\n1. Understand your context and constraints\n2. Work through relevant intuition pumps\n3. Avoid common ideation traps\n4. Generate 2-3 project ideas\n5. Preliminary literature search to calibrate scope\n6. Select most promising idea\n7. Create Problem Ideation Document (2 pages)\n\n**Literature Integration Point 1:**\n- Search PubMed for precedents and adjacent work\n- Assess generality of problem\n- Identify methodological advances\n- Determine competition level\n\n**Deliverable:**\n- Problem Ideation Document with core idea and initial analysis\n- List of 10-15 key papers\n- Preliminary assessment of novelty and feasibility\n\n**Checkpoint:** Do you have a clear, specific idea that excites you? If not, iterate on intuition pumps.\n\n### Phase 3: Risk Analysis (Skill 2) - ~3-5 days\n\n**What We'll Do:**\n1. Extract ALL assumptions from your idea\n2. Categorize (biological vs. technical)\n3. Score each assumption (risk 1-5, time to test)\n4. Identify high-risk late-reading assumptions\n5. Design go/no-go experiments\n6. Develop mitigation strategies\n7. Create Risk Assessment Matrix (2 pages)\n\n**Literature Integration Point 2:**\n- Search for technical precedents (has method worked before?)\n- Find biological evidence (what's known about your system?)\n- Identify benchmarks (success rates, effect sizes)\n- Assess timeline realism\n\n**Deliverable:**\n- Complete assumption analysis table\n- Top 3 high-risk assumptions with mitigation plans\n- Go/no-go experiment designs\n- Revised timeline with decision points\n\n**Checkpoint:** Is your risk profile acceptable? If risk-5 assumptions are >2 years out, return to Skill 1 to reframe.\n\n### Phase 4: Impact Assessment (Skill 3) - ~2-3 days\n\n**What We'll Do:**\n1. Categorize your project type\n2. Select appropriate optimization function\n3. Score yourself on both axes\n4. Compare to benchmarks\n5. Articulate value system alignment\n6. Develop communication strategy\n7. Create Impact Assessment Document (2 pages)\n\n**Literature Integration Point 3:**\n- Identify high-impact exemplars in your field\n- Analyze their framing and evaluation\n- Benchmark your potential impact\n- Understand field expectations\n\n**Deliverable:**\n- Clear optimization function selection\n- Self-assessment on both axes with justification\n- Comparative analysis vs. alternatives\n- Communication strategy for different audiences\n\n**Checkpoint:** Do you score MEDIUM-HIGH on at least one axis? If not, return to Skill 1 to find higher-impact angle.\n\n### Phase 5: Parameter Strategy (Skill 4) - ~2-3 days\n\n**What We'll Do:**\n1. Inventory all project parameters\n2. Identify which are fixed vs. floating\n3. Assess if you're over/under-constrained\n4. Select strategic fixed parameter\n5. Plan flexibility for contingencies\n6. Create Parameter Strategy Document (2 pages)\n\n**Literature Integration Point 4:**\n- How did successful projects handle parameters?\n- What parameter choices led to breakthroughs?\n- What over-constraints caused failures?\n\n**Deliverable:**\n- Complete parameter inventory\n- Strategic rationale for fixed/floating decisions\n- Flexibility matrix for contingencies\n- Project ensemble (family of related projects)\n\n**Checkpoint:** Have you fixed 1-2 meaningful parameters while maintaining flexibility? If too rigid, adjust.\n\n### Phase 6: Decision Tree Planning (Skill 5) - ~2 days\n\n**What We'll Do:**\n1. Map your project's decision tree\n2. Identify major branch points\n3. Set criteria for each decision\n4. Establish Level 1 / Level 2 rhythm\n5. Create protocols for getting unstuck\n6. Create Decision Tree Map (1-2 pages)\n\n**No major literature search here** (unless you identify specific decision points needing technical information)\n\n**Deliverable:**\n- Visual decision tree\n- Decision criteria at each branch\n- Schedule for Level 2 evaluations\n- Protocol for course correction\n\n**Checkpoint:** Have you planned for regular strategic evaluation, not just execution?\n\n### Phase 7: Adversity Preparation (Skill 6) - ~2 days\n\n**What We'll Do:**\n1. Anticipate likely failure modes\n2. For each, identify upgrade opportunity\n3. Map your project ensemble\n4. Create crisis response protocols\n5. Create Adversity Playbook (2-3 pages)\n\n**Literature Integration Point 5:**\n- Historical examples of productive pivots\n- How did others capitalize on adversity?\n- What second-generation projects emerged from failures?\n\n**Deliverable:**\n- Anticipated crisis catalog\n- Upgrade strategies for each\n- Project ensemble map\n- Resilience rituals and protocols\n\n**Checkpoint:** Are you prepared to see adversity as opportunity? Have you planned how to upgrade, not just fix?\n\n### Phase 8: Problem Inversion Toolkit (Skill 7) - ~1 day\n\n**What We'll Do:**\n1. Review three inversion strategies\n2. Pre-plan applications for your likely obstacles\n3. Create Problem Inversion Analysis (1-2 pages)\n\n**This is preparatory** - you may not need it now, but when crisis hits, you'll have framework ready.\n\n**Deliverable:**\n- Strategy 1 application planned\n- Strategy 2 options identified\n- Strategy 3 alternative questions brainstormed\n- Quick-reference guide for crisis\n\n**Checkpoint:** Do you have concrete strategies for inverting problems when stuck?\n\n### Phase 9: Integration and Synthesis (Skill 8) - ~3-5 days\n\n**What We'll Do:**\n1. Review all outputs from Skills 1-7\n2. Create cohesive narrative\n3. Develop communication materials:\n   - 3-slide presentation\n   - 1-page summary\n   - 1-minute elevator pitch\n4. Write integrated project plan (4-6 pages)\n5. Create living documents for ongoing use\n\n**Literature Integration Point 6:**\n- Final references for integrated plan\n- Key papers for each section\n- Communication examples from field leaders\n\n**Deliverable:**\n- Complete Integrated Project Plan (4-6 pages)\n- 3-slide presentation deck\n- 1-page written summary\n- Elevator pitch script\n- Living documents (decision tree, risk matrix, etc.)\n\n**Checkpoint:** Can you communicate your project compellingly in 1 minute, 5 minutes, and 1 page? Do all pieces fit together coherently?\n\n## Iteration and Refinement\n\n### When to Iterate\n\n**Red Flags That Require Going Back:**\n\n**From Skill 2 (Risk):**\n- Risk-5 assumptions >2 years out → Return to Skill 1 (reframe problem)\n- >3 risk-4-5 assumptions → Return to Skill 1 (simplify or change approach)\n\n**From Skill 3 (Impact):**\n- Score LOW on both axes → Return to Skill 1 (find higher-impact angle)\n- Optimization function mismatch → Return to Skill 1 (reframe problem)\n\n**From Skill 4 (Parameters):**\n- >2 fixed parameters → Return to Skill 1 (over-constrained)\n- Zero fixed parameters → Return to Skill 1 (under-constrained)\n\n**From Skills 5-6:**\n- No clear decision points → Return to Skill 4 (need more flexibility)\n- Every failure mode is existential → Return to Skill 2 (too risky)\n\n### Iteration Protocol\n\n**Major Revision Needed:**\n1. **Pause and acknowledge:** The process is working—it caught a problem\n2. **Return to indicated skill:** Usually Skill 1 or 2\n3. **Bring forward what you learned:** Don't start from scratch\n4. **Revised idea → Run through workflow again:** Faster the second time\n5. **Multiple iterations OK:** Better than years on wrong project\n\n**Minor Refinement:**\n1. **Update specific document:** E.g., adjust parameter strategy\n2. **Check downstream effects:** Does this change anything else?\n3. **Update integration document:** Keep everything coherent\n\n## Literature Integration Strategy\n\n### Overall PubMed Approach\n\n**Throughout the workflow, use PubMed strategically:**\n\n1. **Skill 1 (Ideation):** Assess generality, find precedents, gauge competition\n2. **Skill 2 (Risk):** Technical feasibility, biological evidence, benchmarks\n3. **Skill 3 (Impact):** Field exemplars, evaluation frameworks, benchmarks\n4. **Skill 4 (Parameters):** Successful parameter choices, cautionary tales\n5. **Skill 6 (Adversity):** Productive pivots, upgrade examples\n6. **Skill 8 (Integration):** Communication models, comprehensive references\n\n**Search Strategy:**\n- Start broad (field overview)\n- Get specific (your exact approach)\n- Look adjacent (related systems/methods)\n- Find benchmarks (what's state-of-art?)\n- Identify competition (who else is doing this?)\n\n**Papers to Track:**\n- ~10-15 key papers from Skill 1\n- ~5-10 technical papers from Skill 2\n- ~5-10 impact exemplars from Skill 3\n- ~5 parameter lessons from Skill 4\n- ~3-5 pivot examples from Skill 6\n- **Total: ~30-50 papers** (your foundation)\n\n## Final Deliverable Package\n\n### What You'll Have at the End\n\n**Core Documents (Organized Folder):**\n1. `01_Problem_Ideation.pdf` (2 pages, Skill 1)\n2. `02_Risk_Assessment.pdf` (2 pages, Skill 2)\n3. `03_Impact_Assessment.pdf` (2 pages, Skill 3)\n4. `04_Parameter_Strategy.pdf` (2 pages, Skill 4)\n5. `05_Decision_Tree.pdf` (1-2 pages, Skill 5)\n6. `06_Adversity_Playbook.pdf` (2-3 pages, Skill 6)\n7. `07_Problem_Inversion.pdf` (1-2 pages, Skill 7)\n8. `08_Integrated_Plan.pdf` (4-6 pages, Skill 8)\n\n**Communication Materials:**\n- `Presentation_3slides.pptx`\n- `Summary_1page.pdf`\n- `Elevator_Pitch.txt`\n\n**Living Documents (for ongoing use):**\n- `Decision_Tree.pdf` (update monthly)\n- `Risk_Matrix.xlsx` (update quarterly)\n- `Adversity_Playbook.pdf` (consult in crisis)\n- `Parameter_Strategy.pdf` (revisit if stuck)\n\n**Reference Library:**\n- `Key_Papers.pdf` (annotated bibliography, 30-50 papers)\n- Organized by: Ideation / Technical / Impact / Pivots\n\n**Total: ~20-25 pages of documentation + supporting materials**\n\n## Using Your Outputs\n\n### For Different Purposes\n\n**Grant/Fellowship Applications:**\n- Start with Integrated Plan (Skill 8)\n- Include specific aims from Ideation (Skill 1)\n- Show risk mitigation from Risk Assessment (Skill 2)\n- Demonstrate impact from Impact Assessment (Skill 3)\n- Timeline from Decision Tree (Skill 5)\n\n**Thesis Committee Meetings:**\n- Present 3-slide deck (Skill 8)\n- Walk through decision tree (Skill 5)\n- Discuss risk mitigation (Skill 2)\n- Show parameter flexibility (Skill 4)\n- Demonstrate thoughtful planning\n\n**Lab Meetings:**\n- Use elevator pitch (Skill 8)\n- Show decision tree updates (Skill 5)\n- Discuss latest adversity and response (Skill 6)\n- Get input on parameter strategy (Skill 4)\n\n**Collaborator Conversations:**\n- Share 1-page summary (Skill 8)\n- Highlight where their expertise fits (Skill 4)\n- Show risk mitigation plan (Skill 2)\n- Discuss impact potential (Skill 3)\n\n**Personal Reflection:**\n- Quarterly: Review Decision Tree (Skill 5), update milestones\n- After setbacks: Consult Adversity Playbook (Skill 6)\n- When stuck: Use Problem Inversion (Skill 7)\n- Annual: Full workflow review, consider new projects\n\n## Maintenance and Updates\n\n### Living Documents Protocol\n\n**Monthly:**\n- Update Decision Tree (Skill 5)\n- Log adversities and responses (Skill 6)\n- Note new papers or competition\n- Adjust timeline if needed\n\n**Quarterly:**\n- Review Risk Matrix (Skill 2) - mark assumptions tested\n- Reassess Impact (Skill 3) - has evaluation changed?\n- Check Parameter Strategy (Skill 4) - still optimal?\n- Update Integrated Plan (Skill 8) - keep current\n\n**Annually:**\n- Complete workflow review\n- Consider new projects with fresh Skill 1 ideation\n- Archive old project docs\n- Extract lessons learned\n\n## Success Metrics\n\n### How Do You Know This Worked?\n\n**Immediate Indicators:**\n- Clearer project vision than before\n- Honest assessment of risks\n- Contingency plans for failures\n- Compelling communication materials\n- Alignment between project and values\n- Confidence in problem choice\n\n**6-Month Indicators:**\n- Major decisions made faster (have framework)\n- Adversity handled productively (used playbook)\n- No existential crises (risks were mitigated)\n- Regular Level 2 evaluation happening\n- Project staying on-track or pivoting smartly\n\n**2-Year Indicators:**\n- Published results or strong progress\n- Avoided dead-end projects\n- Multiple high-quality options at decision points\n- Skills developed as planned\n- Career trajectory aligned with goals\n- Time well-spent (the ultimate measure)\n\n## Key Principles of the Meta-Framework\n\n1. **Systematic > Ad Hoc:** Process ensures nothing forgotten\n2. **Iterative > Linear:** Expect to loop back, that's good\n3. **Documented > Mental:** Writing forces clarity\n4. **Integrated > Fragmented:** All skills connect\n5. **Living > Static:** Update as you learn\n6. **Thoughtful > Fast:** Time invested now saves years later\n7. **Honest > Optimistic:** Rigor protects against wishful thinking\n8. **Prepared > Surprised:** Anticipate adversity\n9. **Flexible > Rigid:** Parameters float when needed\n10. **Passionate > Obligatory:** Alignment matters\n\n## Getting Started\n\n### First Steps\n\n**This Week:**\n1. Block time in calendar (1-2 hours to start)\n2. Gather your context (background, goals, constraints)\n3. Begin Skill 1 (Intuition Pumps)\n4. Let me know your starting point\n\n**This Month:**\n1. Work through Skills 1-4 (foundation)\n2. Share with mentor for alignment check\n3. Iterate if major changes needed\n4. Complete Skills 5-8 (execution planning)\n\n**This Quarter:**\n1. Begin project execution with living documents\n2. Monthly decision tree updates\n3. Quarterly risk assessment reviews\n4. Log adversities and responses\n\n**This Year:**\n1. Execute planned project\n2. Use frameworks when stuck\n3. Update living documents\n4. Evaluate process and refine\n\n## Ready to Begin?\n\nThe complete meta-framework is substantial, but each step builds on the last. You'll move through:\n- ~2 weeks of intensive planning\n- Comprehensive documentation\n- Clear decision criteria\n- Communication materials\n- Living documents for ongoing guidance\n\n**Most importantly:** You'll KNOW you're working on a well-chosen problem with rigorous planning. That confidence is priceless.\n\nLet's start with Skill 1. Are you ready to begin?\n\n---\n\n*Remember: The highest-leverage work in science is choosing the right problem. This meta-framework ensures you spend your finite time wisely. The investment in systematic planning pays dividends for years.*\n\n","bio-research/skills/scvi-tools/SKILL.md":"---\nname: scvi-tools\ndescription: Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI, (2) ATAC-seq analysis with PeakVI, (3) CITE-seq multi-modal analysis with totalVI, (4) multiome RNA+ATAC analysis with MultiVI, (5) spatial transcriptomics deconvolution with DestVI, (6) label transfer and reference mapping with scANVI/scArches, (7) RNA velocity with veloVI, or (8) any deep learning-based single-cell method. Triggers include mentions of scVI, scANVI, totalVI, PeakVI, MultiVI, DestVI, veloVI, sysVI, scArches, variational autoencoder, VAE, batch correction, data integration, multi-modal, CITE-seq, multiome, reference mapping, latent space.\n---\n\n# scvi-tools Deep Learning Skill\n\nThis skill provides guidance for deep learning-based single-cell analysis using scvi-tools, the leading framework for probabilistic models in single-cell genomics.\n\n## How to Use This Skill\n\n1. Identify the appropriate workflow from the model/workflow tables below\n2. Read the corresponding reference file for detailed steps and code\n3. Use scripts in `scripts/` to avoid rewriting common code\n4. For installation or GPU issues, consult `references/environment_setup.md`\n5. For debugging, consult `references/troubleshooting.md`\n\n## When to Use This Skill\n\n- When scvi-tools, scVI, scANVI, or related models are mentioned\n- When deep learning-based batch correction or integration is needed\n- When working with multi-modal data (CITE-seq, multiome)\n- When reference mapping or label transfer is required\n- When analyzing ATAC-seq or spatial transcriptomics data\n- When learning latent representations of single-cell data\n\n## Model Selection Guide\n\n| Data Type | Model | Primary Use Case |\n|-----------|-------|------------------|\n| scRNA-seq | **scVI** | Unsupervised integration, DE, imputation |\n| scRNA-seq + labels | **scANVI** | Label transfer, semi-supervised integration |\n| CITE-seq (RNA+protein) | **totalVI** | Multi-modal integration, protein denoising |\n| scATAC-seq | **PeakVI** | Chromatin accessibility analysis |\n| Multiome (RNA+ATAC) | **MultiVI** | Joint modality analysis |\n| Spatial + scRNA reference | **DestVI** | Cell type deconvolution |\n| RNA velocity | **veloVI** | Transcriptional dynamics |\n| Cross-technology | **sysVI** | System-level batch correction |\n\n## Workflow Reference Files\n\n| Workflow | Reference File | Description |\n|----------|---------------|-------------|\n| Environment Setup | `references/environment_setup.md` | Installation, GPU, version info |\n| Data Preparation | `references/data_preparation.md` | Formatting data for any model |\n| scRNA Integration | `references/scrna_integration.md` | scVI/scANVI batch correction |\n| ATAC-seq Analysis | `references/atac_peakvi.md` | PeakVI for accessibility |\n| CITE-seq Analysis | `references/citeseq_totalvi.md` | totalVI for protein+RNA |\n| Multiome Analysis | `references/multiome_multivi.md` | MultiVI for RNA+ATAC |\n| Spatial Deconvolution | `references/spatial_deconvolution.md` | DestVI spatial analysis |\n| Label Transfer | `references/label_transfer.md` | scANVI reference mapping |\n| scArches Mapping | `references/scarches_mapping.md` | Query-to-reference mapping |\n| Batch Correction | `references/batch_correction_sysvi.md` | Advanced batch methods |\n| RNA Velocity | `references/rna_velocity_velovi.md` | veloVI dynamics |\n| Troubleshooting | `references/troubleshooting.md` | Common issues and solutions |\n\n## CLI Scripts\n\nModular scripts for common workflows. Chain together or modify as needed.\n\n### Pipeline Scripts\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `prepare_data.py` | QC, filter, HVG selection | `python scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch` |\n| `train_model.py` | Train any scvi-tools model | `python scripts/train_model.py prepared.h5ad results/ --model scvi` |\n| `cluster_embed.py` | Neighbors, UMAP, Leiden | `python scripts/cluster_embed.py adata.h5ad results/` |\n| `differential_expression.py` | DE analysis | `python scripts/differential_expression.py model/ adata.h5ad de.csv --groupby leiden` |\n| `transfer_labels.py` | Label transfer with scANVI | `python scripts/transfer_labels.py ref_model/ query.h5ad results/` |\n| `integrate_datasets.py` | Multi-dataset integration | `python scripts/integrate_datasets.py results/ data1.h5ad data2.h5ad` |\n| `validate_adata.py` | Check data compatibility | `python scripts/validate_adata.py data.h5ad --batch-key batch` |\n\n### Example Workflow\n\n```bash\n# 1. Validate input data\npython scripts/validate_adata.py raw.h5ad --batch-key batch --suggest\n\n# 2. Prepare data (QC, HVG selection)\npython scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch --n-hvgs 2000\n\n# 3. Train model\npython scripts/train_model.py prepared.h5ad results/ --model scvi --batch-key batch\n\n# 4. Cluster and visualize\npython scripts/cluster_embed.py results/adata_trained.h5ad results/ --resolution 0.8\n\n# 5. Differential expression\npython scripts/differential_expression.py results/model results/adata_clustered.h5ad results/de.csv --groupby leiden\n```\n\n### Python Utilities\n\nThe `scripts/model_utils.py` provides importable functions for custom workflows:\n\n| Function | Purpose |\n|----------|---------|\n| `prepare_adata()` | Data preparation (QC, HVG, layer setup) |\n| `train_scvi()` | Train scVI or scANVI |\n| `evaluate_integration()` | Compute integration metrics |\n| `get_marker_genes()` | Extract DE markers |\n| `save_results()` | Save model, data, plots |\n| `auto_select_model()` | Suggest best model |\n| `quick_clustering()` | Neighbors + UMAP + Leiden |\n\n## Critical Requirements\n\n1. **Raw counts required**: scvi-tools models require integer count data\n   ```python\n   adata.layers[\"counts\"] = adata.X.copy()  # Before normalization\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n   ```\n\n2. **HVG selection**: Use 2000-4000 highly variable genes\n   ```python\n   sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key=\"batch\", layer=\"counts\", flavor=\"seurat_v3\")\n   adata = adata[:, adata.var['highly_variable']].copy()\n   ```\n\n3. **Batch information**: Specify batch_key for integration\n   ```python\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n   ```\n\n## Quick Decision Tree\n\n```\nNeed to integrate scRNA-seq data?\n├── Have cell type labels? → scANVI (references/label_transfer.md)\n└── No labels? → scVI (references/scrna_integration.md)\n\nHave multi-modal data?\n├── CITE-seq (RNA + protein)? → totalVI (references/citeseq_totalvi.md)\n├── Multiome (RNA + ATAC)? → MultiVI (references/multiome_multivi.md)\n└── scATAC-seq only? → PeakVI (references/atac_peakvi.md)\n\nHave spatial data?\n└── Need cell type deconvolution? → DestVI (references/spatial_deconvolution.md)\n\nHave pre-trained reference model?\n└── Map query to reference? → scArches (references/scarches_mapping.md)\n\nNeed RNA velocity?\n└── veloVI (references/rna_velocity_velovi.md)\n\nStrong cross-technology batch effects?\n└── sysVI (references/batch_correction_sysvi.md)\n```\n\n## Key Resources\n\n- [scvi-tools Documentation](https://docs.scvi-tools.org/)\n- [scvi-tools Tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n- [Model Hub](https://huggingface.co/scvi-tools)\n- [GitHub Issues](https://github.com/scverse/scvi-tools/issues)\n","bio-research/skills/scvi-tools/references/atac_peakvi.md":"# scATAC-seq Analysis with PeakVI\n\nThis reference covers single-cell ATAC-seq analysis using PeakVI for dimensionality reduction, batch correction, and differential accessibility.\n\n## Overview\n\nPeakVI is a deep generative model for scATAC-seq data that:\n- Models binary accessibility (peak open/closed)\n- Handles batch effects\n- Provides latent representation for clustering\n- Enables differential accessibility analysis\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\nimport anndata as ad\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load and Prepare ATAC Data\n\n### From 10x Genomics (Cell Ranger ATAC)\n\n```python\n# Peak-cell matrix from fragments\n# Usually in filtered_peak_bc_matrix format\n\nadata = sc.read_10x_h5(\"filtered_peak_bc_matrix.h5\")\n\n# Or from mtx format\nadata = sc.read_10x_mtx(\"filtered_peak_bc_matrix/\")\n\n# Check structure\nprint(f\"Cells: {adata.n_obs}, Peaks: {adata.n_vars}\")\nprint(f\"Sparsity: {1 - adata.X.nnz / (adata.n_obs * adata.n_vars):.2%}\")\n```\n\n### From ArchR/Signac\n\n```python\n# Export from ArchR (in R)\n# saveArchRProject(proj, outputDirectory=\"atac_export\", load=FALSE)\n# Then read the exported files in Python\n\n# From Signac:\n# Export peak matrix and metadata\n```\n\n## Step 2: Quality Control\n\n```python\n# Calculate QC metrics\nsc.pp.calculate_qc_metrics(adata, inplace=True)\n\n# Key metrics for ATAC:\n# - n_genes_by_counts: peaks per cell (should rename)\n# - total_counts: fragments per cell\nadata.obs['n_peaks'] = adata.obs['n_genes_by_counts']\nadata.obs['total_fragments'] = adata.obs['total_counts']\n\n# Filter cells\nadata = adata[adata.obs['n_peaks'] > 500].copy()\nadata = adata[adata.obs['n_peaks'] < 50000].copy()  # Remove potential doublets\n\n# Filter peaks (accessible in at least n cells)\nsc.pp.filter_genes(adata, min_cells=10)\n\nprint(f\"After QC: {adata.shape}\")\n```\n\n### Binarize Data\n\n```python\n# PeakVI works with binary accessibility\n# Binarize if not already binary\nadata.X = (adata.X > 0).astype(np.float32)\n\n# Verify\nprint(f\"Unique values: {np.unique(adata.X.data)}\")\n```\n\n## Step 3: Feature Selection\n\nUnlike RNA-seq, peak selection for ATAC is less established. Options:\n\n### Option A: Most Accessible Peaks\n\n```python\n# Select top peaks by accessibility frequency\npeak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\ntop_peaks = np.argsort(peak_accessibility)[-50000:]  # Top 50k peaks\n\nadata = adata[:, top_peaks].copy()\n```\n\n### Option B: Variable Peaks\n\n```python\n# Select peaks with high variance\n# (Most informative for clustering)\nfrom sklearn.feature_selection import VarianceThreshold\n\nselector = VarianceThreshold(threshold=0.05)\nselector.fit(adata.X)\nadata = adata[:, selector.get_support()].copy()\n```\n\n### Option C: Peaks Near Genes\n\n```python\n# Keep peaks within promoter regions or gene bodies\n# Requires peak annotation\n# gene_peaks = peaks with gene annotation\n# adata = adata[:, adata.var['near_gene']].copy()\n```\n\n## Step 4: Add Batch Information\n\n```python\n# Add batch annotation if multiple samples\nadata.obs['batch'] = adata.obs['sample_id']  # Or appropriate column\n\nprint(adata.obs['batch'].value_counts())\n```\n\n## Step 5: Setup and Train PeakVI\n\n```python\n# Setup AnnData\nscvi.model.PEAKVI.setup_anndata(\n    adata,\n    batch_key=\"batch\"  # Optional, omit for single batch\n)\n\n# Create model\nmodel = scvi.model.PEAKVI(\n    adata,\n    n_latent=20,      # Latent dimensions\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Latent Representation\n\n```python\n# Latent space for downstream analysis\nadata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_PeakVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Differential Accessibility\n\n```python\n# Differential accessibility between clusters\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n\n# Filter significant peaks\nda_sig = da_results[\n    (da_results['is_da_fdr_0.05']) &\n    (abs(da_results['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DA peaks: {len(da_sig)}\")\nprint(da_sig.head())\n```\n\n### DA Between Conditions\n\n```python\n# Compare conditions within cell type\nadata_subset = adata[adata.obs['cell_type'] == 'CD4 T cells'].copy()\n\nda_condition = model.differential_accessibility(\n    groupby='condition',\n    group1='treated',\n    group2='control'\n)\n```\n\n## Step 8: Peak Annotation\n\n```python\n# Annotate peaks with nearest genes\n# Using pybedtools or similar\n\n# Example peak name format: chr1:1000-2000\n# Parse into bed format for annotation\n\nimport pandas as pd\n\ndef parse_peak_names(peak_names):\n    \"\"\"Parse peak names into bed format.\"\"\"\n    records = []\n    for peak in peak_names:\n        chrom, coords = peak.split(':')\n        start, end = coords.split('-')\n        records.append({\n            'chrom': chrom,\n            'start': int(start),\n            'end': int(end),\n            'peak': peak\n        })\n    return pd.DataFrame(records)\n\npeak_bed = parse_peak_names(adata.var_names)\n```\n\n## Step 9: Motif Analysis\n\n```python\n# Export significant peaks for motif analysis\n# Use HOMER, MEME, or chromVAR\n\n# Export peak sequences\nsig_peaks = da_sig.index.tolist()\npeak_bed_sig = peak_bed[peak_bed['peak'].isin(sig_peaks)]\npeak_bed_sig.to_csv(\"significant_peaks.bed\", sep='\\t', index=False, header=False)\n\n# Then run HOMER:\n# findMotifsGenome.pl significant_peaks.bed hg38 motif_output/ -size 200\n```\n\n## Step 10: Gene Activity Scores\n\n```python\n# Compute gene activity from peak accessibility\n# (Requires peak-gene annotations)\n\ndef compute_gene_activity(adata, peak_gene_map):\n    \"\"\"\n    Compute gene activity scores from peak accessibility.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        ATAC data with peaks\n    peak_gene_map : dict\n        Mapping of peaks to genes\n        \n    Returns\n    -------\n    AnnData with gene activity scores\n    \"\"\"\n    from scipy.sparse import csr_matrix\n    \n    genes = list(set(peak_gene_map.values()))\n    gene_matrix = np.zeros((adata.n_obs, len(genes)))\n    \n    for i, gene in enumerate(genes):\n        gene_peaks = [p for p, g in peak_gene_map.items() if g == gene]\n        if gene_peaks:\n            peak_idx = [list(adata.var_names).index(p) for p in gene_peaks if p in adata.var_names]\n            if peak_idx:\n                gene_matrix[:, i] = np.array(adata.X[:, peak_idx].sum(axis=1)).flatten()\n    \n    adata_gene = ad.AnnData(\n        X=csr_matrix(gene_matrix),\n        obs=adata.obs.copy(),\n        var=pd.DataFrame(index=genes)\n    )\n    \n    return adata_gene\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_scatac(\n    adata,\n    batch_key=None,\n    n_top_peaks=50000,\n    n_latent=20,\n    resolution=0.5\n):\n    \"\"\"\n    Complete scATAC-seq analysis with PeakVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Raw peak-cell matrix\n    batch_key : str, optional\n        Batch annotation column\n    n_top_peaks : int\n        Number of top peaks to use\n    n_latent : int\n        Latent dimensions\n    resolution : float\n        Leiden clustering resolution\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import numpy as np\n    \n    adata = adata.copy()\n    \n    # QC\n    sc.pp.calculate_qc_metrics(adata, inplace=True)\n    adata = adata[adata.obs['n_genes_by_counts'] > 500].copy()\n    sc.pp.filter_genes(adata, min_cells=10)\n    \n    # Binarize\n    adata.X = (adata.X > 0).astype(np.float32)\n    \n    # Select top peaks\n    if adata.n_vars > n_top_peaks:\n        peak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\n        top_peaks = np.argsort(peak_accessibility)[-n_top_peaks:]\n        adata = adata[:, top_peaks].copy()\n    \n    # Setup PeakVI\n    scvi.model.PEAKVI.setup_anndata(adata, batch_key=batch_key)\n    \n    # Train\n    model = scvi.model.PEAKVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Latent representation\n    adata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_PeakVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata, resolution=resolution)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_scatac(\n    adata,\n    batch_key=\"sample\",\n    n_top_peaks=50000\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'sample'])\n\n# Differential accessibility\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n```\n\n## Integration with scRNA-seq\n\nFor multiome data or separate RNA/ATAC from same cells:\n\n```python\n# See MultiVI for joint RNA+ATAC analysis\n# Or use WNN (weighted nearest neighbors) approach\n\n# Transfer labels from RNA to ATAC using shared latent space\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Training slow | Too many peaks | Subset to top 50k peaks |\n| Poor clustering | Too few informative peaks | Use variable peaks |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n| Memory error | Large peak matrix | Use sparse format, reduce peaks |\n\n## Key References\n\n- Ashuach et al. (2022) \"PeakVI: A deep generative model for single-cell chromatin accessibility analysis\"\n","bio-research/skills/scvi-tools/references/batch_correction_sysvi.md":"# Advanced Batch Correction with sysVI\n\nThis reference covers system-level batch correction using sysVI, designed for integrating data across major technological or study differences.\n\n## Overview\n\nsysVI (System Variational Inference) extends scVI for scenarios where:\n- Batch effects are very strong (different technologies)\n- Standard scVI over-corrects biological signal\n- You need to separate \"system\" effects from biological variation\n\n## When to Use sysVI vs scVI\n\n| Scenario | Recommended Model |\n|----------|-------------------|\n| Same technology, different samples | scVI |\n| 10x v2 vs 10x v3 | scVI (usually) |\n| 10x vs Smart-seq2 | sysVI |\n| Different sequencing depths | scVI with covariates |\n| Cross-study integration | sysVI |\n| Atlas-scale integration | sysVI |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Understanding sysVI Architecture\n\nsysVI separates variation into:\n1. **Biological variation**: Cell type, state, trajectory\n2. **System variation**: Technology, study, lab effects\n\n```\n                    ┌─────────────────┐\nInput counts ──────►│    Encoder      │\n                    │                 │\nSystem info ───────►│  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\n                    │   Latent z      │\n                    │  (biological)   │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\nSystem info ───────►│    Decoder      │\n                    │  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    Reconstructed counts\n```\n\n## Basic sysVI Workflow\n\n### Step 1: Prepare Data\n\n```python\n# Load datasets from different systems\nadata1 = sc.read_h5ad(\"10x_data.h5ad\")\nadata2 = sc.read_h5ad(\"smartseq_data.h5ad\")\n\n# Add system labels\nadata1.obs[\"system\"] = \"10x\"\nadata2.obs[\"system\"] = \"Smart-seq2\"\n\n# Add batch labels (within system)\n# e.g., different samples within each technology\n\n# Concatenate\nadata = sc.concat([adata1, adata2])\n\n# Store raw counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection\n\n```python\n# Select HVGs considering both batch and system\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # More genes for cross-system\n    flavor=\"seurat_v3\",\n    batch_key=\"system\",  # Consider system for HVG\n    layer=\"counts\"\n)\n\n# Optionally: ensure overlap between systems\n# Check HVGs are expressed in both systems\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train sysVI\n\n```python\n# Setup AnnData\n# Note: sysVI may be accessed differently depending on version\n# Check scvi-tools documentation for current API\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",           # Within-system batches\n    categorical_covariate_keys=[\"system\"]  # System-level covariate\n)\n\n# For true sysVI (if available in your version)\n# scvi.model.SysVI.setup_anndata(...)\n\n# Create model with system awareness\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,\n    n_layers=2,\n    gene_likelihood=\"nb\"\n)\n\n# Train\nmodel.train(max_epochs=300)\n```\n\n### Step 4: Extract Representations\n\n```python\n# Get latent representation\nadata.obsm[\"X_integrated\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_integrated\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata)\n\n# Check integration\nsc.pl.umap(adata, color=[\"system\", \"leiden\", \"cell_type\"])\n```\n\n## Alternative: Harmony + scVI\n\nFor cross-system integration, combining methods can work well:\n\n```python\nimport scanpy.external as sce\n\n# First run PCA\nsc.pp.pca(adata)\n\n# Apply Harmony for initial alignment\nsce.pp.harmony_integrate(adata, key=\"system\")\n\n# Then train scVI on Harmony-corrected embedding\n# Or use Harmony representation directly\n```\n\n## Alternative: Using Covariates in scVI\n\nFor moderate system effects:\n\n```python\n# Include system as categorical covariate\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    categorical_covariate_keys=[\"system\", \"technology_version\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Alternative: Separate Models + Integration\n\nFor very different systems:\n\n```python\n# Train separate models\nscvi.model.SCVI.setup_anndata(adata1, layer=\"counts\", batch_key=\"sample\")\nmodel1 = scvi.model.SCVI(adata1)\nmodel1.train()\n\nscvi.model.SCVI.setup_anndata(adata2, layer=\"counts\", batch_key=\"sample\")\nmodel2 = scvi.model.SCVI(adata2)\nmodel2.train()\n\n# Get latent spaces\nadata1.obsm[\"X_scVI\"] = model1.get_latent_representation()\nadata2.obsm[\"X_scVI\"] = model2.get_latent_representation()\n\n# Align with CCA or Harmony\n# ... additional alignment step\n```\n\n## Evaluating Cross-System Integration\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Color by system\nsc.pl.umap(adata, color=\"system\", ax=axes[0], show=False, title=\"By System\")\n\n# Color by cell type\nsc.pl.umap(adata, color=\"cell_type\", ax=axes[1], show=False, title=\"By Cell Type\")\n\n# Color by expression of marker\nsc.pl.umap(adata, color=\"CD3D\", ax=axes[2], show=False, title=\"CD3D Expression\")\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics\n\n```python\n# Using scib-metrics\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"system\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_integrated\"]\n)\n\nbm.benchmark()\n\n# Key metrics:\n# - Batch mixing (ASW_batch, Graph connectivity)\n# - Bio conservation (NMI, ARI, ASW_label)\n```\n\n### LISI Scores\n\n```python\n# Local Inverse Simpson's Index\nfrom scib_metrics import lisi\n\n# Batch LISI (higher = better mixing)\nbatch_lisi = lisi.ilisi_graph(\n    adata,\n    batch_key=\"system\",\n    use_rep=\"X_integrated\"\n)\n\n# Cell type LISI (lower = better preservation)\nct_lisi = lisi.clisi_graph(\n    adata,\n    label_key=\"cell_type\", \n    use_rep=\"X_integrated\"\n)\n\nprint(f\"Batch LISI: {batch_lisi.mean():.3f}\")\nprint(f\"Cell type LISI: {ct_lisi.mean():.3f}\")\n```\n\n## Handling Specific Challenges\n\n### Different Gene Sets\n\n```python\n# Find common genes\ncommon_genes = adata1.var_names.intersection(adata2.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# If too few, use gene mapping\n# Or impute missing genes\n```\n\n### Different Sequencing Depths\n\n```python\n# Add depth as continuous covariate\nadata.obs[\"log_counts\"] = np.log1p(adata.obs[\"total_counts\"])\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    continuous_covariate_keys=[\"log_counts\"]\n)\n```\n\n### Unbalanced Cell Types\n\n```python\n# Check cell type distribution per system\nimport pandas as pd\n\nct_dist = pd.crosstab(adata.obs[\"system\"], adata.obs[\"cell_type\"], normalize=\"index\")\nprint(ct_dist)\n\n# If very unbalanced, consider:\n# 1. Subsample to balance\n# 2. Use scANVI with labels to preserve rare types\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_cross_system(\n    adatas: dict,\n    system_key: str = \"system\",\n    batch_key: str = \"batch\",\n    cell_type_key: str = \"cell_type\",\n    n_top_genes: int = 4000,\n    n_latent: int = 30\n):\n    \"\"\"\n    Integrate datasets from different technological systems.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {system_name: AnnData}\n    system_key : str\n        Key for system annotation\n    batch_key : str\n        Key for within-system batch\n    cell_type_key : str\n        Key for cell type labels (optional)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Integrated AnnData with model\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add system labels and concatenate\n    for system_name, adata in adatas.items():\n        adata.obs[system_key] = system_name\n    \n    adata = sc.concat(list(adatas.values()))\n    \n    # Find common genes\n    for name, ad in adatas.items():\n        if name == list(adatas.keys())[0]:\n            common_genes = set(ad.var_names)\n        else:\n            common_genes = common_genes.intersection(ad.var_names)\n    \n    adata = adata[:, list(common_genes)].copy()\n    print(f\"Common genes: {len(common_genes)}\")\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=system_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup with system as covariate\n    scvi.model.SCVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        batch_key=batch_key if batch_key in adata.obs else None,\n        categorical_covariate_keys=[system_key]\n    )\n    \n    # Train\n    model = scvi.model.SCVI(adata, n_latent=n_latent, n_layers=2)\n    model.train(max_epochs=300, early_stopping=True)\n    \n    # Get representation\n    adata.obsm[\"X_integrated\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_integrated\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"10x_v3\": sc.read_h5ad(\"10x_v3_data.h5ad\"),\n    \"Smart-seq2\": sc.read_h5ad(\"smartseq_data.h5ad\"),\n    \"Drop-seq\": sc.read_h5ad(\"dropseq_data.h5ad\")\n}\n\nadata_integrated, model = integrate_cross_system(adatas)\n\n# Visualize\nsc.pl.umap(adata_integrated, color=[\"system\", \"leiden\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Systems don't mix | Effects too strong | Use more genes, increase n_latent |\n| Over-correction | Model too aggressive | Reduce n_layers, use scANVI |\n| Few common genes | Different platforms | Use gene name mapping |\n| One system dominates | Unbalanced sizes | Subsample larger dataset |\n\n## Key References\n\n- Lopez et al. (2018) \"Deep generative modeling for single-cell transcriptomics\"\n- Luecken et al. (2022) \"Benchmarking atlas-level data integration in single-cell genomics\"\n","bio-research/skills/scvi-tools/references/citeseq_totalvi.md":"# CITE-seq Analysis with totalVI\n\nThis reference covers multi-modal analysis of CITE-seq data (RNA + surface proteins) using totalVI.\n\n## Overview\n\nCITE-seq combines:\n- scRNA-seq (transcriptome)\n- Protein surface markers (antibody-derived tags, ADT)\n\ntotalVI jointly models both modalities to:\n- Integrate across batches\n- Denoise protein signal\n- Learn joint latent representation\n- Enable cross-modal imputation\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\nimport pandas as pd\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load CITE-seq Data\n\n### From 10x Genomics (Cell Ranger)\n\n```python\n# 10x outputs separate gene expression and feature barcoding\nadata_rna = sc.read_10x_h5(\"filtered_feature_bc_matrix.h5\", gex_only=False)\n\n# Separate RNA and protein\nadata_protein = adata_rna[:, adata_rna.var['feature_types'] == 'Antibody Capture'].copy()\nadata_rna = adata_rna[:, adata_rna.var['feature_types'] == 'Gene Expression'].copy()\n\nprint(f\"RNA: {adata_rna.shape}\")\nprint(f\"Protein: {adata_protein.shape}\")\n```\n\n### From MuData\n\n```python\n# If data is in MuData format\nmdata = md.read_h5mu(\"cite_seq.h5mu\")\n\nadata_rna = mdata['rna'].copy()\nadata_protein = mdata['protein'].copy()\n```\n\n### Combine into Single AnnData\n\n```python\n# totalVI expects protein data in obsm\nadata = adata_rna.copy()\n\n# Add protein expression to obsm\nadata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n\n# Store protein names\nadata.uns[\"protein_names\"] = list(adata_protein.var_names)\n```\n\n## Step 2: Quality Control\n\n### RNA QC\n\n```python\n# Standard RNA QC\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n\n# Filter cells\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n```\n\n### Protein QC\n\n```python\n# Protein QC\nprotein_counts = adata.obsm[\"protein_expression\"]\nprint(f\"Protein counts per cell: min={protein_counts.sum(1).min():.0f}, max={protein_counts.sum(1).max():.0f}\")\n\n# Check for isotype controls\n# Isotype controls should have low counts\nprotein_names = adata.uns[\"protein_names\"]\nfor i, name in enumerate(protein_names):\n    if 'isotype' in name.lower() or 'control' in name.lower():\n        print(f\"{name}: mean={protein_counts[:, i].mean():.1f}\")\n```\n\n## Step 3: Data Preparation\n\n### Store Raw Counts\n\n```python\n# Store RNA counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Protein must be raw ADT counts (NOT CLR-normalized)\n# WARNING: If importing from Seurat, ensure you use raw counts, not CLR-normalized data\n# Seurat's NormalizeData(normalization.method = \"CLR\") transforms counts - use the original assay\n```\n\n### HVG Selection for RNA\n\n```python\n# Select HVGs for RNA\n# Note: totalVI uses all proteins regardless of HVG\n\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # Use more for CITE-seq\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata.obs else None,\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n## Step 4: Setup and Train totalVI\n\n```python\n# Setup AnnData for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    protein_expression_obsm_key=\"protein_expression\",\n    batch_key=\"batch\"  # Optional\n)\n\n# Create model\nmodel = scvi.model.TOTALVI(\n    adata,\n    n_latent=20,\n    latent_distribution=\"normal\"  # or \"ln\" for log-normal\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 5: Get Latent Representation\n\n```python\n# Joint latent space\nadata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_totalVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Step 6: Denoised Protein Expression\n\n```python\n# Get denoised protein values\n# This removes background noise from protein measurements\n\n_, protein_denoised = model.get_normalized_expression(\n    return_mean=True,\n    transform_batch=\"batch1\"  # Optional: normalize to specific batch\n)\n\n# Add to adata\nadata.obsm[\"protein_denoised\"] = protein_denoised\n\n# Visualize denoised proteins\nprotein_names = adata.uns[\"protein_names\"]\nfor i, protein in enumerate(protein_names[:5]):\n    adata.obs[f\"denoised_{protein}\"] = protein_denoised[:, i]\n\nsc.pl.umap(adata, color=[f\"denoised_{p}\" for p in protein_names[:5]])\n```\n\n## Step 7: Normalized RNA Expression\n\n```python\n# Get normalized RNA expression\nrna_normalized, _ = model.get_normalized_expression(\n    return_mean=True\n)\n\n# Store\nadata.layers[\"totalVI_normalized\"] = rna_normalized\n```\n\n## Step 8: Differential Expression\n\n### RNA Differential Expression\n\n```python\n# DE between clusters\nde_rna = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Filter significant genes\nde_sig = de_rna[\n    (de_rna['is_de_fdr_0.05']) &\n    (abs(de_rna['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DE genes: {len(de_sig)}\")\n```\n\n### Protein Differential Expression\n\n```python\n# Protein DE\nde_protein = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\",\n    mode=\"protein\"\n)\n\nprint(de_protein.head(20))\n```\n\n## Step 9: Visualization\n\n### Protein Expression on UMAP\n\n```python\n# Denoised protein on UMAP\nimport matplotlib.pyplot as plt\n\nproteins_to_plot = [\"CD3\", \"CD4\", \"CD8\", \"CD19\", \"CD14\"]\n\nfig, axes = plt.subplots(1, len(proteins_to_plot), figsize=(4*len(proteins_to_plot), 4))\nfor ax, protein in zip(axes, proteins_to_plot):\n    idx = adata.uns[\"protein_names\"].index(protein)\n    sc.pl.umap(\n        adata,\n        color=adata.obsm[\"protein_denoised\"][:, idx],\n        ax=ax,\n        title=protein,\n        show=False\n    )\nplt.tight_layout()\n```\n\n### Joint Heatmap\n\n```python\n# Heatmap of top genes and proteins per cluster\nsc.pl.dotplot(\n    adata,\n    var_names=de_sig.index[:20].tolist(),\n    groupby=\"leiden\",\n    layer=\"totalVI_normalized\"\n)\n```\n\n## Step 10: Cell Type Annotation\n\n```python\n# Use both RNA and protein markers for annotation\n\n# RNA markers\nrna_markers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'CD4 T': ['CD4'],\n    'CD8 T': ['CD8A', 'CD8B'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\n# Check denoised protein expression\nfor i, protein in enumerate(adata.uns[\"protein_names\"]):\n    if any(m in protein for m in ['CD3', 'CD4', 'CD8', 'CD19', 'CD14']):\n        print(f\"{protein}: cluster means\")\n        for cluster in adata.obs['leiden'].unique():\n            mask = adata.obs['leiden'] == cluster\n            mean_expr = adata.obsm[\"protein_denoised\"][mask, i].mean()\n            print(f\"  Cluster {cluster}: {mean_expr:.2f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=None,\n    n_top_genes=4000,\n    n_latent=20\n):\n    \"\"\"\n    Complete CITE-seq analysis with totalVI.\n    \n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA expression (raw counts)\n    adata_protein : AnnData\n        Protein expression (raw counts)\n    batch_key : str, optional\n        Batch column in obs\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Ensure same cells\n    common_cells = adata_rna.obs_names.intersection(adata_protein.obs_names)\n    adata = adata_rna[common_cells].copy()\n    adata_protein = adata_protein[common_cells].copy()\n    \n    # Add protein to obsm\n    adata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n    adata.uns[\"protein_names\"] = list(adata_protein.var_names)\n    \n    # RNA QC\n    # Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\n    sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n    adata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n    sc.pp.filter_genes(adata, min_cells=3)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup totalVI\n    scvi.model.TOTALVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        protein_expression_obsm_key=\"protein_expression\",\n        batch_key=batch_key\n    )\n    \n    # Train\n    model = scvi.model.TOTALVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Get representations\n    adata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n    rna_norm, protein_denoised = model.get_normalized_expression(return_mean=True)\n    adata.layers[\"totalVI_normalized\"] = rna_norm\n    adata.obsm[\"protein_denoised\"] = protein_denoised\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_totalVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=\"batch\"\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Protein signal noisy | Background not removed | Use get_normalized_expression with denoising |\n| Batch effects persist | Need batch_key | Ensure batch_key is specified |\n| Memory error | Too many genes | Reduce n_top_genes |\n| Poor protein clustering | Few proteins | Normal - totalVI uses RNA for structure |\n\n## Key References\n\n- Gayoso et al. (2021) \"Joint probabilistic modeling of single-cell multi-omic data with totalVI\"\n","bio-research/skills/scvi-tools/references/data_preparation.md":"# Data Preparation for scvi-tools\n\nThis reference covers how to properly prepare AnnData objects for use with scvi-tools models.\n\n## Overview\n\nProper data preparation is critical for scvi-tools. Key requirements:\n1. **Raw counts** (not normalized)\n2. **Highly variable gene selection**\n3. **Proper setup_anndata() call**\n\n## Step 1: Load and Inspect Data\n\n```python\nimport scanpy as sc\nimport scvi\nimport numpy as np\n\n# Load data\nadata = sc.read_h5ad(\"data.h5ad\")\n\n# Check what's in adata.X\nprint(f\"Shape: {adata.shape}\")\nprint(f\"X dtype: {adata.X.dtype}\")\nprint(f\"X contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\nprint(f\"X min: {adata.X.min()}, max: {adata.X.max()}\")\n```\n\n### Verify Raw Counts\n\n```python\n# scvi-tools needs INTEGER counts\n# If X appears normalized, check for raw counts\n\nif hasattr(adata, 'raw') and adata.raw is not None:\n    print(\"Found adata.raw\")\n    # Use raw counts\n    adata = adata.raw.to_adata()\n    \n# Or check layers\nif 'counts' in adata.layers:\n    print(\"Found counts layer\")\n    # Will specify layer in setup_anndata\n```\n\n## Step 2: Basic Filtering\n\n```python\n# Filter cells (standard QC)\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_cells(adata, max_genes=5000)\n\n# Calculate mito percent if not present\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\nadata.var['mt'] = (\n    adata.var_names.str.startswith('MT-') |\n    adata.var_names.str.startswith('mt-') |\n    adata.var_names.str.startswith('Mt-')\n)\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n\nprint(f\"After filtering: {adata.shape}\")\n```\n\n## Step 3: Store Raw Counts\n\n**Critical**: Always preserve raw counts before any normalization.\n\n```python\n# Store raw counts in a layer\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Now you can normalize for other purposes (HVG selection)\n# But scvi will use the counts layer\n```\n\n## Step 4: Highly Variable Gene Selection\n\nscvi-tools works best with 1,500-5,000 HVGs.\n\n### For Single-Batch Data\n\n```python\n# Normalize for HVG selection only\nadata_hvg = adata.copy()\nsc.pp.normalize_total(adata_hvg, target_sum=1e4)\nsc.pp.log1p(adata_hvg)\n\n# Select HVGs\nsc.pp.highly_variable_genes(\n    adata_hvg,\n    n_top_genes=2000,\n    flavor=\"seurat\"  # or \"cell_ranger\"\n)\n\n# Transfer HVG annotation\nadata.var['highly_variable'] = adata_hvg.var['highly_variable']\n```\n\n### For Multi-Batch Data (Recommended)\n\n```python\n# Use seurat_v3 flavor with batch_key\n# This selects genes variable across batches\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",  # Your batch column\n    layer=\"counts\"      # Use raw counts\n)\n```\n\n### Subset to HVGs\n\n```python\n# Subset to highly variable genes\nadata = adata[:, adata.var['highly_variable']].copy()\nprint(f\"After HVG selection: {adata.shape}\")\n```\n\n## Step 5: Setup AnnData\n\nThe `setup_anndata()` function registers data for the model.\n\n### Basic Setup\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\"  # Specify layer with raw counts\n)\n```\n\n### With Batch Information\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"  # Column in adata.obs\n)\n```\n\n### With Cell Type Labels (for scANVI)\n\n```python\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"  # Column with cell type labels\n)\n```\n\n### With Continuous Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    continuous_covariate_keys=[\"percent_mito\", \"n_genes\"]\n)\n```\n\n### With Categorical Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n```\n\n## Multi-Modal Data Setup\n\n### CITE-seq (for totalVI)\n\n```python\n# Protein data in adata.obsm\n# RNA in adata.X, protein in separate matrix\n\n# Add protein data\nadata.obsm[\"protein_expression\"] = protein_counts  # numpy array\n\n# Setup for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    protein_expression_obsm_key=\"protein_expression\"\n)\n```\n\n### Multiome RNA+ATAC (for MultiVI)\n\n```python\n# RNA and ATAC in separate AnnData objects or MuData\n\nimport mudata as md\n\n# If using MuData\nmdata = md.read(\"multiome.h5mu\")\n\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    protein_layer=None,\n    batch_key=\"batch\",\n    modalities={\"rna\": \"rna\", \"accessibility\": \"atac\"}\n)\n```\n\n## Complete Preparation Pipeline\n\nFor a complete preparation function, use `prepare_adata()` from `scripts/model_utils.py`:\n\n```python\nfrom model_utils import prepare_adata\n\n# Prepare data with QC, HVG selection, and layer setup\nadata = prepare_adata(\n    adata,\n    batch_key=\"batch\",\n    n_top_genes=2000,\n    min_genes=200,\n    max_mito_pct=20\n)\n\n# Then setup for your model\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n```\n\nThis function handles:\n- Mitochondrial QC filtering\n- Cell and gene filtering\n- Storing counts in layer\n- HVG selection (batch-aware if batch_key provided)\n- Subsetting to HVGs\n\n## Checking Setup\n\n```python\n# View registered data\nprint(adata.uns['_scvi_manager_uuid'])\nprint(adata.uns['_scvi_adata_minify_type'])\n\n# For scVI\nscvi.model.SCVI.view_anndata_setup(adata)\n```\n\n## Common Issues and Solutions\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| \"X should contain integers\" | Normalized data in X | Use layer=\"counts\" |\n| \"batch_key not found\" | Wrong column name | Check adata.obs.columns |\n| Sparse matrix errors | Incompatible format | Convert: adata.X = adata.X.toarray() |\n| Memory error | Too many genes | Subset to HVGs first |\n| NaN in data | Missing values | Filter or impute |\n\n## Data Format Reference\n\n### Required\n\n- `adata.X` or `adata.layers[\"counts\"]`: Raw integer counts (sparse OK)\n- `adata.obs`: Cell metadata DataFrame\n- `adata.var`: Gene metadata DataFrame\n\n### Recommended\n\n- `adata.obs[\"batch\"]`: Batch/sample identifiers\n- `adata.var[\"highly_variable\"]`: HVG boolean mask\n\n### For scANVI\n\n- `adata.obs[\"labels\"]`: Cell type annotations\n- Can include \"Unknown\" for unlabeled cells\n","bio-research/skills/scvi-tools/references/environment_setup.md":"# Environment Setup for scvi-tools\n\nThis reference covers installation and environment configuration for scvi-tools.\n\n## Installation Options\n\n### Option 1: Conda Environment (Recommended)\n\n```bash\n# Create environment with GPU support\nconda create -n scvi-env python=3.10\nconda activate scvi-env\n\n# Install scvi-tools\npip install scvi-tools\n\n# For GPU acceleration (recommended for large datasets)\npip install torch --index-url https://download.pytorch.org/whl/cu118\n\n# Common dependencies\npip install scanpy leidenalg\n```\n\n### Option 2: Pip Only\n\n```bash\n# Create virtual environment\npython -m venv scvi-env\nsource scvi-env/bin/activate  # Linux/Mac\n# scvi-env\\Scripts\\activate   # Windows\n\n# Install\npip install scvi-tools scanpy\n```\n\n### Option 3: With Spatial Analysis Support\n\n```bash\nconda create -n scvi-spatial python=3.10\nconda activate scvi-spatial\n\npip install scvi-tools scanpy squidpy\n```\n\n### Option 4: With MuData Support (Multiome)\n\n```bash\npip install scvi-tools mudata muon\n```\n\n## Verify Installation\n\n```python\nimport scvi\nimport torch\nimport scanpy as sc\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scanpy version: {sc.__version__}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"GPU available: {torch.cuda.is_available()}\")\n\nif torch.cuda.is_available():\n    print(f\"GPU device: {torch.cuda.get_device_name(0)}\")\n    print(f\"GPU memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB\")\n```\n\n## GPU Configuration\n\n### Check CUDA Version\n\n```bash\nnvidia-smi\nnvcc --version\n```\n\n### PyTorch CUDA Versions\n\n| CUDA Version | PyTorch Install Command |\n|--------------|------------------------|\n| CUDA 11.8 | `pip install torch --index-url https://download.pytorch.org/whl/cu118` |\n| CUDA 12.1 | `pip install torch --index-url https://download.pytorch.org/whl/cu121` |\n| CPU only | `pip install torch --index-url https://download.pytorch.org/whl/cpu` |\n\n### Memory Management\n\n```python\nimport torch\n\n# Clear GPU cache between models\ntorch.cuda.empty_cache()\n\n# Monitor memory usage\nprint(f\"Allocated: {torch.cuda.memory_allocated() / 1e9:.2f} GB\")\nprint(f\"Cached: {torch.cuda.memory_reserved() / 1e9:.2f} GB\")\n```\n\n## Common Issues\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| `CUDA out of memory` | GPU memory exhausted | Reduce batch_size, use smaller model |\n| `No GPU detected` | CUDA not installed | Install CUDA toolkit matching PyTorch |\n| `Version mismatch` | PyTorch/CUDA incompatibility | Reinstall PyTorch with correct CUDA version |\n| `Import error scvi` | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Jupyter Setup\n\n```bash\n# Install Jupyter kernel\npip install ipykernel\npython -m ipykernel install --user --name scvi-env --display-name \"scvi-tools\"\n\n# For interactive plots\npip install matplotlib seaborn\n```\n\n## Recommended Package Versions\n\nFor reproducibility, pin versions:\n\n```bash\npip install \\\n    scvi-tools>=1.0.0 \\\n    scanpy>=1.9.0 \\\n    anndata>=0.9.0 \\\n    torch>=2.0.0\n```\n\n## Version Compatibility Guide\n\n### scvi-tools 1.x vs 0.x API Changes\n\nThe 1.x release introduced breaking changes. Key differences:\n\n| Operation | 0.x API (deprecated) | 1.x API (current) |\n|-----------|---------------------|-------------------|\n| Setup data | `scvi.data.setup_anndata(adata, ...)` | `scvi.model.SCVI.setup_anndata(adata, ...)` |\n| Register data | `scvi.data.register_tensor_from_anndata(...)` | Built into `setup_anndata` |\n| View setup | `scvi.data.view_anndata_setup(adata)` | `scvi.model.SCVI.view_anndata_setup(adata)` |\n\n### Migration from 0.x to 1.x\n\n```python\n# OLD (0.x) - DEPRECATED\nimport scvi\nscvi.data.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n\n# NEW (1.x) - CURRENT\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n```\n\n### Model-Specific Setup (1.x)\n\nEach model has its own setup method:\n\n```python\n# scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n\n# scANVI\nscvi.model.SCANVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\", labels_key=\"cell_type\")\n\n# totalVI\nscvi.model.TOTALVI.setup_anndata(adata, layer=\"counts\", protein_expression_obsm_key=\"protein\")\n\n# MultiVI (uses MuData)\nscvi.model.MULTIVI.setup_mudata(mdata, rna_layer=\"counts\", atac_layer=\"counts\")\n\n# PeakVI\nscvi.model.PEAKVI.setup_anndata(adata, batch_key=\"batch\")\n\n# veloVI\nscvi.external.VELOVI.setup_anndata(adata, spliced_layer=\"spliced\", unspliced_layer=\"unspliced\")\n```\n\n### Minimum Version Requirements\n\n| Package | Minimum Version | Notes |\n|---------|-----------------|-------|\n| scvi-tools | 1.0.0 | Required for current API |\n| scanpy | 1.9.0 | HVG selection improvements |\n| anndata | 0.9.0 | Improved MuData support |\n| torch | 2.0.0 | Performance improvements |\n| mudata | 0.2.0 | Required for MultiVI |\n| scvelo | 0.2.5 | Required for veloVI |\n\n### Check Your Versions\n\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n\n# Check if using 1.x API\nif hasattr(scvi.model.SCVI, 'setup_anndata'):\n    print(\"Using scvi-tools 1.x API\")\nelse:\n    print(\"WARNING: Using deprecated 0.x API - please upgrade\")\n```\n\n### Known Compatibility Issues\n\n| Issue | Affected Versions | Solution |\n|-------|-------------------|----------|\n| `setup_anndata` not found | scvi-tools < 1.0 | Upgrade to 1.0+ |\n| MuData errors | mudata < 0.2 | `pip install mudata>=0.2.0` |\n| CUDA version mismatch | Any | Reinstall PyTorch for your CUDA |\n| numpy 2.0 issues | Early 2024 builds | `pip install numpy<2.0` |\n\n### Upgrading scvi-tools\n\n```bash\n# Upgrade to latest\npip install --upgrade scvi-tools\n\n# Upgrade all dependencies\npip install --upgrade scvi-tools scanpy anndata torch\n\n# If you have issues, clean install\npip uninstall scvi-tools\npip cache purge\npip install scvi-tools\n```\n\n## Testing Installation\n\n```python\n# Quick test with sample data\nimport scvi\nimport scanpy as sc\n\n# Load test dataset\nadata = scvi.data.heart_cell_atlas_subsampled()\nprint(f\"Loaded test data: {adata.shape}\")\n\n# Setup and create model (quick test)\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"cell_source\")\nmodel = scvi.model.SCVI(adata, n_latent=10)\nprint(\"Model created successfully\")\n\n# Quick training test (1 epoch)\nmodel.train(max_epochs=1)\nprint(\"Training works!\")\n```\n","bio-research/skills/scvi-tools/references/label_transfer.md":"# Label Transfer and Reference Mapping with scANVI\n\nThis reference covers using scANVI for transferring cell type annotations from a reference atlas to query data.\n\n## Overview\n\nReference mapping (also called \"label transfer\") uses a pre-trained model on annotated reference data to predict cell types in new, unannotated query data. This is faster than re-clustering and more consistent across studies.\n\nscANVI excels at this because it:\n- Jointly embeds reference and query in shared space\n- Transfers labels probabilistically\n- Handles batch effects between reference and query\n\n## When to Use Reference Mapping\n\n- Annotating new dataset using existing atlas\n- Consistent annotation across multiple studies\n- Speed: no need to re-cluster and manually annotate\n- Quality: leverage expert-curated reference annotations\n\n## Workflow Options\n\n1. **Train new model**: Train scANVI on reference, then map query\n2. **Use pre-trained model**: Load existing model (e.g., from Model Hub)\n3. **scArches**: Extend existing model with query data (preserves reference)\n\n## Option 1: Train scANVI on Reference\n\n### Step 1: Prepare Reference Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load reference atlas\nadata_ref = sc.read_h5ad(\"reference_atlas.h5ad\")\n\n# Check annotations\nprint(f\"Reference cells: {adata_ref.n_obs}\")\nprint(f\"Cell types: {adata_ref.obs['cell_type'].nunique()}\")\nprint(adata_ref.obs['cell_type'].value_counts())\n\n# Ensure raw counts\nadata_ref.layers[\"counts\"] = adata_ref.raw.X.copy() if adata_ref.raw else adata_ref.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_ref,\n    n_top_genes=3000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata_ref.obs else None,\n    layer=\"counts\"\n)\nadata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n```\n\n### Step 2: Train scANVI on Reference\n\n```python\n# First train scVI (unlabeled)\nscvi.model.SCVI.setup_anndata(\n    adata_ref,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\nscvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\nscvi_ref.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_ref = scvi.model.SCANVI.from_scvi_model(\n    scvi_ref,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"\n)\n\n# Train scANVI\nscanvi_ref.train(max_epochs=50)\n\n# Save for later use\nscanvi_ref.save(\"scanvi_reference_model/\")\n```\n\n### Step 3: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Use same genes as reference\ncommon_genes = adata_ref.var_names.intersection(adata_query.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, adata_ref.var_names].copy()\n\n# Handle missing genes (set to 0)\nmissing_genes = set(adata_ref.var_names) - set(adata_query.var_names)\nif missing_genes:\n    # Add missing genes with zero expression\n    import numpy as np\n    from scipy.sparse import csr_matrix\n    \n    zero_matrix = csr_matrix((adata_query.n_obs, len(missing_genes)))\n    # ... concat and reorder to match reference\n    \n# Store counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n```\n\n### Step 4: Map Query to Reference\n\n```python\n# Prepare query data for mapping\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n\n# Create query model from reference\nscanvi_query = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    scanvi_ref\n)\n\n# Fine-tune on query (optional but recommended)\nscanvi_query.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n\n# Get predictions\nadata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n\n# Get prediction probabilities\nsoft_predictions = scanvi_query.predict(soft=True)\nadata_query.obs[\"prediction_score\"] = soft_predictions.max(axis=1)\n```\n\n### Step 5: Evaluate Predictions\n\n```python\n# Confidence scores\nprint(f\"Mean prediction confidence: {adata_query.obs['prediction_score'].mean():.3f}\")\n\n# Low confidence predictions\nlow_conf = adata_query.obs['prediction_score'] < 0.5\nprint(f\"Low confidence cells: {low_conf.sum()} ({low_conf.mean()*100:.1f}%)\")\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Option 2: Use Pre-Trained Models\n\n### From Model Hub\n\n```python\n# scvi-tools maintains models on HuggingFace\n# Check: https://huggingface.co/scvi-tools\n\n# Example: Load pre-trained model\nfrom huggingface_hub import hf_hub_download\n\nmodel_path = hf_hub_download(\n    repo_id=\"scvi-tools/example-model\",\n    filename=\"model.pt\"\n)\n\n# Load model\nmodel = scvi.model.SCANVI.load(model_path, adata=adata_query)\n```\n\n### From Published Atlas\n\n```python\n# Many atlases provide pre-trained models\n# Example workflow with CellTypist-style model\n\n# Download reference model\n# model = scvi.model.SCANVI.load(\"atlas_model/\", adata=adata_query)\n```\n\n## Option 3: scArches for Incremental Updates\n\nscArches extends a reference model without retraining from scratch:\n\n```python\n# Load existing reference model\nscanvi_ref = scvi.model.SCANVI.load(\"reference_model/\")\n\n# Surgery: prepare for query integration\nscanvi_ref.freeze_layers()\n\n# Map query data\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\nscanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n\n# Train only query-specific parameters\nscanvi_query.train(\n    max_epochs=200,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n## Visualize Reference and Query Together\n\n```python\n# Concatenate for joint visualization\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Get latent representations\nadata_ref.obsm[\"X_scANVI\"] = scanvi_ref.get_latent_representation()\nadata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute combined UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_combined)\n\n# Plot\nsc.pl.umap(\n    adata_combined,\n    color=[\"dataset\", \"cell_type\", \"predicted_cell_type\"],\n    ncols=2\n)\n```\n\n## Quality Control for Predictions\n\n### Confidence Filtering\n\n```python\n# Filter predictions by confidence\nconfidence_threshold = 0.7\n\nhigh_conf = adata_query[adata_query.obs['prediction_score'] >= confidence_threshold].copy()\nlow_conf = adata_query[adata_query.obs['prediction_score'] < confidence_threshold].copy()\n\nprint(f\"High confidence: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\nprint(f\"Low confidence: {len(low_conf)} ({len(low_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n### Marker Validation\n\n```python\n# Validate predictions with known markers\nmarkers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\nfor ct, genes in markers.items():\n    ct_cells = adata_query[adata_query.obs['predicted_cell_type'] == ct]\n    if len(ct_cells) > 0:\n        for gene in genes:\n            if gene in adata_query.var_names:\n                expr = ct_cells[:, gene].X.mean()\n                print(f\"{ct} - {gene}: {expr:.3f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\",\n    batch_key=None,\n    n_top_genes=3000,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Transfer cell type labels from reference to query.\n    \n    Parameters\n    ----------\n    adata_ref : AnnData\n        Annotated reference data\n    adata_query : AnnData\n        Unannotated query data\n    cell_type_key : str\n        Column with cell type annotations in reference\n    batch_key : str, optional\n        Batch column\n    n_top_genes : int\n        Number of HVGs\n    confidence_threshold : float\n        Minimum confidence for predictions\n        \n    Returns\n    -------\n    AnnData with predictions\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Prepare reference\n    adata_ref = adata_ref.copy()\n    adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    \n    sc.pp.highly_variable_genes(\n        adata_ref,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n    \n    # Train reference model\n    scvi.model.SCVI.setup_anndata(adata_ref, layer=\"counts\", batch_key=batch_key)\n    scvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\n    scvi_ref.train(max_epochs=200)\n    \n    scanvi_ref = scvi.model.SCANVI.from_scvi_model(\n        scvi_ref,\n        labels_key=cell_type_key,\n        unlabeled_category=\"Unknown\"\n    )\n    scanvi_ref.train(max_epochs=50)\n    \n    # Prepare query\n    adata_query = adata_query[:, adata_ref.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n    \n    # Map query\n    scvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n    scanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n    scanvi_query.train(max_epochs=100, plan_kwargs={\"weight_decay\": 0.0})\n    \n    # Get predictions\n    adata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n    soft = scanvi_query.predict(soft=True)\n    adata_query.obs[\"prediction_score\"] = soft.max(axis=1)\n    \n    # Mark low confidence\n    adata_query.obs[\"confident_prediction\"] = adata_query.obs[\"prediction_score\"] >= confidence_threshold\n    \n    # Add latent representation\n    adata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n    \n    return adata_query, scanvi_ref, scanvi_query\n\n# Usage\nadata_annotated, ref_model, query_model = transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsc.pp.neighbors(adata_annotated, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_annotated)\nsc.pl.umap(adata_annotated, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Many low-confidence predictions | Query has novel cell types | Manually annotate low-confidence cells |\n| Wrong predictions | Reference doesn't match tissue | Use tissue-appropriate reference |\n| Gene mismatch | Different gene naming | Convert gene IDs |\n| All same prediction | Query too different | Check data quality, try different reference |\n\n## Key References\n\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n","bio-research/skills/scvi-tools/references/multiome_multivi.md":"# Multiome Analysis with MultiVI\n\nThis reference covers joint RNA and ATAC-seq analysis from multiome experiments using MultiVI.\n\n## Overview\n\nMultiVI is a deep generative model for analyzing multiome data (simultaneous RNA-seq and ATAC-seq from the same cells). It:\n- Learns a joint latent representation across modalities\n- Handles missing modalities (RNA-only or ATAC-only cells)\n- Enables batch correction across experiments\n- Supports imputation of missing modalities\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Data Formats\n\n### Option 1: MuData (Recommended)\n\n```python\n# Load multiome data as MuData\nmdata = md.read(\"multiome.h5mu\")\n\n# Structure:\n# mdata.mod['rna']  - AnnData with RNA counts\n# mdata.mod['atac'] - AnnData with ATAC counts\n\nprint(f\"RNA: {mdata.mod['rna'].shape}\")\nprint(f\"ATAC: {mdata.mod['atac'].shape}\")\n```\n\n### Option 2: Separate AnnData Objects\n\n```python\n# Load separately\nadata_rna = sc.read_h5ad(\"rna.h5ad\")\nadata_atac = sc.read_h5ad(\"atac.h5ad\")\n\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n## Step 1: Prepare RNA Data\n\n```python\n# RNA preprocessing (standard scvi-tools pipeline)\nadata_rna = mdata.mod['rna'].copy()\n\n# Filter\nsc.pp.filter_cells(adata_rna, min_genes=200)\nsc.pp.filter_genes(adata_rna, min_cells=3)\n\n# Store counts\nadata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_rna,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\",\n    batch_key=\"batch\"  # If multiple batches\n)\n\n# Subset to HVGs\nadata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n```\n\n## Step 2: Prepare ATAC Data\n\n```python\n# ATAC preprocessing\nadata_atac = mdata.mod['atac'].copy()\n\n# Filter peaks\nsc.pp.filter_genes(adata_atac, min_cells=10)\n\n# Binarize accessibility\nadata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n# Select top accessible peaks (if too many)\nif adata_atac.n_vars > 50000:\n    peak_accessibility = np.array(adata_atac.X.sum(axis=0)).flatten()\n    top_peaks = np.argsort(peak_accessibility)[-50000:]\n    adata_atac = adata_atac[:, top_peaks].copy()\n\n# Store in layer\nadata_atac.layers[\"counts\"] = adata_atac.X.copy()\n```\n\n## Step 3: Create Combined MuData\n\n```python\n# Ensure matching cells\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n\n# Create MuData\nmdata = md.MuData({\n    \"rna\": adata_rna,\n    \"atac\": adata_atac\n})\n\nprint(f\"Combined multiome: {mdata.n_obs} cells\")\nprint(f\"RNA features: {mdata.mod['rna'].n_vars}\")\nprint(f\"ATAC features: {mdata.mod['atac'].n_vars}\")\n```\n\n## Step 4: Setup MultiVI\n\n```python\n# Setup MuData for MultiVI\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    atac_layer=\"counts\",\n    batch_key=\"batch\",  # Optional\n    modalities={\n        \"rna_layer\": \"rna\",\n        \"batch_key\": \"rna\",\n        \"atac_layer\": \"atac\"\n    }\n)\n```\n\n## Step 5: Train MultiVI\n\n```python\n# Create model\nmodel = scvi.model.MULTIVI(\n    mdata,\n    n_latent=20,\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=300,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Joint Representation\n\n```python\n# Latent representation\nlatent = model.get_latent_representation()\n\n# Add to MuData\nmdata.obsm[\"X_MultiVI\"] = latent\n\n# Clustering on joint space\nsc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\nsc.tl.umap(mdata)\nsc.tl.leiden(mdata, resolution=1.0)\n\n# Visualize\nsc.pl.umap(mdata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Modality-Specific Analysis\n\n### Impute Missing Modality\n\n```python\n# Impute RNA expression for ATAC-only cells\n# (Useful when integrating with ATAC-only datasets)\nimputed_rna = model.get_normalized_expression(\n    modality=\"rna\"\n)\n\n# Impute accessibility for RNA-only cells\nimputed_atac = model.get_accessibility_estimates()\n```\n\n### Differential Analysis\n\n```python\n# Differential expression (RNA)\nde_results = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Differential accessibility (ATAC)\nda_results = model.differential_accessibility(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n```\n\n## Handling Partial Data\n\nMultiVI can integrate datasets with only one modality:\n\n```python\n# Dataset 1: Full multiome\n# Dataset 2: RNA only\n# Dataset 3: ATAC only\n\n# Mark missing modalities\nmdata.obs['modality'] = 'paired'  # For cells with both\n# For RNA-only cells, ATAC data should be missing/NaN\n# For ATAC-only cells, RNA data should be missing/NaN\n\n# MultiVI handles this automatically during training\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=None,\n    n_top_genes=4000,\n    n_top_peaks=50000,\n    n_latent=20,\n    max_epochs=300\n):\n    \"\"\"\n    Complete multiome analysis with MultiVI.\n\n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA count data\n    adata_atac : AnnData\n        ATAC peak data\n    batch_key : str, optional\n        Batch column name\n    n_top_genes : int\n        Number of HVGs for RNA\n    n_top_peaks : int\n        Number of top peaks for ATAC\n    n_latent : int\n        Latent dimensions\n    max_epochs : int\n        Maximum training epochs\n\n    Returns\n    -------\n    MuData with joint representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import mudata as md\n    import numpy as np\n\n    # Get common cells\n    common_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\n    adata_rna = adata_rna[common_cells].copy()\n    adata_atac = adata_atac[common_cells].copy()\n\n    # RNA preprocessing\n    sc.pp.filter_genes(adata_rna, min_cells=3)\n    adata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n    if batch_key:\n        sc.pp.highly_variable_genes(\n            adata_rna, n_top_genes=n_top_genes,\n            flavor=\"seurat_v3\", layer=\"counts\", batch_key=batch_key\n        )\n    else:\n        sc.pp.normalize_total(adata_rna, target_sum=1e4)\n        sc.pp.log1p(adata_rna)\n        sc.pp.highly_variable_genes(adata_rna, n_top_genes=n_top_genes)\n        adata_rna.X = adata_rna.layers[\"counts\"].copy()\n\n    adata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n\n    # ATAC preprocessing\n    sc.pp.filter_genes(adata_atac, min_cells=10)\n    adata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n    if adata_atac.n_vars > n_top_peaks:\n        peak_acc = np.array(adata_atac.X.sum(axis=0)).flatten()\n        top_idx = np.argsort(peak_acc)[-n_top_peaks:]\n        adata_atac = adata_atac[:, top_idx].copy()\n\n    adata_atac.layers[\"counts\"] = adata_atac.X.copy()\n\n    # Create MuData\n    mdata = md.MuData({\"rna\": adata_rna, \"atac\": adata_atac})\n\n    # Setup and train\n    scvi.model.MULTIVI.setup_mudata(\n        mdata,\n        rna_layer=\"counts\",\n        atac_layer=\"counts\",\n        batch_key=batch_key,\n        modalities={\"rna_layer\": \"rna\", \"batch_key\": \"rna\", \"atac_layer\": \"atac\"}\n    )\n\n    model = scvi.model.MULTIVI(mdata, n_latent=n_latent)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n\n    # Add representation\n    mdata.obsm[\"X_MultiVI\"] = model.get_latent_representation()\n\n    # Cluster\n    sc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\n    sc.tl.umap(mdata)\n    sc.tl.leiden(mdata)\n\n    return mdata, model\n\n\n# Usage\nmdata, model = analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=\"sample\"\n)\n\nsc.pl.umap(mdata, color=['leiden', 'sample'])\n```\n\n## Peak-to-Gene Linking\n\n```python\n# Link ATAC peaks to genes based on correlation in latent space\n# This identifies regulatory relationships\n\ndef link_peaks_to_genes(model, mdata, distance_threshold=100000):\n    \"\"\"\n    Link peaks to nearby genes based on correlation.\n\n    Parameters\n    ----------\n    model : MULTIVI\n        Trained model\n    mdata : MuData\n        Multiome data\n    distance_threshold : int\n        Maximum distance (bp) to link peak to gene\n\n    Returns\n    -------\n    DataFrame of peak-gene links\n    \"\"\"\n    # Get imputed values\n    rna_imputed = model.get_normalized_expression()\n    atac_imputed = model.get_accessibility_estimates()\n\n    # Correlate peak accessibility with gene expression\n    # for peaks near gene promoters\n    # ... (requires genomic coordinates)\n\n    return peak_gene_links\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Different cell counts | Cells missing in one modality | Use common cells only |\n| Training instability | Imbalanced modalities | Normalize feature counts |\n| Poor clustering | Too few features | Increase n_top_genes/peaks |\n| Memory error | Large ATAC matrix | Reduce peak count, use sparse |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n\n## Key References\n\n- Ashuach et al. (2023) \"MultiVI: deep generative model for the integration of multimodal data\"\n","bio-research/skills/scvi-tools/references/rna_velocity_velovi.md":"# RNA Velocity with veloVI\n\nThis reference covers RNA velocity analysis using veloVI, a deep learning approach that improves upon traditional velocity methods.\n\n## Overview\n\nRNA velocity estimates the future state of cells by modeling:\n- **Unspliced RNA**: Newly transcribed, contains introns\n- **Spliced RNA**: Mature mRNA, introns removed\n\nThe ratio of unspliced to spliced indicates whether a gene is being upregulated or downregulated.\n\n## Why veloVI?\n\nTraditional methods (velocyto, scVelo) have limitations:\n- Assume steady-state or dynamical model\n- Sensitive to noise\n- Don't handle batch effects\n\nveloVI addresses these with:\n- Probabilistic modeling\n- Better uncertainty quantification\n- Integration with scVI framework\n\n## Prerequisites\n\n```python\nimport scvi\nimport scvelo as scv\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scvelo version: {scv.__version__}\")\n```\n\n## Step 1: Generate Spliced/Unspliced Counts\n\n### From BAM Files (velocyto)\n\n```bash\n# Run velocyto on Cell Ranger output\nvelocyto run10x /path/to/cellranger_output /path/to/genes.gtf\n\n# Output: velocyto.loom file with spliced/unspliced layers\n```\n\n### From kb-python (kallisto|bustools)\n\n```bash\n# Faster alternative using kallisto\nkb count \\\n    --workflow lamanno \\\n    -i index.idx \\\n    -g t2g.txt \\\n    -c1 spliced_t2c.txt \\\n    -c2 unspliced_t2c.txt \\\n    -x 10xv3 \\\n    -o output \\\n    R1.fastq.gz R2.fastq.gz\n```\n\n## Step 2: Load Velocity Data\n\n```python\n# Load loom file from velocyto\nadata = scv.read(\"velocyto_output.loom\")\n\n# Or load from kb-python\nadata = sc.read_h5ad(\"adata.h5ad\")\n# Spliced in adata.layers[\"spliced\"]\n# Unspliced in adata.layers[\"unspliced\"]\n\n# Check layers\nprint(\"Available layers:\", list(adata.layers.keys()))\nprint(f\"Spliced shape: {adata.layers['spliced'].shape}\")\nprint(f\"Unspliced shape: {adata.layers['unspliced'].shape}\")\n```\n\n### Merge with Existing AnnData\n\n```python\n# If you have separate loom and h5ad\nldata = scv.read(\"velocyto.loom\")\nadata = sc.read_h5ad(\"processed.h5ad\")\n\n# Merge velocity data into processed adata\nadata = scv.utils.merge(adata, ldata)\n```\n\n## Step 3: Preprocessing for Velocity\n\n```python\n# Filter and normalize\nscv.pp.filter_and_normalize(\n    adata,\n    min_shared_counts=20,\n    n_top_genes=2000\n)\n\n# Compute moments (for scVelo comparison)\nscv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n```\n\n## Step 4: Run veloVI\n\n### Setup AnnData\n\n```python\n# Setup for veloVI\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\"\n)\n```\n\n### Train Model\n\n```python\n# Create and train veloVI model\nvae = scvi.model.VELOVI(adata)\n\nvae.train(\n    max_epochs=500,\n    early_stopping=True,\n    batch_size=256\n)\n\n# Check training\nvae.history[\"elbo_train\"].plot()\n```\n\n### Get Velocity Estimates\n\n```python\n# Get latent time\nlatent_time = vae.get_latent_time(n_samples=25)\nadata.obs[\"veloVI_latent_time\"] = latent_time\n\n# Get velocity\nvelocities = vae.get_velocity(n_samples=25)\nadata.layers[\"veloVI_velocity\"] = velocities\n\n# Get expression states\nadata.layers[\"veloVI_expression\"] = vae.get_expression_fit(n_samples=25)\n```\n\n## Step 5: Visualize Velocity\n\n### Velocity Streamlines\n\n```python\n# Compute velocity graph\nscv.tl.velocity_graph(adata, vkey=\"veloVI_velocity\")\n\n# Plot streamlines on UMAP\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    color=\"cell_type\"\n)\n```\n\n### Velocity Arrows\n\n```python\n# Individual cell arrows\nscv.pl.velocity_embedding(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    arrow_length=3,\n    arrow_size=2,\n    color=\"cell_type\"\n)\n```\n\n### Latent Time\n\n```python\n# Plot latent time (pseudotime from velocity)\nsc.pl.umap(adata, color=\"veloVI_latent_time\", cmap=\"viridis\")\n```\n\n## Step 6: Compare with scVelo\n\n```python\n# Run standard scVelo for comparison\nscv.tl.velocity(adata, mode=\"dynamical\")\nscv.tl.velocity_graph(adata)\n\n# Compare velocity fields\nfig, axes = plt.subplots(1, 2, figsize=(12, 5))\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", ax=axes[0], \n    title=\"scVelo\", show=False\n)\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", vkey=\"veloVI_velocity\",\n    ax=axes[1], title=\"veloVI\", show=False\n)\n\nplt.tight_layout()\n```\n\n## Step 7: Gene-Level Analysis\n\n### Velocity Phase Portraits\n\n```python\n# Plot phase portrait for specific genes\ngenes = [\"SOX2\", \"PAX6\", \"DCX\", \"NEUROD1\"]\n\nscv.pl.velocity(\n    adata,\n    var_names=genes,\n    vkey=\"veloVI_velocity\",\n    colorbar=True\n)\n```\n\n### Gene Dynamics\n\n```python\n# Plot expression over latent time\nfor gene in genes:\n    fig, ax = plt.subplots(figsize=(6, 4))\n    \n    sc.pl.scatter(\n        adata,\n        x=\"veloVI_latent_time\",\n        y=gene,\n        color=\"cell_type\",\n        ax=ax,\n        show=False\n    )\n    ax.set_xlabel(\"Latent Time\")\n    ax.set_ylabel(f\"{gene} Expression\")\n```\n\n### Driver Genes\n\n```python\n# Find genes driving velocity\nscv.tl.rank_velocity_genes(\n    adata,\n    vkey=\"veloVI_velocity\",\n    groupby=\"cell_type\"\n)\n\n# Get top genes per cluster\ndf = scv.get_df(adata, \"rank_velocity_genes/names\")\nprint(df.head(10))\n```\n\n## Step 8: Uncertainty Quantification\n\nveloVI provides uncertainty estimates:\n\n```python\n# Get velocity with uncertainty\nvelocity_mean, velocity_std = vae.get_velocity(\n    n_samples=100,\n    return_mean=True,\n    return_numpy=True\n)\n\n# Store uncertainty\nadata.layers[\"velocity_uncertainty\"] = velocity_std\n\n# Visualize uncertainty\nadata.obs[\"mean_velocity_uncertainty\"] = velocity_std.mean(axis=1)\nsc.pl.umap(adata, color=\"mean_velocity_uncertainty\")\n```\n\n## Complete Pipeline\n\n```python\ndef run_velocity_analysis(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    n_top_genes=2000,\n    max_epochs=500\n):\n    \"\"\"\n    Complete RNA velocity analysis with veloVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Data with spliced/unspliced layers\n    spliced_layer : str\n        Layer name for spliced counts\n    unspliced_layer : str\n        Layer name for unspliced counts\n    n_top_genes : int\n        Number of velocity genes\n    max_epochs : int\n        Training epochs\n        \n    Returns\n    -------\n    AnnData with velocity and model\n    \"\"\"\n    import scvi\n    import scvelo as scv\n    import scanpy as sc\n    \n    adata = adata.copy()\n    \n    # Preprocessing\n    scv.pp.filter_and_normalize(\n        adata,\n        min_shared_counts=20,\n        n_top_genes=n_top_genes\n    )\n    \n    # Compute moments (needed for some visualizations)\n    scv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n    \n    # Setup veloVI\n    scvi.model.VELOVI.setup_anndata(\n        adata,\n        spliced_layer=spliced_layer,\n        unspliced_layer=unspliced_layer\n    )\n    \n    # Train\n    model = scvi.model.VELOVI(adata)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n    \n    # Get results\n    adata.obs[\"latent_time\"] = model.get_latent_time(n_samples=25)\n    adata.layers[\"velocity\"] = model.get_velocity(n_samples=25)\n    \n    # Compute velocity graph for visualization\n    scv.tl.velocity_graph(adata, vkey=\"velocity\")\n    \n    # Compute UMAP if not present\n    if \"X_umap\" not in adata.obsm:\n        sc.pp.neighbors(adata)\n        sc.tl.umap(adata)\n    \n    return adata, model\n\n# Usage\nadata_velocity, model = run_velocity_analysis(adata)\n\n# Visualize\nscv.pl.velocity_embedding_stream(\n    adata_velocity,\n    basis=\"umap\",\n    vkey=\"velocity\",\n    color=\"cell_type\"\n)\n\nsc.pl.umap(adata_velocity, color=\"latent_time\")\n```\n\n## Advanced: Batch-Aware Velocity\n\n```python\n# For multi-batch data, include batch in model\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    batch_key=\"batch\"\n)\n\nmodel = scvi.model.VELOVI(adata)\nmodel.train()\n```\n\n## Interpreting Results\n\n### Good Velocity Signal\n\n- Streamlines follow expected differentiation\n- Latent time correlates with known biology\n- Phase portraits show clear dynamics\n\n### Poor Velocity Signal\n\n- Random/chaotic streamlines\n- No correlation with known markers\n- May indicate:\n  - Insufficient unspliced reads\n  - Cells at steady state\n  - Technical issues\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| No velocity signal | Low unspliced counts | Check sequencing depth, use kb-python |\n| Reversed direction | Wrong root assignment | Manually set root cells |\n| Noisy streamlines | Too many genes | Reduce n_top_genes |\n| Memory error | Large dataset | Reduce batch_size |\n\n## Key References\n\n- Gayoso et al. (2023) \"Deep generative modeling of transcriptional dynamics for RNA velocity analysis in single cells\"\n- La Manno et al. (2018) \"RNA velocity of single cells\"\n- Bergen et al. (2020) \"Generalizing RNA velocity to transient cell states through dynamical modeling\"\n","bio-research/skills/scvi-tools/references/scarches_mapping.md":"# Reference Mapping with scArches\n\nThis reference covers using scArches for mapping query data to pre-trained reference models without retraining from scratch.\n\n## Overview\n\nscArches (single-cell architecture surgery) enables:\n- Mapping new data to existing reference atlases\n- Extending models with new batches/studies\n- Transfer learning without full retraining\n- Preserving reference structure while integrating query\n\n## When to Use scArches\n\n| Scenario | Approach |\n|----------|----------|\n| Map query to existing atlas | scArches query mapping |\n| Extend atlas with new data | scArches model surgery |\n| No pre-trained model available | Train scANVI from scratch |\n| Query very different from reference | Consider retraining |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Workflow 1: Map Query to Pre-Trained Reference\n\n### Step 1: Load Pre-Trained Reference Model\n\n```python\n# Load saved reference model\n# The model must have been trained with scvi-tools\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Or load scANVI for label transfer\nreference_model = scvi.model.SCANVI.load(\"reference_scanvi_model/\")\n\n# Check model info\nprint(f\"Model type: {type(reference_model)}\")\nprint(f\"Training data shape: {reference_model.adata.shape}\")\n```\n\n### Step 2: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Match genes to reference\nreference_genes = reference_model.adata.var_names\nquery_genes = adata_query.var_names\n\n# Check overlap\ncommon_genes = reference_genes.intersection(query_genes)\nprint(f\"Reference genes: {len(reference_genes)}\")\nprint(f\"Query genes: {len(query_genes)}\")\nprint(f\"Overlap: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, reference_genes].copy()\n\n# Handle missing genes (filled with zeros automatically by prepare_query_anndata)\n```\n\n### Step 3: Prepare Query AnnData\n\n```python\n# Store raw counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n\n# Prepare query for mapping\n# This aligns the query data structure to match the reference\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\n```\n\n### Step 4: Create Query Model\n\n```python\n# Create query model from reference\n# This initializes with reference weights\nquery_model = scvi.model.SCVI.load_query_data(\n    adata_query,\n    reference_model\n)\n\n# The query model inherits:\n# - Reference architecture\n# - Reference encoder weights (frozen by default)\n# - Decoder is fine-tuned for query\n```\n\n### Step 5: Fine-Tune on Query\n\n```python\n# Fine-tune the query model\n# This adjusts decoder weights for query-specific effects\nquery_model.train(\n    max_epochs=200,\n    plan_kwargs={\n        \"weight_decay\": 0.0  # Less regularization for fine-tuning\n    }\n)\n\n# Check training\nquery_model.history['elbo_train'].plot()\n```\n\n### Step 6: Get Query Representation\n\n```python\n# Get latent representation\n# Query cells are embedded in same space as reference\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['cell_type', 'batch'])\n```\n\n## Workflow 2: scANVI Query Mapping with Label Transfer\n\nFor transferring cell type labels from reference to query:\n\n### Step 1: Load scANVI Reference\n\n```python\n# Reference must be scANVI model (trained with labels)\nreference_scanvi = scvi.model.SCANVI.load(\"scanvi_reference/\")\n\n# Check available labels\nprint(\"Reference cell types:\")\nprint(reference_scanvi.adata.obs['cell_type'].value_counts())\n```\n\n### Step 2: Prepare and Map Query\n\n```python\n# Prepare query\nadata_query.layers[\"counts\"] = adata_query.X.copy()\nadata_query = adata_query[:, reference_scanvi.adata.var_names].copy()\n\nscvi.model.SCANVI.prepare_query_anndata(adata_query, reference_scanvi)\n\n# Create query model\nquery_scanvi = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    reference_scanvi\n)\n\n# Fine-tune\nquery_scanvi.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n### Step 3: Get Predictions\n\n```python\n# Predict cell types\npredictions = query_scanvi.predict()\nadata_query.obs[\"predicted_cell_type\"] = predictions\n\n# Get prediction probabilities\nsoft_predictions = query_scanvi.predict(soft=True)\nadata_query.obs[\"prediction_confidence\"] = soft_predictions.max(axis=1)\n\n# Latent representation\nadata_query.obsm[\"X_scANVI\"] = query_scanvi.get_latent_representation()\n\n# Visualize predictions\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n### Step 4: Evaluate Predictions\n\n```python\n# Distribution of predictions\nprint(adata_query.obs['predicted_cell_type'].value_counts())\n\n# Confidence statistics\nprint(f\"Mean confidence: {adata_query.obs['prediction_confidence'].mean():.3f}\")\nprint(f\"Low confidence (<0.5): {(adata_query.obs['prediction_confidence'] < 0.5).sum()}\")\n\n# Filter low-confidence predictions\nhigh_conf = adata_query[adata_query.obs['prediction_confidence'] >= 0.7].copy()\nprint(f\"High confidence cells: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n## Workflow 3: Model Surgery (Extending Reference)\n\nExtend an existing reference model with new data:\n\n### Step 1: Freeze Reference Layers\n\n```python\n# Load reference model\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Get reference representation (before surgery)\nadata_ref = reference_model.adata\nadata_ref.obsm[\"X_scVI_before\"] = reference_model.get_latent_representation()\n```\n\n### Step 2: Prepare Combined Data\n\n```python\n# Add batch information\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\nadata_combined.layers[\"counts\"] = adata_combined.X.copy()\n```\n\n### Step 3: Surgery Approach\n\n```python\n# Option A: Use load_query_data (recommended)\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\nextended_model = scvi.model.SCVI.load_query_data(adata_query, reference_model)\nextended_model.train(max_epochs=200)\n\n# Option B: Retrain with combined data (if query is large)\n# This doesn't preserve reference exactly but may give better results\nscvi.model.SCVI.setup_anndata(\n    adata_combined,\n    layer=\"counts\",\n    batch_key=\"dataset\"\n)\nnew_model = scvi.model.SCVI(adata_combined, n_latent=30)\nnew_model.train(max_epochs=200)\n```\n\n## Joint Visualization\n\nVisualize reference and query together:\n\n```python\n# Get latent representations\nadata_ref.obsm[\"X_scVI\"] = reference_model.get_latent_representation()\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Combine for visualization\nadata_ref.obs[\"source\"] = \"reference\"\nadata_query.obs[\"source\"] = \"query\"\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute joint UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scVI\")\nsc.tl.umap(adata_combined)\n\n# Visualize\nimport matplotlib.pyplot as plt\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\nsc.pl.umap(adata_combined, color=\"source\", ax=axes[0], show=False, title=\"Source\")\nsc.pl.umap(adata_combined, color=\"cell_type\", ax=axes[1], show=False, title=\"Cell Type\")\nsc.pl.umap(adata_combined, color=\"batch\", ax=axes[2], show=False, title=\"Batch\")\n\nplt.tight_layout()\n```\n\n## Using Public Atlas Models\n\n### From HuggingFace Model Hub\n\n```python\nfrom huggingface_hub import hf_hub_download\n\n# Download model files\nmodel_dir = hf_hub_download(\n    repo_id=\"scvi-tools/model-name\",  # Replace with actual repo\n    filename=\"model.pt\",\n    local_dir=\"./downloaded_model/\"\n)\n\n# Load model\natlas_model = scvi.model.SCANVI.load(model_dir)\n```\n\n### From CellxGene\n\n```python\n# Many CellxGene datasets provide pre-trained models\n# Check dataset documentation for model availability\n# https://cellxgene.cziscience.com/\n\n# Example workflow:\n# 1. Download reference dataset and model\n# 2. Load model: model = scvi.model.SCANVI.load(\"cellxgene_model/\")\n# 3. Map your query data using steps above\n```\n\n## Complete Pipeline\n\n```python\ndef map_query_to_reference(\n    adata_query,\n    reference_model_path,\n    model_type=\"scanvi\",\n    max_epochs=100,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Map query data to pre-trained reference model.\n\n    Parameters\n    ----------\n    adata_query : AnnData\n        Query data with raw counts\n    reference_model_path : str\n        Path to saved reference model\n    model_type : str\n        \"scvi\" or \"scanvi\"\n    max_epochs : int\n        Fine-tuning epochs\n    confidence_threshold : float\n        Minimum prediction confidence (for scANVI)\n\n    Returns\n    -------\n    Mapped AnnData with predictions (if scANVI)\n    \"\"\"\n    import scvi\n\n    # Load reference\n    if model_type == \"scanvi\":\n        reference_model = scvi.model.SCANVI.load(reference_model_path)\n        ModelClass = scvi.model.SCANVI\n    else:\n        reference_model = scvi.model.SCVI.load(reference_model_path)\n        ModelClass = scvi.model.SCVI\n\n    # Prepare query\n    adata_query = adata_query.copy()\n    adata_query = adata_query[:, reference_model.adata.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n\n    # Map query\n    ModelClass.prepare_query_anndata(adata_query, reference_model)\n    query_model = ModelClass.load_query_data(adata_query, reference_model)\n\n    # Fine-tune\n    query_model.train(\n        max_epochs=max_epochs,\n        plan_kwargs={\"weight_decay\": 0.0}\n    )\n\n    # Get results\n    rep_key = \"X_scANVI\" if model_type == \"scanvi\" else \"X_scVI\"\n    adata_query.obsm[rep_key] = query_model.get_latent_representation()\n\n    if model_type == \"scanvi\":\n        adata_query.obs[\"predicted_cell_type\"] = query_model.predict()\n        soft = query_model.predict(soft=True)\n        adata_query.obs[\"prediction_confidence\"] = soft.max(axis=1)\n        adata_query.obs[\"confident\"] = adata_query.obs[\"prediction_confidence\"] >= confidence_threshold\n\n    # Compute UMAP\n    sc.pp.neighbors(adata_query, use_rep=rep_key)\n    sc.tl.umap(adata_query)\n\n    return adata_query, query_model\n\n\n# Usage\nadata_mapped, model = map_query_to_reference(\n    adata_query,\n    \"reference_scanvi_model/\",\n    model_type=\"scanvi\"\n)\n\n# Visualize\nsc.pl.umap(adata_mapped, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Gene mismatch | Different gene naming | Convert gene IDs (Ensembl ↔ Symbol) |\n| Many low-confidence | Query has novel types | Manually annotate low-confidence cells |\n| Poor mapping | Query too different | Consider retraining with combined data |\n| Memory error | Large query | Process in batches |\n| Version mismatch | Different scvi-tools version | Use same version as reference training |\n\n## Key References\n\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n","bio-research/skills/scvi-tools/references/scrna_integration.md":"# scRNA-seq Integration with scVI and scANVI\n\nThis reference covers batch correction and dataset integration using scVI (unsupervised) and scANVI (semi-supervised with cell type labels).\n\n## Overview\n\nSingle-cell datasets often have batch effects from:\n- Different donors/patients\n- Different experimental batches\n- Different technologies (10x v2 vs v3)\n- Different studies\n\nscVI and scANVI learn a shared latent space where batch effects are removed while biological variation is preserved.\n\n## When to Use Which Model\n\n| Model | Use When | Labels Needed |\n|-------|----------|---------------|\n| **scVI** | No labels available, exploratory analysis | No |\n| **scANVI** | Have partial/full labels, want better preservation | Yes (partial OK) |\n\n## scVI Integration Workflow\n\n### Step 1: Prepare Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load datasets\nadata1 = sc.read_h5ad(\"dataset1.h5ad\")\nadata2 = sc.read_h5ad(\"dataset2.h5ad\")\n\n# Add batch annotation\nadata1.obs[\"batch\"] = \"batch1\"\nadata2.obs[\"batch\"] = \"batch2\"\n\n# Concatenate\nadata = sc.concat([adata1, adata2], label=\"batch\")\n\n# Ensure we have raw counts\n# If data is normalized, recover from .raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection Across Batches\n\n```python\n# Select HVGs considering batch\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train scVI\n\n```python\n# Register data with scVI\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\n# Create model\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,          # Latent dimensions\n    n_layers=2,           # Encoder/decoder depth\n    gene_likelihood=\"nb\"  # negative binomial (or \"zinb\")\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Plot training history\nmodel.history[\"elbo_train\"].plot()\n```\n\n### Step 4: Get Integrated Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_scVI\"] = model.get_latent_representation()\n\n# Use for clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_scVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\n# Visualize integration\nsc.pl.umap(adata, color=[\"batch\", \"leiden\"], ncols=2)\n```\n\n### Step 5: Save Model\n\n```python\n# Save model for later use\nmodel.save(\"scvi_model/\")\n\n# Load model\nmodel = scvi.model.SCVI.load(\"scvi_model/\", adata=adata)\n```\n\n## scANVI Integration Workflow\n\nscANVI extends scVI with cell type labels for better biological preservation.\n\n### Step 1: Prepare Data with Labels\n\n```python\n# Labels should be in adata.obs\n# Use \"Unknown\" for unlabeled cells\nprint(adata.obs[\"cell_type\"].value_counts())\n\n# For partially labeled data\n# Mark unlabeled cells\nadata.obs[\"cell_type_scanvi\"] = adata.obs[\"cell_type\"].copy()\n# adata.obs.loc[unlabeled_mask, \"cell_type_scanvi\"] = \"Unknown\"\n```\n\n### Step 2: Option A - Train scANVI from Scratch\n\n```python\n# Setup for scANVI\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"\n)\n\n# Create model\nscanvi_model = scvi.model.SCANVI(\n    adata,\n    n_latent=30,\n    n_layers=2\n)\n\n# Train\nscanvi_model.train(max_epochs=200)\n```\n\n### Step 2: Option B - Initialize scANVI from scVI (Recommended)\n\n```python\n# First train scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nscvi_model = scvi.model.SCVI(adata, n_latent=30)\nscvi_model.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_model = scvi.model.SCANVI.from_scvi_model(\n    scvi_model,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"  # For partially labeled data\n)\n\n# Fine-tune scANVI (fewer epochs needed)\nscanvi_model.train(max_epochs=50)\n```\n\n### Step 3: Get Results\n\n```python\n# Latent representation\nadata.obsm[\"X_scANVI\"] = scanvi_model.get_latent_representation()\n\n# Predicted labels for unlabeled cells\npredictions = scanvi_model.predict()\nadata.obs[\"predicted_cell_type\"] = predictions\n\n# Prediction probabilities\nsoft_predictions = scanvi_model.predict(soft=True)\n\n# Visualization\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=[\"batch\", \"cell_type\", \"predicted_cell_type\"])\n```\n\n## Comparing Integration Quality\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Before integration (on PCA)\nsc.pp.pca(adata)\nsc.pl.pca(adata, color=\"batch\", ax=axes[0], title=\"Before (PCA)\", show=False)\n\n# After scVI\nsc.pp.neighbors(adata, use_rep=\"X_scVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[1], title=\"After scVI\", show=False)\n\n# After scANVI\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[2], title=\"After scANVI\", show=False)\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics (scib)\n\n```python\n# pip install scib-metrics\n\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"batch\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_pca\", \"X_scVI\", \"X_scANVI\"]\n)\n\nbm.benchmark()\nbm.plot_results_table()\n```\n\n## Differential Expression\n\nscVI provides differential expression that accounts for batch effects:\n\n```python\n# DE between groups\nde_results = model.differential_expression(\n    groupby=\"cell_type\",\n    group1=\"T cells\",\n    group2=\"B cells\"\n)\n\n# Filter significant\nde_sig = de_results[\n    (de_results[\"is_de_fdr_0.05\"] == True) &\n    (abs(de_results[\"lfc_mean\"]) > 1)\n]\n\nprint(de_sig.head(20))\n```\n\n## Advanced: Multiple Categorical Covariates\n\n```python\n# Include additional covariates beyond batch\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Training Tips\n\n### For Large Datasets (>100k cells)\n\n```python\nmodel.train(\n    max_epochs=100,      # Fewer epochs needed\n    batch_size=256,      # Larger batches\n    train_size=0.9,      # Less validation\n    early_stopping=True\n)\n```\n\n### For Small Datasets (<10k cells)\n\n```python\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,         # Smaller latent space\n    n_layers=1,          # Simpler model\n    dropout_rate=0.2     # More regularization\n)\n\nmodel.train(\n    max_epochs=400,\n    batch_size=64\n)\n```\n\n### Monitoring Training\n\n```python\n# Check training curves\nimport matplotlib.pyplot as plt\n\nfig, ax = plt.subplots()\nax.plot(model.history[\"elbo_train\"], label=\"Train\")\nax.plot(model.history[\"elbo_validation\"], label=\"Validation\")\nax.set_xlabel(\"Epoch\")\nax.set_ylabel(\"ELBO\")\nax.legend()\n\n# Should see convergence without overfitting\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_datasets(\n    adatas,\n    batch_key=\"batch\",\n    labels_key=None,\n    n_top_genes=2000,\n    n_latent=30\n):\n    \"\"\"\n    Integrate multiple scRNA-seq datasets.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {batch_name: AnnData}\n    batch_key : str\n        Key for batch annotation\n    labels_key : str, optional\n        Key for cell type labels (uses scANVI if provided)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    AnnData with integrated representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add batch labels and concatenate\n    for batch_name, adata in adatas.items():\n        adata.obs[batch_key] = batch_name\n    \n    adata = sc.concat(list(adatas.values()), label=batch_key)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Train model\n    if labels_key and labels_key in adata.obs.columns:\n        # Use scANVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        scvi_model = scvi.model.SCVI(adata, n_latent=n_latent)\n        scvi_model.train(max_epochs=200)\n        \n        model = scvi.model.SCANVI.from_scvi_model(\n            scvi_model,\n            labels_key=labels_key,\n            unlabeled_category=\"Unknown\"\n        )\n        model.train(max_epochs=50)\n        rep_key = \"X_scANVI\"\n    else:\n        # Use scVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        model = scvi.model.SCVI(adata, n_latent=n_latent)\n        model.train(max_epochs=200)\n        rep_key = \"X_scVI\"\n    \n    # Add representation\n    adata.obsm[rep_key] = model.get_latent_representation()\n    \n    # Compute neighbors and UMAP\n    sc.pp.neighbors(adata, use_rep=rep_key)\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"study1\": sc.read_h5ad(\"study1.h5ad\"),\n    \"study2\": sc.read_h5ad(\"study2.h5ad\"),\n    \"study3\": sc.read_h5ad(\"study3.h5ad\")\n}\n\nadata_integrated, model = integrate_datasets(\n    adatas,\n    labels_key=\"cell_type\"\n)\n\nsc.pl.umap(adata_integrated, color=[\"batch\", \"leiden\", \"cell_type\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Batches not mixing | Too few shared genes | Use more HVGs, check gene overlap |\n| Over-correction | Biological variation removed | Use scANVI with labels |\n| Training diverges | Learning rate too high | Reduce lr, increase batch_size |\n| NaN loss | Bad data | Check for all-zero cells/genes |\n| Memory error | Too many cells | Reduce batch_size, use GPU |\n","bio-research/skills/scvi-tools/references/spatial_deconvolution.md":"# Spatial Transcriptomics Analysis\n\nThis reference covers spatial transcriptomics analysis using scvi-tools methods: DestVI for deconvolution and resolVI for building spatial models.\n\n## Overview\n\nSpatial transcriptomics technologies like Visium capture gene expression at defined spatial locations, but many platforms have multi-cellular resolution. scvi-tools provides two main approaches:\n\n- **DestVI**: Deconvolution - estimates cell type proportions at each spot using a single-cell reference\n- **resolVI**: Builds a spatial model that learns gene expression patterns accounting for spatial context\n\n## Available Methods in scvi-tools\n\n| Method | Description | Use Case |\n|--------|-------------|----------|\n| **DestVI** | Variational inference for deconvolution | Estimate cell type proportions per spot |\n| **resolVI** | Spatial gene expression model | Learn spatially-aware representations |\n| **CondSCVI** | Reference model for DestVI | Required for DestVI workflow |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport squidpy as sq\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n---\n\n## Part 1: DestVI Deconvolution\n\n### Step 1: Load Spatial Data\n\n```python\n# Load Visium data\nadata_spatial = sc.read_visium(\"spaceranger_output/\")\n\n# Check structure\nprint(f\"Spots: {adata_spatial.n_obs}\")\nprint(f\"Genes: {adata_spatial.n_vars}\")\nprint(f\"Spatial coordinates: {adata_spatial.obsm['spatial'].shape}\")\n\n# Basic QC\nsc.pp.calculate_qc_metrics(adata_spatial, inplace=True)\nadata_spatial = adata_spatial[adata_spatial.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n```\n\n### Step 2: Load Single-Cell Reference\n\n```python\n# Load reference single-cell data\nadata_sc = sc.read_h5ad(\"reference_scrna.h5ad\")\n\n# Requirements:\n# - Raw counts\n# - Cell type annotations\nprint(f\"Reference cells: {adata_sc.n_obs}\")\nprint(f\"Cell types: {adata_sc.obs['cell_type'].nunique()}\")\nprint(adata_sc.obs['cell_type'].value_counts())\n\n# Store counts\nadata_sc.layers[\"counts\"] = adata_sc.X.copy()\n```\n\n### Step 3: Prepare Data\n\n```python\n# DestVI requires gene overlap between reference and spatial\ncommon_genes = adata_sc.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\nadata_sc = adata_sc[:, common_genes].copy()\nadata_spatial = adata_spatial[:, common_genes].copy()\n```\n\n### Step 4: Train Reference Model (CondSCVI)\n\n```python\n# Train conditional scVI on reference data\nscvi.model.CondSCVI.setup_anndata(\n    adata_sc,\n    layer=\"counts\",\n    labels_key=\"cell_type\"\n)\n\nsc_model = scvi.model.CondSCVI(\n    adata_sc,\n    n_latent=20\n)\n\nsc_model.train(max_epochs=200)\nsc_model.history['elbo_train'].plot()\n```\n\n### Step 5: Train DestVI\n\n```python\n# Setup spatial data\nscvi.model.DestVI.setup_anndata(\n    adata_spatial,\n    layer=\"counts\"\n)\n\n# Train DestVI using reference model\nspatial_model = scvi.model.DestVI.from_rna_model(\n    adata_spatial,\n    sc_model\n)\n\nspatial_model.train(max_epochs=500)\n```\n\n### Step 6: Get Cell Type Proportions\n\n```python\n# Infer cell type proportions at each spot\nproportions = spatial_model.get_proportions()\n\n# Add to adata\nfor ct in adata_sc.obs['cell_type'].unique():\n    adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=[f'prop_{ct}' for ct in adata_sc.obs['cell_type'].unique()[:6]],\n    ncols=3\n)\n```\n\n---\n\n## Part 2: resolVI Spatial Model\n\nresolVI is a semi-supervised method that learns cell type assignments and spatially-aware representations directly from spatial data, optionally using initial cell type predictions.\n\n**Note**: resolVI is in `scvi.external` (not `scvi.model`).\n\n### Step 1: Prepare Spatial Data\n\n```python\n# Load and preprocess\nadata = sc.read_visium(\"spaceranger_output/\")\n\n# QC\nsc.pp.calculate_qc_metrics(adata, inplace=True)\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\"\n)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# Optional: Get initial cell type predictions (e.g., from a reference)\n# adata.obs[\"predicted_celltype\"] = ...\n```\n\n### Step 2: Setup and Train resolVI\n\n```python\n# Setup for resolVI (note: scvi.external, not scvi.model)\nscvi.external.RESOLVI.setup_anndata(\n    adata,\n    labels_key=\"predicted_celltype\",  # Initial cell type predictions\n    layer=\"counts\"\n)\n\n# Create model (semisupervised=True uses the labels)\nmodel = scvi.external.RESOLVI(adata, semisupervised=True)\n\n# Train\nmodel.train(max_epochs=50)\n```\n\n### Step 3: Get Cell Type Predictions\n\n```python\n# Get refined cell type predictions\n# soft=True returns probabilities, soft=False returns labels\ncell_type_probs = model.predict(adata, num_samples=3, soft=True)\ncell_type_labels = model.predict(adata, num_samples=3, soft=False)\n\nadata.obs[\"resolvi_celltype\"] = cell_type_labels\n\n# Visualize\nsq.pl.spatial_scatter(adata, color=\"resolvi_celltype\")\n```\n\n### Step 4: Get Latent Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_resolVI\"] = model.get_latent_representation(adata)\n\n# Cluster based on spatial representation\nsc.pp.neighbors(adata, use_rep=\"X_resolVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize clusters spatially\nsq.pl.spatial_scatter(adata, color=\"leiden\")\n```\n\n### Step 5: Differential Expression\n\n```python\n# DE between cell types using resolVI\nde_results = model.differential_expression(\n    adata,\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\"\n)\n\nprint(de_results.head(20))\n```\n\n### Step 6: Niche Abundance Analysis\n\n```python\n# Analyze how cell type neighborhoods differ between conditions\n# Requires spatial neighbor graph\nsq.gr.spatial_neighbors(adata, coord_type=\"generic\")\n\nniche_results = model.differential_niche_abundance(\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\",\n    neighbor_key=\"spatial_neighbors\"\n)\n```\n\n### Step 7: Query Mapping (Transfer to New Data)\n\n```python\n# Map new spatial data to trained model\nquery_adata = sc.read_visium(\"new_sample/\")\nquery_adata.layers[\"counts\"] = query_adata.X.copy()\n\n# Prepare and load query\nmodel.prepare_query_anndata(query_adata, reference_model=model)\nquery_model = model.load_query_data(query_adata, reference_model=model)\n\n# Fine-tune on query\nquery_model.train(max_epochs=20)\n\n# Get predictions for query\nquery_labels = query_model.predict(query_adata, num_samples=3, soft=False)\n```\n\n---\n\n## Visualization\n\n### Spatial Proportions\n\n```python\nimport matplotlib.pyplot as plt\n\n# Plot multiple cell type proportions\ncell_types = ['T_cell', 'Tumor', 'Fibroblast', 'Macrophage']\nfig, axes = plt.subplots(2, 2, figsize=(12, 12))\n\nfor ax, ct in zip(axes.flat, cell_types):\n    sq.pl.spatial_scatter(\n        adata_spatial,\n        color=f'prop_{ct}',\n        ax=ax,\n        title=ct,\n        show=False\n    )\n\nplt.tight_layout()\n```\n\n### Enrichment by Region\n\n```python\n# Cluster spatial data\nsc.pp.neighbors(adata_spatial)\nsc.tl.leiden(adata_spatial, resolution=0.5)\n\n# Compare proportions across regions\nimport pandas as pd\n\ncell_types = adata_sc.obs['cell_type'].unique()\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nregion_props = adata_spatial.obs.groupby('leiden')[prop_cols].mean()\nprint(region_props)\n\n# Heatmap\nimport seaborn as sns\nplt.figure(figsize=(10, 6))\nsns.heatmap(region_props.T, annot=True, cmap='viridis')\nplt.title('Cell Type Proportions by Region')\n```\n\n### Spatial Cell Type Interactions\n\n```python\n# Neighborhood enrichment using cell type assignments\nsq.gr.spatial_neighbors(adata_spatial)\n\n# Create \"dominant cell type\" annotation\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nadata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\nadata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n# Co-occurrence analysis\nsq.gr.co_occurrence(adata_spatial, cluster_key='dominant_type')\nsq.pl.co_occurrence(adata_spatial, cluster_key='dominant_type')\n```\n\n---\n\n## Complete DestVI Pipeline\n\n```python\ndef deconvolve_spatial(\n    adata_spatial,\n    adata_ref,\n    cell_type_key=\"cell_type\",\n    n_latent=20,\n    max_epochs_ref=200,\n    max_epochs_spatial=500\n):\n    \"\"\"\n    Perform spatial deconvolution using DestVI.\n\n    Parameters\n    ----------\n    adata_spatial : AnnData\n        Spatial transcriptomics data\n    adata_ref : AnnData\n        Single-cell reference with cell type annotations\n    cell_type_key : str\n        Column in adata_ref.obs with cell type labels\n    n_latent : int\n        Latent dimensions\n    max_epochs_ref : int\n        Training epochs for reference model\n    max_epochs_spatial : int\n        Training epochs for spatial model\n\n    Returns\n    -------\n    AnnData with cell type proportions in obs\n    \"\"\"\n    import scvi\n\n    # Get common genes\n    common_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\n    adata_ref = adata_ref[:, common_genes].copy()\n    adata_spatial = adata_spatial[:, common_genes].copy()\n\n    # Ensure counts are stored\n    if \"counts\" not in adata_ref.layers:\n        adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    if \"counts\" not in adata_spatial.layers:\n        adata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n\n    # Train reference model\n    scvi.model.CondSCVI.setup_anndata(\n        adata_ref,\n        layer=\"counts\",\n        labels_key=cell_type_key\n    )\n\n    ref_model = scvi.model.CondSCVI(adata_ref, n_latent=n_latent)\n    ref_model.train(max_epochs=max_epochs_ref)\n\n    # Train spatial model\n    scvi.model.DestVI.setup_anndata(adata_spatial, layer=\"counts\")\n\n    spatial_model = scvi.model.DestVI.from_rna_model(\n        adata_spatial,\n        ref_model\n    )\n    spatial_model.train(max_epochs=max_epochs_spatial)\n\n    # Get proportions\n    proportions = spatial_model.get_proportions()\n\n    cell_types = adata_ref.obs[cell_type_key].unique()\n    for ct in cell_types:\n        adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n    # Add dominant type\n    prop_cols = [f'prop_{ct}' for ct in cell_types]\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n    return adata_spatial, ref_model, spatial_model\n\n# Usage\nadata_spatial, ref_model, spatial_model = deconvolve_spatial(\n    adata_spatial,\n    adata_sc,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=['dominant_type', 'prop_T_cell', 'prop_Tumor'],\n    ncols=3\n)\n```\n\n---\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Few common genes | Different gene naming | Convert gene names (Ensembl ↔ Symbol) |\n| Poor deconvolution | Reference doesn't match | Use tissue-matched reference |\n| All spots same type | Over-smoothing | Adjust model parameters, check reference diversity |\n| NaN proportions | Missing cell types | Ensure all expected types in reference |\n| Training slow | Large spatial dataset | Reduce max_epochs, increase batch_size |\n\n## Key References\n\n- Lopez et al. (2022) \"DestVI identifies continuums of cell types in spatial transcriptomics data\"\n- [scvi-tools spatial tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n","bio-research/skills/scvi-tools/references/troubleshooting.md":"# Troubleshooting Guide for scvi-tools\n\nThis reference provides a consolidated guide for diagnosing and resolving common issues across all scvi-tools models.\n\n## Quick Diagnosis\n\n| Symptom | Likely Cause | Quick Fix |\n|---------|--------------|-----------|\n| \"X should contain integers\" | Normalized data in X | Use `layer=\"counts\"` in setup |\n| CUDA out of memory | GPU memory exhausted | Reduce `batch_size`, use smaller model |\n| Training loss is NaN | Bad data or learning rate | Check for all-zero cells/genes |\n| Batches not mixing | Too few shared features | Increase HVGs, check gene overlap |\n| Over-correction | Too aggressive integration | Use scANVI with labels |\n| Import error | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Data Format Issues\n\n### Issue: CITE-seq protein data from Seurat is CLR-normalized\n\n**Cause**: Seurat's `NormalizeData(normalization.method = \"CLR\")` transforms raw ADT counts. totalVI requires raw integer counts for protein data.\n\n**Symptoms**:\n- Protein values are not integers\n- Protein values contain negative numbers\n- Model training produces poor results\n\n**Solution**:\n```python\n# Check if protein data is normalized\nprotein = adata.obsm[\"protein_expression\"]\nprint(f\"Min value: {protein.min()}\")  # Should be 0 if raw counts\nprint(f\"Contains integers: {np.allclose(protein, protein.astype(int))}\")\n\n# If importing from Seurat, use the raw counts assay, not the normalized one\n# In R/Seurat, export the RNA assay's counts slot, not the data slot\n# GetAssayData(seurat_obj, assay = \"ADT\", slot = \"counts\")\n```\n\n### Issue: \"layer not found\" or \"X should contain integers\"\n\n**Cause**: scvi-tools requires raw integer counts, not normalized data.\n\n**Solution**:\n```python\n# Check if X contains integers\nimport numpy as np\nprint(f\"X max: {adata.X.max()}\")\nprint(f\"Contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\n\n# If normalized, recover from raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Or use existing counts layer\nadata.layers[\"counts\"] = adata.X.copy()\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n```\n\n### Issue: Sparse matrix errors\n\n**Cause**: Incompatible sparse format or dense array expected.\n\n**Solution**:\n```python\nfrom scipy.sparse import csr_matrix\n\n# Convert to CSR format (most compatible)\nif hasattr(adata.X, 'toarray'):\n    adata.X = csr_matrix(adata.X)\n\n# Or convert to dense if small enough\nif adata.n_obs * adata.n_vars < 1e8:\n    adata.X = adata.X.toarray()\n```\n\n### Issue: NaN or Inf values in data\n\n**Cause**: Missing values or corrupted data.\n\n**Solution**:\n```python\nimport numpy as np\n\n# Check for issues\nX = adata.X.toarray() if hasattr(adata.X, 'toarray') else adata.X\nprint(f\"NaN count: {np.isnan(X).sum()}\")\nprint(f\"Inf count: {np.isinf(X).sum()}\")\nprint(f\"Negative count: {(X < 0).sum()}\")\n\n# Replace NaN/Inf with 0\nX = np.nan_to_num(X, nan=0, posinf=0, neginf=0)\nX = np.clip(X, 0, None)  # Ensure non-negative\nadata.X = csr_matrix(X)\n```\n\n### Issue: batch_key or labels_key not found\n\n**Cause**: Column name mismatch in adata.obs.\n\n**Solution**:\n```python\n# List available columns\nprint(adata.obs.columns.tolist())\n\n# Check for similar names\nfor col in adata.obs.columns:\n    if 'batch' in col.lower() or 'sample' in col.lower():\n        print(f\"Potential batch column: {col}\")\n```\n\n## GPU and Memory Issues\n\n### Issue: CUDA out of memory\n\n**Cause**: Model or batch doesn't fit in GPU memory.\n\n**Solutions** (try in order):\n\n```python\n# 1. Reduce batch size\nmodel.train(batch_size=64)  # Default is 128\n\n# 2. Use smaller model architecture\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,   # Default is 10-30\n    n_layers=1     # Default is 1-2\n)\n\n# 3. Subset to fewer genes\nsc.pp.highly_variable_genes(adata, n_top_genes=1500)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# 4. Clear GPU cache between models\nimport torch\ntorch.cuda.empty_cache()\n\n# 5. Use CPU if GPU is too small\nmodel.train(accelerator=\"cpu\")\n```\n\n### Issue: No GPU detected\n\n**Cause**: CUDA not installed or version mismatch.\n\n**Diagnosis**:\n```python\nimport torch\nprint(f\"CUDA available: {torch.cuda.is_available()}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"CUDA version: {torch.version.cuda}\")\n```\n\n**Solution**:\n```bash\n# Check system CUDA\nnvidia-smi\nnvcc --version\n\n# Reinstall PyTorch with matching CUDA\npip install torch --index-url https://download.pytorch.org/whl/cu118  # For CUDA 11.8\n# Or\npip install torch --index-url https://download.pytorch.org/whl/cu121  # For CUDA 12.1\n```\n\n### Issue: Memory error with large datasets\n\n**Cause**: Dataset too large for system RAM.\n\n**Solutions**:\n```python\n# 1. Process in chunks (for very large data)\n# Subsample for initial exploration\nadata_sample = adata[np.random.choice(adata.n_obs, 50000, replace=False)].copy()\n\n# 2. Use backed mode for AnnData\nadata = sc.read_h5ad(\"large_data.h5ad\", backed='r')\n\n# 3. Reduce gene count aggressively\nadata = adata[:, adata.var['highly_variable']].copy()\n```\n\n## Training Issues\n\n### Issue: Training loss is NaN\n\n**Cause**: Numerical instability, bad data, or learning rate issues.\n\n**Solutions**:\n```python\n# 1. Check for problematic cells/genes\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_genes(adata, min_cells=3)\n\n# 2. Remove cells with zero counts\nadata = adata[adata.X.sum(axis=1) > 0].copy()\n\n# 3. Use gradient clipping (built into scvi-tools)\nmodel.train(max_epochs=200, early_stopping=True)\n```\n\n### Issue: Training doesn't converge\n\n**Cause**: Insufficient epochs, poor hyperparameters, or data issues.\n\n**Solutions**:\n```python\n# 1. Train longer\nmodel.train(max_epochs=400)\n\n# 2. Check training curves\nimport matplotlib.pyplot as plt\nplt.plot(model.history['elbo_train'])\nplt.plot(model.history['elbo_validation'])\nplt.xlabel('Epoch')\nplt.ylabel('ELBO')\nplt.legend(['Train', 'Validation'])\n\n# 3. Adjust model size for data size\n# Small data (<10k cells): smaller model\nmodel = scvi.model.SCVI(adata, n_latent=10, n_layers=1, dropout_rate=0.2)\n\n# Large data (>100k cells): can use larger model\nmodel = scvi.model.SCVI(adata, n_latent=30, n_layers=2)\n```\n\n### Issue: Overfitting (validation loss increases)\n\n**Cause**: Model too complex or trained too long.\n\n**Solutions**:\n```python\n# 1. Enable early stopping\nmodel.train(early_stopping=True, early_stopping_patience=10)\n\n# 2. Add regularization\nmodel = scvi.model.SCVI(adata, dropout_rate=0.2)\n\n# 3. Reduce model complexity\nmodel = scvi.model.SCVI(adata, n_layers=1)\n```\n\n## Integration Issues\n\n### Issue: Batches don't mix\n\n**Cause**: Too few shared features, strong biological differences, or technical issues.\n\n**Solutions**:\n```python\n# 1. Check gene overlap between batches\nfor batch in adata.obs['batch'].unique():\n    batch_genes = adata[adata.obs['batch'] == batch].var_names\n    print(f\"{batch}: {len(batch_genes)} genes\")\n\n# 2. Use more HVGs\nsc.pp.highly_variable_genes(adata, n_top_genes=4000, batch_key=\"batch\")\n\n# 3. Train longer\nmodel.train(max_epochs=400)\n\n# 4. Increase latent dimensions\nmodel = scvi.model.SCVI(adata, n_latent=50)\n```\n\n### Issue: Over-correction (biological signal lost)\n\n**Cause**: Model removes too much variation.\n\n**Solutions**:\n```python\n# 1. Use scANVI with cell type labels\nscvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\n\n# 2. Reduce model capacity\nmodel = scvi.model.SCVI(adata, n_latent=10)\n\n# 3. Use categorical covariates instead of batch_key\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    categorical_covariate_keys=[\"batch\"]  # Less aggressive than batch_key\n)\n```\n\n### Issue: One batch dominates clusters\n\n**Cause**: Unbalanced batch sizes or incomplete integration.\n\n**Solutions**:\n```python\n# 1. Check batch distribution\nprint(adata.obs['batch'].value_counts())\n\n# 2. Subsample to balance\nfrom sklearn.utils import resample\nbalanced = []\nmin_size = adata.obs['batch'].value_counts().min()\nfor batch in adata.obs['batch'].unique():\n    batch_data = adata[adata.obs['batch'] == batch]\n    balanced.append(batch_data[np.random.choice(len(batch_data), min_size, replace=False)])\nadata_balanced = sc.concat(balanced)\n```\n\n## Model-Specific Issues\n\n### scANVI: Poor label transfer\n\n**Solutions**:\n```python\n# 1. Check label distribution\nprint(adata.obs['cell_type'].value_counts())\n\n# 2. Use Unknown for low-confidence cells\nadata.obs.loc[adata.obs['prediction_score'] < 0.5, 'cell_type'] = 'Unknown'\n\n# 3. Train scVI longer before scANVI\nscvi_model.train(max_epochs=300)\nscanvi_model = scvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\nscanvi_model.train(max_epochs=100)\n```\n\n### totalVI: Noisy protein signal\n\n**Solutions**:\n```python\n# 1. Use denoised protein values\n_, protein_denoised = model.get_normalized_expression(return_mean=True)\n\n# 2. Check isotype controls\n# Isotype controls should have low expression\nfor i, name in enumerate(adata.uns[\"protein_names\"]):\n    if 'isotype' in name.lower():\n        print(f\"{name}: mean={adata.obsm['protein_expression'][:, i].mean():.1f}\")\n```\n\n### PeakVI: Poor clustering\n\n**Solutions**:\n```python\n# 1. Use more variable peaks\nfrom sklearn.feature_selection import VarianceThreshold\nselector = VarianceThreshold(threshold=0.05)\nadata = adata[:, selector.fit(adata.X).get_support()].copy()\n\n# 2. Binarize data\nadata.X = (adata.X > 0).astype(np.float32)\n```\n\n### MultiVI: Different cell counts between modalities\n\n**Solutions**:\n```python\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n### DestVI: Poor deconvolution\n\n**Solutions**:\n```python\n# 1. Check gene overlap\ncommon_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")  # Should be >1000\n\n# 2. Use tissue-matched reference\n# Reference should contain all cell types expected in spatial data\n\n# 3. Check reference quality\nprint(adata_ref.obs['cell_type'].value_counts())\n```\n\n## Version Compatibility\n\n### scvi-tools 1.x vs 0.x API changes\n\nKey differences:\n```python\n# 0.x API\nscvi.data.setup_anndata(adata, ...)\n\n# 1.x API (current)\nscvi.model.SCVI.setup_anndata(adata, ...)\n```\n\n### Check versions\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n```\n\n### Recommended versions (as of late 2024)\n```\nscvi-tools>=1.0.0\nscanpy>=1.9.0\nanndata>=0.9.0\ntorch>=2.0.0\n```\n\n## Getting Help\n\n1. **Check documentation**: https://docs.scvi-tools.org/\n2. **GitHub issues**: https://github.com/scverse/scvi-tools/issues\n3. **Discourse forum**: https://discourse.scverse.org/\n4. **Tutorials**: https://docs.scvi-tools.org/en/stable/tutorials/index.html\n\nWhen reporting issues, include:\n- scvi-tools version (`scvi.__version__`)\n- Python version\n- Full error traceback\n- Minimal reproducible example\n","bio-research/skills/single-cell-rna-qc/SKILL.md":"---\nname: single-cell-rna-qc\ndescription: Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations. Use when users request QC analysis, filtering low-quality cells, assessing data quality, or following scverse/scanpy best practices for single-cell analysis.\n---\n\n# Single-Cell RNA-seq Quality Control\n\nAutomated QC workflow for single-cell RNA-seq data following scverse best practices.\n\n## When to Use This Skill\n\nUse when users:\n- Request quality control or QC on single-cell RNA-seq data\n- Want to filter low-quality cells or assess data quality\n- Need QC visualizations or metrics\n- Ask to follow scverse/scanpy best practices\n- Request MAD-based filtering or outlier detection\n\n**Supported input formats:**\n- `.h5ad` files (AnnData format from scanpy/Python workflows)\n- `.h5` files (10X Genomics Cell Ranger output)\n\n**Default recommendation**: Use Approach 1 (complete pipeline) unless the user has specific custom requirements or explicitly requests non-standard filtering logic.\n\n## Approach 1: Complete QC Pipeline (Recommended for Standard Workflows)\n\nFor standard QC following scverse best practices, use the convenience script `scripts/qc_analysis.py`:\n\n```bash\npython3 scripts/qc_analysis.py input.h5ad\n# or for 10X Genomics .h5 files:\npython3 scripts/qc_analysis.py raw_feature_bc_matrix.h5\n```\n\nThe script automatically detects the file format and loads it appropriately.\n\n**When to use this approach:**\n- Standard QC workflow with adjustable thresholds (all cells filtered the same way)\n- Batch processing multiple datasets\n- Quick exploratory analysis\n- User wants the \"just works\" solution\n\n**Requirements:** anndata, scanpy, scipy, matplotlib, seaborn, numpy\n\n**Parameters:**\n\nCustomize filtering thresholds and gene patterns using command-line parameters:\n- `--output-dir` - Output directory\n- `--mad-counts`, `--mad-genes`, `--mad-mt` - MAD thresholds for counts/genes/MT%\n- `--mt-threshold` - Hard mitochondrial % cutoff\n- `--min-cells` - Gene filtering threshold\n- `--mt-pattern`, `--ribo-pattern`, `--hb-pattern` - Gene name patterns for different species\n\nUse `--help` to see current default values.\n\n**Outputs:**\n\nAll files are saved to `<input_basename>_qc_results/` directory by default (or to the directory specified by `--output-dir`):\n- `qc_metrics_before_filtering.png` - Pre-filtering visualizations\n- `qc_filtering_thresholds.png` - MAD-based threshold overlays\n- `qc_metrics_after_filtering.png` - Post-filtering quality metrics\n- `<input_basename>_filtered.h5ad` - Clean, filtered dataset ready for downstream analysis\n- `<input_basename>_with_qc.h5ad` - Original data with QC annotations preserved\n\nIf copying outputs for user access, copy individual files (not the entire directory) so users can preview them directly.\n\n### Workflow Steps\n\nThe script performs the following steps:\n\n1. **Calculate QC metrics** - Count depth, gene detection, mitochondrial/ribosomal/hemoglobin content\n2. **Apply MAD-based filtering** - Permissive outlier detection using MAD thresholds for counts/genes/MT%\n3. **Filter genes** - Remove genes detected in few cells\n4. **Generate visualizations** - Comprehensive before/after plots with threshold overlays\n\n## Approach 2: Modular Building Blocks (For Custom Workflows)\n\nFor custom analysis workflows or non-standard requirements, use the modular utility functions from `scripts/qc_core.py` and `scripts/qc_plotting.py`:\n\n```python\n# Run from scripts/ directory, or add scripts/ to sys.path if needed\nimport anndata as ad\nfrom qc_core import calculate_qc_metrics, detect_outliers_mad, filter_cells\nfrom qc_plotting import plot_qc_distributions  # Only if visualization needed\n\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n# ... custom analysis logic here\n```\n\n**When to use this approach:**\n- Different workflow needed (skip steps, change order, apply different thresholds to subsets)\n- Conditional logic (e.g., filter neurons differently than other cells)\n- Partial execution (only metrics/visualization, no filtering)\n- Integration with other analysis steps in a larger pipeline\n- Custom filtering criteria beyond what command-line params support\n\n**Available utility functions:**\n\nFrom `qc_core.py` (core QC operations):\n- `calculate_qc_metrics(adata, mt_pattern, ribo_pattern, hb_pattern, inplace=True)` - Calculate QC metrics and annotate adata\n- `detect_outliers_mad(adata, metric, n_mads, verbose=True)` - MAD-based outlier detection, returns boolean mask\n- `apply_hard_threshold(adata, metric, threshold, operator='>', verbose=True)` - Apply hard cutoffs, returns boolean mask\n- `filter_cells(adata, mask, inplace=False)` - Apply boolean mask to filter cells\n- `filter_genes(adata, min_cells=20, min_counts=None, inplace=True)` - Filter genes by detection\n- `print_qc_summary(adata, label='')` - Print summary statistics\n\nFrom `qc_plotting.py` (visualization):\n- `plot_qc_distributions(adata, output_path, title)` - Generate comprehensive QC plots\n- `plot_filtering_thresholds(adata, outlier_masks, thresholds, output_path)` - Visualize filtering thresholds\n- `plot_qc_after_filtering(adata, output_path)` - Generate post-filtering plots\n\n**Example custom workflows:**\n\n**Example 1: Only calculate metrics and visualize, don't filter yet**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\nplot_qc_distributions(adata, 'qc_before.png', title='Initial QC')\nprint_qc_summary(adata, label='Before filtering')\n```\n\n**Example 2: Apply only MT% filtering, keep other metrics permissive**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Only filter high MT% cells\nhigh_mt = apply_hard_threshold(adata, 'pct_counts_mt', 10, operator='>')\nadata_filtered = filter_cells(adata, ~high_mt)\nadata_filtered.write('filtered.h5ad')\n```\n\n**Example 3: Different thresholds for different subsets**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Apply type-specific QC (assumes cell_type metadata exists)\nneurons = adata.obs['cell_type'] == 'neuron'\nother_cells = ~neurons\n\n# Neurons tolerate higher MT%, other cells use stricter threshold\nneuron_qc = apply_hard_threshold(adata[neurons], 'pct_counts_mt', 15, operator='>')\nother_qc = apply_hard_threshold(adata[other_cells], 'pct_counts_mt', 8, operator='>')\n```\n\n## Best Practices\n\n1. **Be permissive with filtering** - Default thresholds intentionally retain most cells to avoid losing rare populations\n2. **Inspect visualizations** - Always review before/after plots to ensure filtering makes biological sense\n3. **Consider dataset-specific factors** - Some tissues naturally have higher mitochondrial content (e.g., neurons, cardiomyocytes)\n4. **Check gene annotations** - Mitochondrial gene prefixes vary by species (mt- for mouse, MT- for human)\n5. **Iterate if needed** - QC parameters may need adjustment based on the specific experiment or tissue type\n\n## Reference Materials\n\nFor detailed QC methodology, parameter rationale, and troubleshooting guidance, see `references/scverse_qc_guidelines.md`. This reference provides:\n- Detailed explanations of each QC metric and why it matters\n- Rationale for MAD-based thresholds and why they're better than fixed cutoffs\n- Guidelines for interpreting QC visualizations (histograms, violin plots, scatter plots)\n- Species-specific considerations for gene annotations\n- When and how to adjust filtering parameters\n- Advanced QC considerations (ambient RNA correction, doublet detection)\n\nLoad this reference when users need deeper understanding of the methodology or when troubleshooting QC issues.\n\n## Next Steps After QC\n\nTypical downstream analysis steps:\n- Ambient RNA correction (SoupX, CellBender)\n- Doublet detection (scDblFinder)\n- Normalization (log-normalize, scran)\n- Feature selection and dimensionality reduction\n- Clustering and cell type annotation\n","bio-research/skills/single-cell-rna-qc/references/scverse_qc_guidelines.md":"# scverse Quality Control Guidelines\n\nThis document provides detailed information about quality control best practices for single-cell RNA-seq data, following the scverse ecosystem recommendations.\n\n## Quality Control Metrics\n\n### Count Depth (Total Counts)\n- **What it measures**: Total number of UMI/reads per cell\n- **Why it matters**: Low count cells may be empty droplets, debris, or poorly captured cells\n- **Typical range**: 500-50,000 counts per cell (varies by protocol)\n- **Red flags**: Bimodal distributions may indicate mixing of high and low-quality cells\n\n### Gene Detection (Genes per Cell)\n- **What it measures**: Number of genes with at least 1 count\n- **Why it matters**: Strongly correlates with count depth; low values indicate poor capture\n- **Typical range**: 200-5,000 genes per cell\n- **Red flags**: Very low values (<200) suggest technical failures\n\n### Mitochondrial Content\n- **What it measures**: Percentage of counts from mitochondrial genes\n- **Why it matters**: High MT% indicates cell stress, apoptosis, or lysed cells\n- **Typical range**: <5% for most tissues, up to 10-15% for metabolically active cells\n- **Species-specific patterns**:\n  - Mouse: Genes start with 'mt-' (e.g., mt-Nd1, mt-Co1)\n  - Human: Genes start with 'MT-' (e.g., MT-ND1, MT-CO1)\n- **Context matters**: Some cell types (cardiomyocytes, neurons) naturally have higher MT content\n\n### Ribosomal Content\n- **What it measures**: Percentage of counts from ribosomal protein genes\n- **Why it matters**: Can indicate cell state or contamination\n- **Patterns**: Genes start with 'Rpl'/'RPL' (large subunit) or 'Rps'/'RPS' (small subunit)\n- **Note**: High ribosomal content isn't always bad - metabolically active cells have more ribosomes\n\n### Hemoglobin Content\n- **What it measures**: Percentage of counts from hemoglobin genes\n- **Why it matters**: Indicates blood contamination in non-blood tissues\n- **Patterns**: Genes matching '^Hb[^(p)]' or '^HB[^(P)]' (excludes Hbp1/HBP1)\n- **When to use**: Particularly important for tissue samples (brain, liver, etc.)\n\n## MAD-Based Filtering Rationale\n\n### Why MAD Instead of Fixed Thresholds?\n\nFixed thresholds (e.g., \"remove cells with <500 genes\") fail because:\n- Different protocols yield different ranges\n- Different tissues have different characteristics\n- Different species have different gene counts\n- Fixed thresholds are arbitrary and not data-driven\n\nMAD (Median Absolute Deviation) is robust to outliers and adapts to your dataset:\n```\nMAD = median(|X - median(X)|)\nOutlier bounds = median ± n_MADs × MAD\n```\n\n### Recommended MAD Thresholds\n\nFollowing scverse best practices (deliberately permissive):\n\n**5 MADs for count depth (log-transformed)**\n- Very permissive to retain rare cell populations\n- Catches extreme outliers (empty droplets, debris)\n- Log transformation handles the typical right-skewed distribution\n\n**5 MADs for gene counts (log-transformed)**\n- Parallels count depth filtering\n- Most informative when combined with count filtering\n- Log transformation normalizes the distribution\n\n**3 MADs for mitochondrial percentage**\n- More stringent because high MT% strongly indicates dying cells\n- Uses raw percentages (not log-transformed)\n- Combined with hard threshold for extra stringency\n\n**Hard threshold: 8% mitochondrial content**\n- Additional filter beyond MAD-based detection\n- Conservative cutoff that works across most tissues\n- Adjust higher (10-15%) for metabolically active cell types\n\n### Why Be Permissive?\n\nThe default thresholds intentionally err on the side of keeping cells because:\n1. **Rare populations**: Stringent filtering may remove rare but viable cell types\n2. **Biological variation**: Some healthy cells naturally have extreme values\n3. **Reversibility**: Easier to filter more later than to recover lost cells\n4. **Downstream robustness**: Modern normalization methods handle moderate quality variation\n\n## Interpreting QC Visualizations\n\n### Histograms\n- **Bimodal distributions**: May indicate mixing of cell types or quality issues\n- **Long tails**: Common for count depth; MAD filtering handles this\n- **Sharp cutoffs**: May indicate prior filtering or technical artifacts\n\n### Violin Plots\n- Shows distribution shape and density\n- Median (line) and mean (diamond) should be similar for symmetric distributions\n- Wide distributions suggest high heterogeneity\n\n### Scatter Plots\n\n**Counts vs Genes (colored by MT%)**\n- Should show strong positive correlation (R² > 0.8 typical)\n- Points deviating from trend may be outliers\n- High MT% cells often cluster at low counts/genes\n\n**Counts vs MT%**\n- Negative correlation expected (dying cells have fewer counts)\n- Vertical stratification may indicate batch effects\n- Cells with high counts + high MT% are suspicious\n\n**Genes vs MT%**\n- Similar to counts vs MT%, but often weaker correlation\n- Useful for identifying cells with gene detection issues\n\n## Gene Filtering\n\nAfter filtering cells, remove genes detected in fewer than 20 cells:\n- **Why 20?**: Balances noise reduction with information retention\n- **Benefits**: Reduces dataset size, speeds up computation, removes noisy genes\n- **Trade-offs**: May lose very rare markers; adjust to 10 if studying rare populations\n\n## Species-Specific Considerations\n\n### Mouse (Mus musculus)\n- Mitochondrial genes: mt-* (lowercase)\n- Ribosomal genes: Rpl*, Rps* (capitalized first letter)\n- Hemoglobin genes: Hb* (but not Hbp1)\n\n### Human (Homo sapiens)\n- Mitochondrial genes: MT-* (uppercase)\n- Ribosomal genes: RPL*, RPS* (all uppercase)\n- Hemoglobin genes: HB* (but not HBP1)\n\n### Other Species\nAdjust gene name patterns in the script to match your organism's gene nomenclature. Consult Ensembl or your reference annotation for correct prefixes.\n\n## When to Adjust Parameters\n\nConsider adjusting filtering thresholds when:\n\n**More stringent (lower MADs)**\n- High ambient RNA contamination suspected\n- Many low-quality cells observed in visualizations\n- Downstream analysis shows quality-driven clustering\n\n**More permissive (higher MADs)**\n- Studying rare cell populations\n- Dataset has high technical quality\n- Cell types naturally have extreme values (e.g., neurons with high MT%)\n\n**Tissue-specific adjustments**\n- Brain/neurons: May need higher MT% threshold (10-15%)\n- Blood: Can be more stringent with MT% (5-8%)\n- Tumor samples: Often need more permissive thresholds due to biological variation\n\n## Advanced QC Considerations\n\n### Not Included in This Workflow\n\n**Ambient RNA correction**\n- Tool: SoupX, CellBender, DecontX\n- When: High background RNA in droplet-based data\n- Effect: Removes contamination from lysed cells\n\n**Doublet detection**\n- Tool: scDblFinder, scrublet, DoubletFinder\n- When: Always recommended for droplet-based data\n- Effect: Identifies and removes multiplets (2+ cells in one droplet)\n\n**Cell cycle scoring**\n- Tool: scanpy's score_genes_cell_cycle\n- When: Cell cycle effects confound biological signal\n- Effect: Allows regressing out or accounting for cell cycle phase\n\n**Batch correction**\n- Tool: Harmony, scVI, ComBat\n- When: Integrating data from multiple batches/experiments\n- Effect: Removes technical batch effects while preserving biology\n\n## References\n\n- scverse Best Practices: https://www.sc-best-practices.org/preprocessing_visualization/quality_control.html\n- Luecken & Theis (2019): Current best practices in single-cell RNA-seq analysis\n- Osorio & Cai (2021): Systematic determination of the mitochondrial proportion in human and mouse genomes\n- Germain et al. (2020): Doublet identification in single-cell sequencing data using scDblFinder\n","bio-research/skills/start/SKILL.md":"---\nname: start\ndescription: Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which literature, drug-discovery, or visualization MCP servers are connected, or surveying available analysis skills before starting a new project.\n---\n\n# Bio-Research Start\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nYou are helping a biological researcher get oriented with the bio-research plugin. Walk through the following steps in order.\n\n## Step 1: Welcome\n\nDisplay this welcome message:\n\n```\nBio-Research Plugin\n\nYour AI-powered research assistant for the life sciences. This plugin brings\ntogether literature search, data analysis pipelines,\nand scientific strategy — all in one place.\n```\n\n## Step 2: Check Available MCP Servers\n\nTest which MCP servers are connected by listing available tools. Group the results:\n\n**Literature & Data Sources:**\n- ~~literature database — biomedical literature search\n- ~~literature database — preprint access (biology and medicine)\n- ~~journal access — academic publications\n- ~~data repository — collaborative research data (Sage Bionetworks)\n\n**Drug Discovery & Clinical:**\n- ~~chemical database — bioactive compound database\n- ~~drug target database — drug target discovery platform\n- ClinicalTrials.gov — clinical trial registry\n- ~~clinical data platform — clinical trial site ranking and platform help\n\n**Visualization & AI:**\n- ~~scientific illustration — create scientific figures and diagrams\n- ~~AI research platform — AI for biology (histopathology, drug discovery)\n\nReport which servers are connected and which are not yet set up.\n\n## Step 3: Survey Available Skills\n\nList the analysis skills available in this plugin:\n\n| Skill | What It Does |\n|-------|-------------|\n| **Single-Cell RNA QC** | Quality control for scRNA-seq data with MAD-based filtering |\n| **scvi-tools** | Deep learning for single-cell omics (scVI, scANVI, totalVI, PeakVI, etc.) |\n| **Nextflow Pipelines** | Run nf-core pipelines (RNA-seq, WGS/WES, ATAC-seq) |\n| **Instrument Data Converter** | Convert lab instrument output to Allotrope ASM format |\n| **Scientific Problem Selection** | Systematic framework for choosing research problems |\n\n## Step 4: Optional Setup — Binary MCP Servers\n\nMention that two additional MCP servers are available as separate installations:\n\n- **~~genomics platform** — Access cloud analysis data and workflows\n  Install: Download `txg-node.mcpb` from https://github.com/10XGenomics/txg-mcp/releases\n- **~~tool database** (Harvard MIMS) — AI tools for scientific discovery\n  Install: Download `tooluniverse.mcpb` from https://github.com/mims-harvard/ToolUniverse/releases\n\nThese require downloading binary files and are optional.\n\n## Step 5: Ask How to Help\n\nAsk the researcher what they're working on today. Suggest starting points based on common workflows:\n\n1. **Literature review** — \"Search ~~literature database for recent papers on [topic]\"\n2. **Analyze sequencing data** — \"Run QC on my single-cell data\" or \"Set up an RNA-seq pipeline\"\n3. **Drug discovery** — \"Search ~~chemical database for compounds targeting [protein]\" or \"Find drug targets for [disease]\"\n4. **Data standardization** — \"Convert my instrument data to Allotrope format\"\n5. **Research strategy** — \"Help me evaluate a new project idea\"\n\nWait for the user's response and guide them to the appropriate tools and skills.\n","cowork-plugin-management/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=cowork-plugin-management%2F.claude-plugin%2Fplugin.json -->","cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md":"---\nname: cowork-plugin-customizer\ndescription: >\n  Customize a Claude Code plugin for a specific organization's tools and workflows.\n  Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings,\n  customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration.\ncompatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins).\n---\n\n# Cowork Plugin Customization\n\nCustomize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin.\n\n> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -name \"*<plugin-name>*\"` to locate the plugin directory, then read its files to understand its structure before making changes. If you cannot find the plugin directory, the user is likely running this conversation in a remote container. Abort and let them know: \"Customizing plugins is currently only available in the desktop app's Cowork mode.\"\n\n## Determining the Customization Mode\n\nAfter locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'`\n\n> **Default rule**: If `~~` placeholders exist, default to **Generic plugin setup** unless the user explicitly asks to customize a specific part of the plugin.\n\n**1. Generic plugin setup** — The plugin contains `~~`-prefixed placeholders. These are customization points in a template that need to be replaced with real values (e.g., `~~Jira` → `Asana`, `~~your-team-channel` → `#engineering`).\n\n**2. Scoped customization** — No `~~` placeholders exist, and the user asked to customize a specific part of the plugin (e.g., \"customize the connectors\", \"update the standup skill\", \"change the ticket tool\"). Read the plugin files to find the relevant section(s) and focus only on those. Do not scan the entire plugin or present unrelated customization items.\n\n> **Legacy `commands/` directories**: Some plugins include a `commands/` directory. The Cowork UI now presents these alongside skills as a single \"Skills\" concept, so treat `commands/*.md` files the same way you would `skills/*/SKILL.md` files when customizing.\n\n**3. General customization** — No `~~` placeholders exist, and the user wants to modify the plugin broadly. Read the plugin's files to understand its current configuration, then ask the user what they'd like to change.\n\n> **Important**: Never change the name of the plugin or skill being customized. Do not rename directories, files, or the plugin/skill name fields.\n\n> **Nontechnical output**: All user-facing output (todo list items, questions, summaries) must be written in plain, nontechnical language. Never mention `~~` prefixes, placeholders, or customization points to the user. Frame everything in terms of the plugin's capabilities and the organization's tools.\n\n## Customization Workflow\n\n### Phase 0: Gather User Intent (scoped and general customization only)\n\nFor **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request (e.g., \"customize the standup skill — we do async standups in #eng-updates every morning\").\n\n- **If the user provided context**: Record it and use it to pre-fill answers in Phase 3 — skip asking questions that the user already answered here.\n- **If the user did not provide context**: Ask a single open-ended question using AskUserQuestion before proceeding. Tailor the question to what they asked to customize — e.g., \"What changes do you have in mind for the brief skill?\" or \"What would you like to change about how this plugin works?\" Keep it short and specific to their request.\n\n  Use their response (if any) as additional context throughout the remaining phases.\n\n### Phase 1: Gather Context from Knowledge MCPs\n\nUse company-internal knowledge MCPs to collect information relevant to the customization scope. See `references/search-strategies.md` for detailed query patterns by category.\n\n**What to gather** (scope to what's relevant):\n\n- Tool names and services the organization uses\n- Organizational processes and workflows\n- Team conventions (naming, statuses, estimation scales)\n- Configuration values (workspace IDs, project names, team identifiers)\n\n**Sources to search:**\n\n1. **Chat/Slack MCPs** — tool mentions, integrations, workflow discussions\n2. **Document MCPs** — onboarding docs, tool guides, setup instructions\n3. **Email MCPs** — license notifications, admin emails, setup invitations\n\nRecord all findings for use in Phase 3.\n\n### Phase 2: Create Todo List\n\nBuild a todo list of changes to make, scoped appropriately:\n\n- **For scoped customization**: Only include items related to the specific section the user asked about.\n- **For generic plugin setup**: Run `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'` to find all placeholder customization points. Group them by theme.\n- **For general customization**: Read the plugin files, understand the current config, and based on the user's request, identify what needs to change.\n\nUse user-friendly descriptions that focus on the plugin's purpose:\n\n- **Good**: \"Learn how standup prep works at Company\"\n- **Bad**: \"Replace placeholders in skills/standup-prep/SKILL.md\"\n\n### Phase 3: Complete Todo Items\n\nWork through each item using context from Phase 0 and Phase 1.\n\n**If the user's free-form input (Phase 0) or knowledge MCPs (Phase 1) provided a clear answer**: Apply directly without confirmation.\n\n**Otherwise**: Use AskUserQuestion. Don't assume \"industry standard\" defaults are correct — if neither the user's input nor knowledge MCPs provided a specific answer, ask. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n**Types of changes:**\n\n1. **Placeholder replacements** (generic setup): `~~Jira` → `Asana`, `~~your-org-channel` → `#engineering`\n2. **Content updates**: Modifying instructions, skills, workflows, or references to match the organization\n3. **URL pattern updates**: `tickets.example.com/your-team/123` → `app.asana.com/0/PROJECT_ID/TASK_ID`\n4. **Configuration values**: Workspace IDs, project names, team identifiers\n\nIf user doesn't know or skips, leave the value unchanged (or the `~~`-prefixed placeholder, for generic setup).\n\n### Phase 4: Search for Useful MCPs\n\nAfter customization items have been resolved, connect MCPs for any tools that were identified or changed. See `references/mcp-servers.md` for the full workflow, category-to-keywords mapping, and config file format.\n\nFor each tool identified during customization:\n\n1. Search the registry: `search_mcp_registry(keywords=[...])` using category keywords from `references/mcp-servers.md`, or search for the specific tool name if already known\n2. If unconnected: `suggest_connectors(directoryUuids=[\"chosen-uuid\"])` — user completes auth\n3. Update the plugin's MCP config file (check `plugin.json` for custom location, otherwise `.mcp.json` at root)\n\nCollect all MCP results and present them together in the summary output (see below) — don't present MCPs one at a time during this phase.\n\n## Packaging the Plugin\n\nAfter all customizations are applied, package the plugin as a `.plugin` file for the user:\n\n1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed):\n   ```bash\n   cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x \"setup/*\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n   ```\n2. **Present the file to the user** with the `.plugin` extension so they can install it directly. (Presenting the .plugin file will show to the user as a rich preview where they can look through the plugin files, and they can accept the customization by pressing a button.)\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions and leave behind temporary files.\n\n> **Naming**: Use the original plugin directory name for the `.plugin` file (e.g., if the plugin directory is `coder`, the output file should be `coder.plugin`). Do not rename the plugin or its files during customization — only replace placeholder values and update content.\n\n## Summary Output\n\nAfter customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected during setup and which ones the user should still connect:\n\n```markdown\n## From searching Slack\n\n- You use Asana for project management\n- Sprint cycles are 2 weeks\n\n## From searching documents\n\n- Story points use T-shirt sizes\n\n## From your answers\n\n- Ticket statuses are: Backlog, In Progress, In Review, Done\n```\n\nThen present the MCPs that were connected during setup and any that the user should still connect, with instructions on how to connect them.\n\nIf no knowledge MCPs were available in Phase 1, and the user had to answer at least one question manually, include a note at the end:\n\n> By the way, connecting sources like Slack or Microsoft Teams would let me find answers automatically next time you customize a plugin.\n\n## Additional Resources\n\n- **`references/mcp-servers.md`** — MCP discovery workflow, category-to-keywords mapping, config file locations\n- **`references/search-strategies.md`** — Knowledge MCP query patterns for finding tool names and org values\n- **`examples/customized-mcp.json`** — Example fully configured `.mcp.json`\n","cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json":"{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${GITHUB_TOKEN}\"\n      }\n    },\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    },\n    \"figma\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.figma.com/mcp\"\n    },\n    \"datadog\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.datadoghq.com/mcp\",\n      \"headers\": {\n        \"DD-API-KEY\": \"${DATADOG_API_KEY}\",\n        \"DD-APPLICATION-KEY\": \"${DATADOG_APP_KEY}\"\n      }\n    }\n  },\n  \"recommendedCategories\": [\n    \"source-control\",\n    \"project-management\",\n    \"chat\",\n    \"documents\",\n    \"wiki-knowledge-base\",\n    \"design-graphics\",\n    \"analytics-bi\"\n  ]\n}\n","cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md":"# MCP Discovery and Connection\n\nHow to find and connect MCPs during plugin customization.\n\n## Available Tools\n\n### `search_mcp_registry`\nSearch the MCP directory for available connectors.\n\n**Input:** `{ \"keywords\": [\"array\", \"of\", \"search\", \"terms\"] }`\n\n**Output:** Up to 10 results, each with:\n- `name`: MCP display name\n- `description`: One-liner description\n- `tools`: List of tool names the MCP provides\n- `url`: MCP endpoint URL (use this in `.mcp.json`)\n- `directoryUuid`: UUID for use with suggest_connectors\n- `connected`: Boolean - whether user has this MCP connected\n\n### `suggest_connectors`\nDisplay Connect buttons to let users install/connect MCPs.\n\n**Input:** `{ \"directoryUuids\": [\"uuid1\", \"uuid2\"] }`\n\n**Output:** Renders UI with Connect buttons for each MCP\n\n## Category-to-Keywords Mapping\n\n| Category | Search Keywords |\n|----------|-----------------|\n| `project-management` | `[\"asana\", \"jira\", \"linear\", \"monday\", \"tasks\"]` |\n| `software-coding` | `[\"github\", \"gitlab\", \"bitbucket\", \"code\"]` |\n| `chat` | `[\"slack\", \"teams\", \"discord\"]` |\n| `documents` | `[\"google docs\", \"notion\", \"confluence\"]` |\n| `calendar` | `[\"google calendar\", \"calendar\"]` |\n| `email` | `[\"gmail\", \"outlook\", \"email\"]` |\n| `design-graphics` | `[\"figma\", \"sketch\", \"design\"]` |\n| `analytics-bi` | `[\"datadog\", \"grafana\", \"analytics\"]` |\n| `crm` | `[\"salesforce\", \"hubspot\", \"crm\"]` |\n| `wiki-knowledge-base` | `[\"notion\", \"confluence\", \"outline\", \"wiki\"]` |\n| `data-warehouse` | `[\"bigquery\", \"snowflake\", \"redshift\"]` |\n| `conversation-intelligence` | `[\"gong\", \"chorus\", \"call recording\"]` |\n\n## Workflow\n\n1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)\n2. **Check earlier phase findings**: Did you already learn which tool they use?\n   - **Yes**: Search for that specific tool to get its `url`, skip to step 5\n   - **No**: Continue to step 3\n3. **Search**: Call `search_mcp_registry` with mapped keywords\n4. **Present choices and ask user**: Show all results, ask which they use\n5. **Connect if needed**: If not connected, call `suggest_connectors`\n6. **Update MCP config**: Add config using the `url` from search results\n\n## Updating Plugin MCP Configuration\n\n### Finding the Config File\n\n1. **Check `plugin.json`** for an `mcpServers` field:\n   ```json\n   {\n     \"name\": \"my-plugin\",\n     \"mcpServers\": \"./config/servers.json\"\n   }\n   ```\n   If present, edit the file at that path.\n\n2. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).\n\n3. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.\n\n### Config File Format\n\nBoth wrapped and unwrapped formats are supported:\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\nUse the `url` field from `search_mcp_registry` results.\n\n### Directory Entries Without a URL\n\nSome directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.","cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md":"# Knowledge MCP Search Strategies\n\nQuery patterns for gathering organizational context during plugin customization.\n\n## Finding Tool Names\n\n**Source control:**\n- Search: \"GitHub\" OR \"GitLab\" OR \"Bitbucket\"\n- Search: \"pull request\" OR \"merge request\"\n- Look for: repository links, CI/CD mentions\n\n**Project management:**\n- Search: \"Asana\" OR \"Jira\" OR \"Linear\" OR \"Monday\"\n- Search: \"sprint\" AND \"tickets\"\n- Look for: task links, project board mentions\n\n**Chat:**\n- Search: \"Slack\" OR \"Teams\" OR \"Discord\"\n- Look for: channel mentions, integration discussions\n\n**Analytics:**\n- Search: \"Datadog\" OR \"Grafana\" OR \"Mixpanel\"\n- Search: \"monitoring\" OR \"observability\"\n- Look for: dashboard links, alert configurations\n\n**Design:**\n- Search: \"Figma\" OR \"Sketch\" OR \"Adobe XD\"\n- Look for: design file links, handoff discussions\n\n**CRM:**\n- Search: \"Salesforce\" OR \"HubSpot\"\n- Look for: deal mentions, customer record links\n\n## Finding Organization Values\n\n**Workspace/project IDs:**\n- Search for existing integrations or bookmarked links\n- Look for admin/setup documentation\n\n**Team conventions:**\n- Search: \"story points\" OR \"estimation\"\n- Search: \"workflow\" OR \"ticket status\"\n- Look for engineering process docs\n\n**Channel/team names:**\n- Search: \"standup\" OR \"engineering\" OR \"releases\"\n- Look for channel naming patterns\n\n## When Knowledge MCPs Are Unavailable\n\nIf no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n","cowork-plugin-management/skills/create-cowork-plugin/SKILL.md":"---\nname: create-cowork-plugin\ndescription: >\n  Guide users through creating a new plugin from scratch in a cowork session.\n  Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin.\n  This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file.\ncompatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files.\n---\n\n# Create Cowork Plugin\n\nBuild a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a ready-to-install `.plugin` file at the end.\n\n## Overview\n\nA plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full plugin architecture and a five-phase workflow for creating one conversationally.\n\nThe process:\n\n1. **Discovery** — understand what the user wants to build\n2. **Component Planning** — determine which component types are needed\n3. **Design & Clarifying Questions** — specify each component in detail\n4. **Implementation** — create all plugin files\n5. **Review & Package** — deliver the `.plugin` file\n\n> **Nontechnical output**: Keep all user-facing conversation in plain language. Do not expose implementation details like file paths, directory structures, or schema fields unless the user asks. Frame everything in terms of what the plugin will do.\n\n## Plugin Architecture\n\n### Directory Structure\n\nEvery plugin follows this layout:\n\n```\nplugin-name/\n├── .claude-plugin/\n│   └── plugin.json           # Required: plugin manifest\n├── skills/                   # Skills (subdirectories with SKILL.md)\n│   └── skill-name/\n│       ├── SKILL.md\n│       └── references/\n├── agents/                   # Subagent definitions (.md files)\n├── .mcp.json                 # MCP server definitions\n└── README.md                 # Plugin documentation\n```\n\n> **Legacy `commands/` format**: Older plugins may include a `commands/` directory with single-file `.md` slash commands. This format still works, but new plugins should use `skills/*/SKILL.md` instead — the Cowork UI presents both as a single \"Skills\" concept, and the skills format supports progressive disclosure via `references/`.\n\n**Rules:**\n\n- `.claude-plugin/plugin.json` is always required\n- Component directories (`skills/`, `agents/`) go at the plugin root, not inside `.claude-plugin/`\n- Only create directories for components the plugin actually uses\n- Use kebab-case for all directory and file names\n\n### plugin.json Manifest\n\nLocated at `.claude-plugin/plugin.json`. Minimal required field is `name`.\n\n```json\n{\n  \"name\": \"plugin-name\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Brief explanation of plugin purpose\",\n  \"author\": {\n    \"name\": \"Author Name\"\n  }\n}\n```\n\n**Name rules:** kebab-case, lowercase with hyphens, no spaces or special characters.\n**Version:** semver format (MAJOR.MINOR.PATCH). Start at `0.1.0`.\n\nOptional fields: `homepage`, `repository`, `license`, `keywords`.\n\nCustom component paths can be specified (supplements, does not replace, auto-discovery):\n\n```json\n{\n  \"commands\": \"./custom-commands\",\n  \"agents\": [\"./agents\", \"./specialized-agents\"],\n  \"hooks\": \"./config/hooks.json\",\n  \"mcpServers\": \"./.mcp.json\"\n}\n```\n\n### Component Schemas\n\nDetailed schemas for each component type are in `references/component-schemas.md`. Summary:\n\n| Component                          | Location            | Format                      |\n| ---------------------------------- | ------------------- | --------------------------- |\n| Skills                             | `skills/*/SKILL.md` | Markdown + YAML frontmatter |\n| MCP Servers                        | `.mcp.json`         | JSON                        |\n| Agents (uncommonly used in Cowork) | `agents/*.md`       | Markdown + YAML frontmatter |\n| Hooks (rarely used in Cowork)      | `hooks/hooks.json`  | JSON                        |\n| Commands (legacy)                  | `commands/*.md`     | Markdown + YAML frontmatter |\n\nThis schema is shared with Claude Code's plugin system, but you're creating a plugin for Claude Cowork, a desktop app for doing knowledge work.\nCowork users will usually find skills the most useful. **Scaffold new plugins with `skills/*/SKILL.md` — do not create `commands/` unless the user explicitly needs the legacy single-file format.**\n\n### Customizable plugins with `~~` placeholders\n\n> **Do not use or ask about this pattern by default.** Only introduce `~~` placeholders if the user explicitly says they want people outside their organization to use the plugin.\n> You can mention this is an option if it seems like the user wants to distribute the plugin externally, but do not proactively ask about this with AskUserQuestion.\n\nWhen a plugin is intended to be shared with others outside their company, it might have parts that need to be adapted to individual users.\nYou might need to reference external tools by category rather than specific product (e.g., \"project tracker\" instead of \"Jira\").\nWhen sharing is needed, use generic language and mark these as requiring customization with two tilde characters such as `create an issue in ~~project tracker`.\nIf used any tool categories, write a `CONNECTORS.md` file at the plugin root to explain:\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic — they describe\nworkflows in terms of categories rather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Options                         |\n| --------------- | ------------------- | ------------------------------- |\n| Chat            | `~~chat`            | Slack, Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear, Asana, Jira             |\n```\n\n### ${CLAUDE_PLUGIN_ROOT} Variable\n\nUse `${CLAUDE_PLUGIN_ROOT}` for all intra-plugin path references in hooks and MCP configs. Never hardcode absolute paths.\n\n## Guided Workflow\n\nWhen you ask the user something, use AskUserQuestion. Don't assume \"industry standard\" defaults are correct. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n### Phase 1: Discovery\n\n**Goal**: Understand what the user wants to build and why.\n\nAsk (only what is unclear — skip questions if the user's initial request already answers them):\n\n- What should this plugin do? What problem does it solve?\n- Who will use it and in what context?\n- Does it integrate with any external tools or services?\n- Is there a similar plugin or workflow to reference?\n\nSummarize understanding and confirm before proceeding.\n\n**Output**: Clear statement of plugin purpose and scope.\n\n### Phase 2: Component Planning\n\n**Goal**: Determine which component types the plugin needs.\n\nBased on the discovery answers, determine:\n\n- **Skills** — Does it need specialized knowledge that Claude should load on-demand, or user-initiated actions? (domain expertise, reference schemas, workflow guides, deploy/configure/analyze/review actions)\n- **MCP Servers** — Does it need external service integration? (databases, APIs, SaaS tools)\n- **Agents (uncommon)** — Are there autonomous multi-step tasks? (validation, generation, analysis)\n- **Hooks (rare)** — Should something happen automatically on certain events? (enforce policies, load context, validate operations)\n\nPresent a component plan table, including component types you decided not to create:\n\n```\n| Component | Count | Purpose |\n|-----------|-------|---------|\n| Skills    | 3     | Domain knowledge for X, /do-thing, /check-thing |\n| Agents    | 0     | Not needed |\n| Hooks     | 1     | Validate writes |\n| MCP       | 1     | Connect to service Y |\n```\n\nGet user confirmation or adjustments before proceeding.\n\n**Output**: Confirmed list of components to create.\n\n### Phase 3: Design & Clarifying Questions\n\n**Goal**: Specify each component in detail. Resolve all ambiguities before implementation.\n\nFor each component type in the plan, ask targeted design questions. Present questions grouped by component type. Wait for answers before proceeding.\n\n**Skills:**\n\n- What user queries should trigger this skill?\n- What knowledge domains does it cover?\n- Should it include reference files for detailed content?\n- If the skill represents a user-initiated action: what arguments does it accept, and what tools does it need? (Read, Write, Bash, Grep, etc.)\n\n**Agents:**\n\n- Should each agent trigger proactively or only when requested?\n- What tools does it need?\n- What should the output format be?\n\n**Hooks:**\n\n- Which events? (PreToolUse, PostToolUse, Stop, SessionStart, etc.)\n- What behavior — validate, block, modify, add context?\n- Prompt-based (LLM-driven) or command-based (deterministic script)?\n\n**MCP Servers:**\n\n- What server type? (stdio for local, SSE for hosted with OAuth, HTTP for REST APIs)\n- What authentication method?\n- What tools should be exposed?\n\nIf the user says \"whatever you think is best,\" provide specific recommendations and get explicit confirmation.\n\n**Output**: Detailed specification for every component.\n\n### Phase 4: Implementation\n\n**Goal**: Create all plugin files following best practices.\n\n**Order of operations:**\n\n1. Create the plugin directory structure\n2. Create `plugin.json` manifest\n3. Create each component (see `references/component-schemas.md` for exact formats)\n4. Create `README.md` documenting the plugin\n\n**Implementation guidelines:**\n\n- **Skills** use progressive disclosure: lean SKILL.md body (under 3,000 words), detailed content in `references/`. Frontmatter description must be third-person with specific trigger phrases. Skill bodies are instructions FOR Claude, not messages to the user — write them as directives about what to do.\n- **Agents** need a description with `<example>` blocks showing triggering conditions, plus a system prompt in the markdown body.\n- **Hooks** config goes in `hooks/hooks.json`. Use `${CLAUDE_PLUGIN_ROOT}` for script paths. Prefer prompt-based hooks for complex logic.\n- **MCP configs** go in `.mcp.json` at plugin root. Use `${CLAUDE_PLUGIN_ROOT}` for local server paths. Document required env vars in README.\n\n### Phase 5: Review & Package\n\n**Goal**: Deliver the finished plugin.\n\n1. Summarize what was created — list each component and its purpose\n2. Ask if the user wants any adjustments\n3. Run `claude plugin validate <path-to-plugin-json>` to check the plugin structure. If this command is unavailable (e.g., when running inside Cowork), verify the structure manually:\n   - `.claude-plugin/plugin.json` exists and contains valid JSON with at least a `name` field\n   - The `name` field is kebab-case (lowercase letters, numbers, and hyphens only)\n   - Any component directories referenced by the plugin (`commands/`, `skills/`, `agents/`, `hooks/`) actually exist and contain files in the expected formats — `.md` for commands/skills/agents, `.json` for hooks\n   - Each skill subdirectory contains a `SKILL.md`\n   - Report what passed and what didn't, the same way the CLI validator would\n\n   Fix any errors before proceeding.\n4. Package as a `.plugin` file:\n\n```bash\ncd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x \"*.DS_Store\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n```\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions.\n\n> **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`).\n\nThe `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button.\n\n## Best Practices\n\n- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components.\n- **Progressive disclosure for skills**: Core knowledge in SKILL.md, detailed reference material in `references/`, working examples in `examples/`.\n- **Clear trigger phrases**: Skill descriptions should include specific phrases users would say. Agent descriptions should include `<example>` blocks.\n- **Skills are for Claude**: Write skill body content as instructions for Claude to follow, not documentation for the user to read.\n- **Imperative writing style**: Use verb-first instructions in skills (\"Parse the config file,\" not \"You should parse the config file\").\n- **Portability**: Always use `${CLAUDE_PLUGIN_ROOT}` for intra-plugin paths, never hardcoded paths.\n- **Security**: Use environment variables for credentials, HTTPS for remote servers, least-privilege tool access.\n\n## Additional Resources\n\n- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md)\n- **`references/example-plugins.md`** — Three complete example plugin structures at different complexity levels\n","cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md":"# Component Schemas\n\nDetailed format specifications for every plugin component type. Reference this when implementing components in Phase 4.\n\n## Skills\n\n**Location**: `skills/skill-name/SKILL.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                             |\n| ------------- | -------- | ------ | ------------------------------------------------------- |\n| `name`        | Yes      | String | Skill identifier (lowercase, hyphens; matches dir name) |\n| `description` | Yes      | String | Third-person description with trigger phrases           |\n| `metadata`    | No       | Map    | Arbitrary key-value pairs (e.g., `version`, `author`)   |\n\n### Example Skill\n\n```yaml\n---\nname: api-design\ndescription: >\n  This skill should be used when the user asks to \"design an API\",\n  \"create API endpoints\", \"review API structure\", or needs guidance\n  on REST API best practices, endpoint naming, or request/response design.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n### Writing Style Rules\n\n- **Frontmatter description**: Third-person (\"This skill should be used when...\"), with specific trigger phrases in quotes.\n- **Body**: Imperative/infinitive form (\"Parse the config file,\" not \"You should parse the config file\").\n- **Length**: Keep SKILL.md body under 3,000 words (ideally 1,500-2,000). Move detailed content to `references/`.\n\n### Skill Directory Structure\n\n```\nskill-name/\n├── SKILL.md              # Core knowledge (required)\n├── references/           # Detailed docs loaded on demand\n│   ├── patterns.md\n│   └── advanced.md\n├── examples/             # Working code examples\n│   └── sample-config.json\n└── scripts/              # Utility scripts\n    └── validate.sh\n```\n\n### Progressive Disclosure Levels\n\n1. **Metadata** (always in context): name + description (~100 words)\n2. **SKILL.md body** (when skill triggers): core knowledge (<5k words)\n3. **Bundled resources** (as needed): references, examples, scripts (unlimited)\n\n## Agents\n\n**Location**: `agents/agent-name.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                         |\n| ------------- | -------- | ------ | --------------------------------------------------- |\n| `name`        | Yes      | String | Lowercase, hyphens, 3-50 chars                      |\n| `description` | Yes      | String | Triggering conditions with `<example>` blocks       |\n| `model`       | Yes      | String | `inherit`, `sonnet`, `opus`, or `haiku`             |\n| `color`       | Yes      | String | `blue`, `cyan`, `green`, `yellow`, `magenta`, `red` |\n| `tools`       | No       | Array  | Restrict to specific tools                          |\n\n### Example Agent\n\n```markdown\n---\nname: code-reviewer\ndescription: Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices.\n\n<example>\nContext: User has just written a new module\nuser: \"Can you do a deep review of this code?\"\nassistant: \"I'll use the code-reviewer agent to provide a thorough analysis.\"\n<commentary>\nUser explicitly requested a detailed review, which matches this agent's specialty.\n</commentary>\n</example>\n\n<example>\nContext: User is about to merge a PR\nuser: \"Review this before I merge\"\nassistant: \"Let me run a comprehensive review using the code-reviewer agent.\"\n<commentary>\nPre-merge review benefits from the agent's structured analysis process.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: blue\ntools: [\"Read\", \"Grep\", \"Glob\"]\n---\n\nYou are a code review specialist focused on identifying issues across security, performance, maintainability, and correctness.\n\n**Your Core Responsibilities:**\n\n1. Analyze code structure and organization\n2. Identify security vulnerabilities\n3. Flag performance concerns\n4. Check adherence to best practices\n\n**Analysis Process:**\n\n1. Read all files in scope\n2. Identify patterns and anti-patterns\n3. Categorize findings by severity\n4. Provide specific remediation suggestions\n\n**Output Format:**\nPresent findings grouped by severity (Critical, Warning, Info) with:\n\n- File path and line number\n- Description of the issue\n- Suggested fix\n```\n\n### Agent Naming Rules\n\n- 3-50 characters\n- Lowercase letters, numbers, hyphens only\n- Must start and end with alphanumeric\n- No underscores, spaces, or special characters\n\n### Color Guidelines\n\n- Blue/Cyan: Analysis, review\n- Green: Success-oriented tasks\n- Yellow: Caution, validation\n- Red: Critical, security\n- Magenta: Creative, generation\n\n## Hooks\n\n**Location**: `hooks/hooks.json`\n**Format**: JSON\n\n### Available Events\n\n| Event              | When it fires                   |\n| ------------------ | ------------------------------- |\n| `PreToolUse`       | Before a tool call executes     |\n| `PostToolUse`      | After a tool call completes     |\n| `Stop`             | When Claude finishes a response |\n| `SubagentStop`     | When a subagent finishes        |\n| `SessionStart`     | When a session begins           |\n| `SessionEnd`       | When a session ends             |\n| `UserPromptSubmit` | When the user sends a message   |\n| `PreCompact`       | Before context compaction       |\n| `Notification`     | When a notification fires       |\n\n### Hook Types\n\n**Prompt-based** (recommended for complex logic):\n\n```json\n{\n  \"type\": \"prompt\",\n  \"prompt\": \"Evaluate whether this file write follows project conventions: $TOOL_INPUT\",\n  \"timeout\": 30\n}\n```\n\nSupported events: Stop, SubagentStop, UserPromptSubmit, PreToolUse.\n\n**Command-based** (deterministic checks):\n\n```json\n{\n  \"type\": \"command\",\n  \"command\": \"bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate.sh\",\n  \"timeout\": 60\n}\n```\n\n### Example hooks.json\n\n```json\n{\n  \"PreToolUse\": [\n    {\n      \"matcher\": \"Write|Edit\",\n      \"hooks\": [\n        {\n          \"type\": \"prompt\",\n          \"prompt\": \"Check that this file write follows project coding standards. If it violates standards, explain why and block.\",\n          \"timeout\": 30\n        }\n      ]\n    }\n  ],\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"cat ${CLAUDE_PLUGIN_ROOT}/context/project-context.md\",\n          \"timeout\": 10\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Hook Output Format (Command Hooks)\n\nCommand hooks return JSON to stdout:\n\n```json\n{\n  \"decision\": \"block\",\n  \"reason\": \"File write violates naming convention\"\n}\n```\n\nDecisions: `approve`, `block`, `ask_user` (ask for confirmation).\n\n## MCP Servers\n\n**Location**: `.mcp.json` at plugin root\n**Format**: JSON\n\n### Server Types\n\n**stdio** (local process):\n\n```json\n{\n  \"mcpServers\": {\n    \"my-server\": {\n      \"command\": \"node\",\n      \"args\": [\"${CLAUDE_PLUGIN_ROOT}/servers/server.js\"],\n      \"env\": {\n        \"API_KEY\": \"${API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n**SSE** (remote server, server-sent events transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    }\n  }\n}\n```\n\n**HTTP** (remote server, streamable HTTP transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"api-service\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.example.com/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${API_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variable Expansion\n\nAll MCP configs support `${VAR_NAME}` substitution:\n\n- `${CLAUDE_PLUGIN_ROOT}` — plugin directory (always use for portability)\n- `${ANY_ENV_VAR}` — user environment variables\n\nDocument all required environment variables in the plugin README.\n\n### Directory Servers Without a URL\n\nSome MCP directory entries have no `url` because the endpoint is dynamic. Plugins can reference these servers by **name** instead — if the server name in the plugin's MCP config matches the directory entry name, it is treated the same as a URL match.\n\n## Commands (Legacy)\n\n> **Prefer `skills/*/SKILL.md` for new plugins.** The Cowork UI now presents commands and skills as a single \"Skills\" concept. The `commands/` format still works, but only use it if you specifically need the single-file format with `$ARGUMENTS`/`$1` substitution and inline bash execution.\n\n**Location**: `commands/command-name.md`\n**Format**: Markdown with optional YAML frontmatter\n\n### Frontmatter Fields\n\n| Field           | Required | Type            | Description                                         |\n| --------------- | -------- | --------------- | --------------------------------------------------- |\n| `description`   | No       | String          | Brief description shown in `/help` (under 60 chars) |\n| `allowed-tools` | No       | String or Array | Tools the command can use                           |\n| `model`         | No       | String          | Model override: `sonnet`, `opus`, `haiku`           |\n| `argument-hint` | No       | String          | Documents expected arguments for autocomplete       |\n\n### Example Command\n\n```markdown\n---\ndescription: Review code for security issues\nallowed-tools: Read, Grep, Bash(git:*)\nargument-hint: [file-path]\n---\n\nReview @$1 for security vulnerabilities including:\n\n- SQL injection\n- XSS attacks\n- Authentication bypass\n- Insecure data handling\n\nProvide specific line numbers, severity ratings, and remediation suggestions.\n```\n\n### Key Rules\n\n- Commands are instructions FOR Claude, not messages for the user. Write them as directives.\n- `$ARGUMENTS` captures all arguments as a single string; `$1`, `$2`, `$3` capture positional arguments.\n- `@path` syntax includes file contents in the command context.\n- `!` backtick syntax executes bash inline for dynamic context (e.g., `` !`git diff --name-only` ``).\n- Use `${CLAUDE_PLUGIN_ROOT}` to reference plugin files portably.\n\n### allowed-tools Patterns\n\n```yaml\n# Specific tools\nallowed-tools: Read, Write, Edit, Bash(git:*)\n\n# Bash with specific commands only\nallowed-tools: Bash(npm:*), Read\n\n# MCP tools (specific)\nallowed-tools: [\"mcp__plugin_name_server__tool_name\"]\n```\n\n## CONNECTORS.md\n\n**Location**: Plugin root\n**When to create**: When the plugin references external tools by category rather than specific product\n\n### Format\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. For example, `~~project tracker` might mean\nAsana, Linear, Jira, or any other project tracker with an MCP server.\n\nPlugins are tool-agnostic — they describe workflows in terms of categories\nrather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options            |\n| --------------- | ------------------- | ---------------- | ------------------------ |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday      |\n```\n\n### Using ~~ Placeholders\n\nIn plugin files (skills, agents), reference tools generically:\n\n```markdown\nCheck ~~project tracker for open tickets assigned to the user.\nPost a summary to ~~chat in the team channel.\n```\n\nDuring customization (via the cowork-plugin-customizer skill), these get replaced with specific tool names.\n\n## README.md\n\nEvery plugin should include a README with:\n\n1. **Overview** — what the plugin does\n2. **Components** — list of skills, agents, hooks, MCP servers\n3. **Setup** — any required environment variables or configuration\n4. **Usage** — how to trigger each skill\n5. **Customization** — if CONNECTORS.md exists, mention it\n","cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md":"# Example Plugins\n\nThree complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.\n\n## Minimal Plugin: Single Skill\n\nA simple plugin with one skill and no other components.\n\n### Structure\n\n```\nmeeting-notes/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   └── meeting-notes/\n│       └── SKILL.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"meeting-notes\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Generate structured meeting notes from transcripts\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/meeting-notes/SKILL.md\n\n```markdown\n---\nname: meeting-notes\ndescription: >\n  Generate structured meeting notes from a transcript. Use when the user asks\n  to \"summarize this meeting\", \"create meeting notes\", \"extract action items\n  from this transcript\", or provides a meeting transcript file.\n---\n\nRead the transcript file the user provided and generate structured meeting notes.\n\nInclude these sections:\n\n1. **Attendees** — list all participants mentioned\n2. **Summary** — 2-3 sentence overview of the meeting\n3. **Key Decisions** — numbered list of decisions made\n4. **Action Items** — table with columns: Owner, Task, Due Date\n5. **Open Questions** — anything unresolved\n\nWrite the notes to a new file named after the transcript with `-notes` appended.\n```\n\n---\n\n## Standard Plugin: Skills + MCP\n\nA plugin that combines domain knowledge, user-initiated actions, and external service integration.\n\n### Structure\n\n```\ncode-quality/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── coding-standards/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── style-rules.md\n│   ├── review-changes/\n│   │   └── SKILL.md\n│   └── fix-lint/\n│       └── SKILL.md\n├── .mcp.json\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"code-quality\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Enforce coding standards with reviews, linting, and style guidance\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/review-changes/SKILL.md\n\n```markdown\n---\nname: review-changes\ndescription: >\n  Review code changes for style and quality issues. Use when the user asks to\n  \"review my changes\", \"check this diff\", \"review for style violations\", or\n  wants a code quality pass on uncommitted work.\n---\n\nRun `git diff --name-only` to get the list of changed files.\n\nFor each changed file:\n\n1. Read the file\n2. Check against the coding-standards skill for style violations\n3. Identify potential bugs or anti-patterns\n4. Flag any security concerns\n\nPresent a summary with:\n\n- File path\n- Issue severity (Error, Warning, Info)\n- Description and suggested fix\n```\n\n### skills/fix-lint/SKILL.md\n\n```markdown\n---\nname: fix-lint\ndescription: >\n  Auto-fix linting issues in changed files. Use when the user asks to\n  \"fix lint errors\", \"clean up linting\", or \"auto-fix my lint issues\".\n---\n\nRun the linter: `npm run lint -- --format json 2>&1`\n\nParse the linter output and fix each issue:\n\n- For auto-fixable issues, apply the fix directly\n- For manual-fix issues, make the correction following project conventions\n- Skip issues that require architectural changes\n\nAfter all fixes, run the linter again to confirm clean output.\n```\n\n### skills/coding-standards/SKILL.md\n\n```yaml\n---\nname: coding-standards\ndescription: >\n  This skill should be used when the user asks about \"coding standards\",\n  \"style guide\", \"naming conventions\", \"code formatting rules\", or needs\n  guidance on project-specific code quality expectations.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n```markdown\n# Coding Standards\n\nProject coding standards and conventions for consistent, high-quality code.\n\n## Core Rules\n\n- Use camelCase for variables and functions\n- Use PascalCase for classes and types\n- Prefer const over let; avoid var\n- Maximum line length: 100 characters\n- Use explicit return types on all exported functions\n\n## Import Order\n\n1. External packages\n2. Internal packages (aliased with @/)\n3. Relative imports\n4. Type-only imports last\n\n## Additional Resources\n\n- **`references/style-rules.md`** — complete style rules by language\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\n---\n\n## Full-Featured Plugin: All Component Types\n\nA plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors.\n\n### Structure\n\n```\nengineering-workflow/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── team-processes/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── workflow-guide.md\n│   ├── standup-prep/\n│   │   └── SKILL.md\n│   └── create-ticket/\n│       └── SKILL.md\n├── agents/\n│   └── ticket-analyzer.md\n├── hooks/\n│   └── hooks.json\n├── .mcp.json\n├── CONNECTORS.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"engineering-workflow\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Streamline engineering workflows: standup prep, ticket management, and code quality\",\n  \"author\": {\n    \"name\": \"User\"\n  },\n  \"keywords\": [\"engineering\", \"workflow\", \"tickets\", \"standup\"]\n}\n```\n\n### agents/ticket-analyzer.md\n\n```markdown\n---\nname: ticket-analyzer\ndescription: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog.\n\n<example>\nContext: User is preparing for sprint planning\nuser: \"Help me triage these new tickets\"\nassistant: \"I'll use the ticket-analyzer agent to review and categorize the tickets.\"\n<commentary>\nTicket triage requires systematic analysis across multiple dimensions, making the agent appropriate.\n</commentary>\n</example>\n\n<example>\nContext: User has a large backlog\nuser: \"Prioritize my backlog for next sprint\"\nassistant: \"Let me analyze the backlog using the ticket-analyzer agent to recommend priorities.\"\n<commentary>\nBacklog prioritization is a multi-step autonomous task well-suited for the agent.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: cyan\ntools: [\"Read\", \"Grep\"]\n---\n\nYou are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies.\n\n**Your Core Responsibilities:**\n\n1. Categorize tickets by type (bug, feature, tech debt, improvement)\n2. Estimate relative effort (S, M, L, XL)\n3. Identify dependencies between tickets\n4. Recommend priority ordering\n\n**Analysis Process:**\n\n1. Read all ticket descriptions\n2. Categorize each by type\n3. Estimate effort based on scope\n4. Map dependencies\n5. Rank by impact-to-effort ratio\n\n**Output Format:**\n| Ticket | Type | Effort | Dependencies | Priority |\n|--------|------|--------|-------------|----------|\n| ... | ... | ... | ... | ... |\n\nFollowed by a brief rationale for the top 5 priorities.\n```\n\n### hooks/hooks.json\n\n```json\n{\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"echo '## Team Context\\n\\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'\",\n          \"timeout\": 5\n        }\n      ]\n    }\n  ]\n}\n```\n\n### CONNECTORS.md\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options       |\n| --------------- | ------------------- | ---------------- | ------------------- |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams     |\n| Source control  | `~~source control`  | GitHub           | GitLab, Bitbucket   |\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"linear\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.linear.app/sse\"\n    },\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    }\n  }\n}\n```\n","customer-support/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2F.claude-plugin%2Fplugin.json -->","customer-support/skills/customer-escalation/SKILL.md":"---\nname: customer-escalation\ndescription: Package an escalation for engineering, product, or leadership with full context. Use when a bug needs engineering attention beyond normal support, multiple customers report the same issue, a customer is threatening to churn, or an issue has sat unresolved past its SLA.\nargument-hint: \"<issue summary> [customer name]\"\n---\n\n# /customer-escalation\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nPackage a support issue into a structured escalation brief for engineering, product, or leadership. Gathers context, structures reproduction steps, assesses business impact, and identifies the right escalation target.\n\n## Usage\n\n```\n/customer-escalation <issue description> [customer name or account]\n```\n\nExamples:\n- `/customer-escalation API returning 500 errors intermittently for Acme Corp`\n- `/customer-escalation Data export is missing rows — 3 customers reported this week`\n- `/customer-escalation SSO login loop affecting all Enterprise customers`\n- `/customer-escalation Customer threatening to churn over missing audit log feature`\n\n## Workflow\n\n### 1. Understand the Issue\n\nParse the input and determine:\n\n- **What's broken or needed**: The core technical or product issue\n- **Who's affected**: Specific customer(s), segment, or all users\n- **How long**: When did this start? How long has the customer been waiting?\n- **What's been tried**: Any troubleshooting or workarounds attempted\n- **Why escalate now**: What makes this need attention beyond normal support\n\nUse the \"When to Escalate vs. Handle in Support\" criteria below to confirm this warrants escalation.\n\n### 2. Gather Context\n\nPull together relevant information from available sources:\n\n- **~~support platform**: Related tickets, timeline of communications, previous troubleshooting\n- **~~CRM** (if connected): Account details, key contacts, previous escalations\n- **~~chat**: Internal discussions about this issue, similar reports from other customers\n- **~~project tracker** (if connected): Related bug reports or feature requests, engineering status\n- **~~knowledge base**: Known issues or workarounds, relevant documentation\n\n### 3. Assess Business Impact\n\nUsing the impact dimensions below, quantify:\n\n- **Breadth**: How many customers/users affected? Growing?\n- **Depth**: Blocked vs. inconvenienced?\n- **Duration**: How long has this been going on?\n- **Revenue**: ARR at risk? Pending deals affected?\n- **Time pressure**: Hard deadline?\n\n### 4. Determine Escalation Target\n\nUsing the escalation tiers below, identify the right target: L2 Support, Engineering, Product, Security, or Leadership.\n\n### 5. Structure Reproduction Steps (for bugs)\n\nIf the issue is a bug, follow the reproduction step best practices below to document clear repro steps with environment details and evidence.\n\n### 6. Generate Escalation Brief\n\n```\n## ESCALATION: [One-line summary]\n\n**Severity:** [Critical / High / Medium]\n**Target team:** [Engineering / Product / Security / Leadership]\n**Reported by:** [Your name/team]\n**Date:** [Today's date]\n\n### Impact\n- **Customers affected:** [Who and how many]\n- **Workflow impact:** [What they can't do]\n- **Revenue at risk:** [If applicable]\n- **Time in queue:** [How long this has been an issue]\n\n### Issue Description\n[Clear, concise description of the problem — 3-5 sentences]\n\n### What's Been Tried\n1. [Troubleshooting step and result]\n2. [Troubleshooting step and result]\n3. [Troubleshooting step and result]\n\n### Reproduction Steps\n[If applicable — follow the format below]\n1. [Step]\n2. [Step]\n3. [Step]\nExpected: [X]\nActual: [Y]\nEnvironment: [Details]\n\n### Customer Communication\n- **Last update to customer:** [Date and what was communicated]\n- **Customer expectation:** [What they're expecting and by when]\n- **Escalation risk:** [Will they escalate further if not resolved by X?]\n\n### What's Needed\n- [Specific ask — \"investigate root cause\", \"prioritize fix\",\n  \"make product decision on X\", \"approve exception for Y\"]\n- **Deadline:** [When this needs resolution or an update]\n\n### Supporting Context\n- [Related tickets or links]\n- [Internal discussion threads]\n- [Documentation or logs]\n```\n\n### 7. Offer Next Steps\n\nAfter generating the escalation:\n- \"Want me to post this in a ~~chat channel for the target team?\"\n- \"Should I update the customer with an interim response?\"\n- \"Want me to set a follow-up reminder to check on this?\"\n- \"Should I draft a customer-facing update with the current status?\"\n\n---\n\n## When to Escalate vs. Handle in Support\n\n### Handle in Support When:\n- The issue has a documented solution or known workaround\n- It's a configuration or setup issue you can resolve\n- The customer needs guidance or training, not a fix\n- The issue is a known limitation with a documented alternative\n- Previous similar tickets were resolved at the support level\n\n### Escalate When:\n- **Technical**: Bug confirmed and needs a code fix, infrastructure investigation needed, data corruption or loss\n- **Complexity**: Issue is beyond support's ability to diagnose, requires access support doesn't have, involves custom implementation\n- **Impact**: Multiple customers affected, production system down, data integrity at risk, security concern\n- **Business**: High-value customer at risk, SLA breach imminent or occurred, customer requesting executive involvement\n- **Time**: Issue has been open beyond SLA, customer has been waiting unreasonably long, normal support channels aren't progressing\n- **Pattern**: Same issue reported by 3+ customers, recurring issue that was supposedly fixed, increasing severity over time\n\n## Escalation Tiers\n\n### L1 → L2 (Support Escalation)\n**From:** Frontline support\n**To:** Senior support / technical support specialists\n**When:** Issue requires deeper investigation, specialized product knowledge, or advanced troubleshooting\n**What to include:** Ticket summary, steps already tried, customer context\n\n### L2 → Engineering\n**From:** Senior support\n**To:** Engineering team (relevant product area)\n**When:** Confirmed bug, infrastructure issue, needs code change, requires system-level investigation\n**What to include:** Full reproduction steps, environment details, logs or error messages, business impact, customer timeline\n\n### L2 → Product\n**From:** Senior support\n**To:** Product management\n**When:** Feature gap causing customer pain, design decision needed, workflow doesn't match customer expectations, competing customer needs require prioritization\n**What to include:** Customer use case, business impact, frequency of request, competitive pressure (if known)\n\n### Any → Security\n**From:** Any support tier\n**To:** Security team\n**When:** Potential data exposure, unauthorized access, vulnerability report, compliance concern\n**What to include:** What was observed, who/what is potentially affected, immediate containment steps taken, urgency assessment\n**Note:** Security escalations bypass normal tier progression — escalate immediately regardless of your level\n\n### Any → Leadership\n**From:** Any tier (usually L2 or manager)\n**To:** Support leadership, executive team\n**When:** High-revenue customer threatening churn, SLA breach on critical account, cross-functional decision needed, exception to policy required, PR or legal risk\n**What to include:** Full business context, revenue at risk, what's been tried, specific decision or action needed, deadline\n\n## Business Impact Assessment\n\nWhen escalating, quantify impact where possible:\n\n### Impact Dimensions\n\n| Dimension | Questions to Answer |\n|-----------|-------------------|\n| **Breadth** | How many customers/users are affected? Is it growing? |\n| **Depth** | How severely are they impacted? Blocked vs. inconvenienced? |\n| **Duration** | How long has this been going on? How long until it's critical? |\n| **Revenue** | What's the ARR at risk? Are there pending deals affected? |\n| **Reputation** | Could this become public? Is it a reference customer? |\n| **Contractual** | Are SLAs being breached? Are there contractual obligations? |\n\n### Severity Shorthand\n\n- **Critical**: Production down, data at risk, security breach, or multiple high-value customers affected. Needs immediate attention.\n- **High**: Major functionality broken, key customer blocked, SLA at risk. Needs same-day attention.\n- **Medium**: Significant issue with workaround, important but not urgent business impact. Needs attention this week.\n\n## Writing Reproduction Steps\n\nGood reproduction steps are the single most valuable thing in a bug escalation. Follow these practices:\n\n1. **Start from a clean state**: Describe the starting point (account type, configuration, permissions)\n2. **Be specific**: \"Click the Export button in the top-right of the Dashboard page\" not \"try to export\"\n3. **Include exact values**: Use specific inputs, dates, IDs — not \"enter some data\"\n4. **Note the environment**: Browser, OS, account type, feature flags, plan level\n5. **Capture the frequency**: Always reproducible? Intermittent? Only under certain conditions?\n6. **Include evidence**: Screenshots, error messages (exact text), network logs, console output\n7. **Note what you've ruled out**: \"Tested in Chrome and Firefox — same behavior\" \"Not account-specific — reproduced on test account\"\n\n## Follow-up Cadence After Escalation\n\nDon't escalate and forget. Maintain ownership of the customer relationship.\n\n| Severity | Internal Follow-up | Customer Update |\n|----------|-------------------|-----------------|\n| **Critical** | Every 2 hours | Every 2-4 hours (or per SLA) |\n| **High** | Every 4 hours | Every 4-8 hours |\n| **Medium** | Daily | Every 1-2 business days |\n\n### Follow-up Actions\n- Check with the receiving team for progress\n- Update the customer even if there's no new information (\"We're still investigating — here's what we know so far\")\n- Adjust severity if the situation changes (better or worse)\n- Document all updates in the ticket for audit trail\n- Close the loop when resolved: confirm with customer, update internal tracking, capture learnings\n\n## De-escalation\n\nNot every escalation stays escalated. De-escalate when:\n- Root cause is found and it's a support-resolvable issue\n- A workaround is found that unblocks the customer\n- The issue resolves itself (but still document root cause)\n- New information changes the severity assessment\n\nWhen de-escalating:\n- Notify the team you escalated to\n- Update the ticket with the resolution\n- Inform the customer of the resolution\n- Document what was learned for future reference\n\n## Escalation Best Practices\n\n1. Always quantify impact — vague escalations get deprioritized\n2. Include reproduction steps for bugs — this is the #1 thing engineering needs\n3. Be clear about what you need — \"investigate\" vs. \"fix\" vs. \"decide\" are different asks\n4. Set and communicate a deadline — urgency without a deadline is ambiguous\n5. Maintain ownership of the customer relationship even after escalating the technical issue\n6. Follow up proactively — don't wait for the receiving team to come to you\n7. Document everything — the escalation trail is valuable for pattern detection and process improvement\n","customer-support/skills/customer-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fcustomer-research%2FSKILL.md -->","customer-support/skills/draft-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fdraft-response%2FSKILL.md -->","customer-support/skills/kb-article/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fkb-article%2FSKILL.md -->","customer-support/skills/ticket-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fticket-triage%2FSKILL.md -->","data/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2F.claude-plugin%2Fplugin.json -->","data/skills/analyze/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fanalyze%2FSKILL.md -->","data/skills/build-dashboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fbuild-dashboard%2FSKILL.md -->","data/skills/create-viz/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fcreate-viz%2FSKILL.md -->","data/skills/data-context-extractor/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2FSKILL.md -->","data/skills/data-context-extractor/references/domain-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fdomain-template.md -->","data/skills/data-context-extractor/references/example-output.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fexample-output.md -->","data/skills/data-context-extractor/references/skill-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fskill-template.md -->","data/skills/data-context-extractor/references/sql-dialects.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fsql-dialects.md -->","data/skills/data-visualization/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-visualization%2FSKILL.md -->","data/skills/explore-data/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fexplore-data%2FSKILL.md -->","data/skills/sql-queries/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fsql-queries%2FSKILL.md -->","data/skills/statistical-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fstatistical-analysis%2FSKILL.md -->","data/skills/validate-data/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fvalidate-data%2FSKILL.md -->","data/skills/write-query/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fwrite-query%2FSKILL.md -->","design/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2F.claude-plugin%2Fplugin.json -->","design/skills/accessibility-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Faccessibility-review%2FSKILL.md -->","design/skills/design-critique/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-critique%2FSKILL.md -->","design/skills/design-handoff/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-handoff%2FSKILL.md -->","design/skills/design-system/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-system%2FSKILL.md -->","design/skills/research-synthesis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fresearch-synthesis%2FSKILL.md -->","design/skills/user-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fuser-research%2FSKILL.md -->","design/skills/ux-copy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fux-copy%2FSKILL.md -->","engineering/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2F.claude-plugin%2Fplugin.json -->","engineering/skills/architecture/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Farchitecture%2FSKILL.md -->","engineering/skills/code-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fcode-review%2FSKILL.md -->","engineering/skills/debug/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdebug%2FSKILL.md -->","engineering/skills/deploy-checklist/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdeploy-checklist%2FSKILL.md -->","engineering/skills/documentation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdocumentation%2FSKILL.md -->","engineering/skills/incident-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fincident-response%2FSKILL.md -->","engineering/skills/standup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fstandup%2FSKILL.md -->","engineering/skills/system-design/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fsystem-design%2FSKILL.md -->","engineering/skills/tech-debt/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftech-debt%2FSKILL.md -->","engineering/skills/testing-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftesting-strategy%2FSKILL.md -->","enterprise-search/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2F.claude-plugin%2Fplugin.json -->","enterprise-search/skills/digest/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fdigest%2FSKILL.md -->","enterprise-search/skills/knowledge-synthesis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fknowledge-synthesis%2FSKILL.md -->","enterprise-search/skills/search-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch-strategy%2FSKILL.md -->","enterprise-search/skills/search/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch%2FSKILL.md -->","enterprise-search/skills/source-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsource-management%2FSKILL.md -->","finance/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2F.claude-plugin%2Fplugin.json -->","finance/skills/audit-support/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Faudit-support%2FSKILL.md -->","finance/skills/close-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fclose-management%2FSKILL.md -->","finance/skills/financial-statements/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Ffinancial-statements%2FSKILL.md -->","finance/skills/journal-entry-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry-prep%2FSKILL.md -->","finance/skills/journal-entry/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry%2FSKILL.md -->","finance/skills/reconciliation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Freconciliation%2FSKILL.md -->","finance/skills/sox-testing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fsox-testing%2FSKILL.md -->","finance/skills/variance-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fvariance-analysis%2FSKILL.md -->","human-resources/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2F.claude-plugin%2Fplugin.json -->","human-resources/skills/comp-analysis/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fcomp-analysis%2FSKILL.md -->","human-resources/skills/draft-offer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fdraft-offer%2FSKILL.md -->","human-resources/skills/interview-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Finterview-prep%2FSKILL.md -->","human-resources/skills/onboarding/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fonboarding%2FSKILL.md -->","human-resources/skills/org-planning/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Forg-planning%2FSKILL.md -->","human-resources/skills/people-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpeople-report%2FSKILL.md -->","human-resources/skills/performance-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fperformance-review%2FSKILL.md -->","human-resources/skills/policy-lookup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpolicy-lookup%2FSKILL.md -->","human-resources/skills/recruiting-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Frecruiting-pipeline%2FSKILL.md -->","legal/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2F.claude-plugin%2Fplugin.json -->","legal/skills/brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fbrief%2FSKILL.md -->","legal/skills/compliance-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fcompliance-check%2FSKILL.md -->","legal/skills/legal-response/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-response%2FSKILL.md -->","legal/skills/legal-risk-assessment/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-risk-assessment%2FSKILL.md -->","legal/skills/meeting-briefing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fmeeting-briefing%2FSKILL.md -->","legal/skills/review-contract/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Freview-contract%2FSKILL.md -->","legal/skills/signature-request/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fsignature-request%2FSKILL.md -->","legal/skills/triage-nda/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Ftriage-nda%2FSKILL.md -->","legal/skills/vendor-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fvendor-check%2FSKILL.md -->","marketing/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2F.claude-plugin%2Fplugin.json -->","marketing/skills/brand-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fbrand-review%2FSKILL.md -->","marketing/skills/campaign-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcampaign-plan%2FSKILL.md -->","marketing/skills/competitive-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","marketing/skills/content-creation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcontent-creation%2FSKILL.md -->","marketing/skills/draft-content/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fdraft-content%2FSKILL.md -->","marketing/skills/email-sequence/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Femail-sequence%2FSKILL.md -->","marketing/skills/performance-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fperformance-report%2FSKILL.md -->","marketing/skills/seo-audit/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fseo-audit%2FSKILL.md -->","operations/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2F.claude-plugin%2Fplugin.json -->","operations/skills/capacity-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcapacity-plan%2FSKILL.md -->","operations/skills/change-request/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fchange-request%2FSKILL.md -->","operations/skills/compliance-tracking/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcompliance-tracking%2FSKILL.md -->","operations/skills/process-doc/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-doc%2FSKILL.md -->","operations/skills/process-optimization/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-optimization%2FSKILL.md -->","operations/skills/risk-assessment/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frisk-assessment%2FSKILL.md -->","operations/skills/runbook/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frunbook%2FSKILL.md -->","operations/skills/status-report/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fstatus-report%2FSKILL.md -->","operations/skills/vendor-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fvendor-review%2FSKILL.md -->","partner-built/apollo/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2F.claude-plugin%2Fplugin.json -->","partner-built/apollo/skills/enrich-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fenrich-lead%2FSKILL.md -->","partner-built/apollo/skills/prospect/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fprospect%2FSKILL.md -->","partner-built/apollo/skills/sequence-load/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fsequence-load%2FSKILL.md -->","partner-built/brand-voice/.claude-plugin/marketplace.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fmarketplace.json -->","partner-built/brand-voice/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fplugin.json -->","partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2FSKILL.md -->","partner-built/brand-voice/skills/brand-voice-enforcement/references/before-after-examples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fbefore-after-examples.md -->","partner-built/brand-voice/skills/brand-voice-enforcement/references/voice-constant-tone-flexes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fvoice-constant-tone-flexes.md -->","partner-built/brand-voice/skills/discover-brand/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2FSKILL.md -->","partner-built/brand-voice/skills/discover-brand/references/search-strategies.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsearch-strategies.md -->","partner-built/brand-voice/skills/discover-brand/references/source-ranking.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsource-ranking.md -->","partner-built/brand-voice/skills/guideline-generation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2FSKILL.md -->","partner-built/brand-voice/skills/guideline-generation/references/confidence-scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fconfidence-scoring.md -->","partner-built/brand-voice/skills/guideline-generation/references/guideline-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fguideline-template.md -->","partner-built/common-room/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2F.claude-plugin%2Fplugin.json -->","partner-built/common-room/skills/account-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2FSKILL.md -->","partner-built/common-room/skills/account-research/references/signals-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2Freferences%2Fsignals-guide.md -->","partner-built/common-room/skills/call-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2FSKILL.md -->","partner-built/common-room/skills/call-prep/references/call-types-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2Freferences%2Fcall-types-guide.md -->","partner-built/common-room/skills/compose-outreach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2FSKILL.md -->","partner-built/common-room/skills/compose-outreach/references/outreach-formats-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2Freferences%2Foutreach-formats-guide.md -->","partner-built/common-room/skills/contact-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2FSKILL.md -->","partner-built/common-room/skills/contact-research/references/contact-signals-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2Freferences%2Fcontact-signals-guide.md -->","partner-built/common-room/skills/prospect/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2FSKILL.md -->","partner-built/common-room/skills/prospect/references/prospect-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2Freferences%2Fprospect-guide.md -->","partner-built/common-room/skills/weekly-prep-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2FSKILL.md -->","partner-built/common-room/skills/weekly-prep-brief/references/briefing-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2Freferences%2Fbriefing-guide.md -->","partner-built/slack/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2F.claude-plugin%2Fplugin.json -->","partner-built/slack/skills/slack-messaging/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-messaging%2FSKILL.md -->","partner-built/slack/skills/slack-search/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-search%2FSKILL.md -->","partner-built/zoom-plugin/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2F.claude-plugin%2Fplugin.json -->","partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-bot%2FSKILL.md -->","partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-meeting-app%2FSKILL.md -->","partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fchoose-zoom-approach%2FSKILL.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/distribution-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fdistribution-methods.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/jwt-authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fjwt-authentication.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/session-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fsession-lifecycle.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/two-roles-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Ftwo-roles-pattern.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/agent-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fagent-integration.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/annotations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fannotations.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/auto-reconnection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fauto-reconnection.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/byop-custom-pin.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fbyop-custom-pin.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/customer-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fcustomer-integration.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/multi-tab-persistence.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fmulti-tab-persistence.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/privacy-masking.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fprivacy-masking.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/remote-assist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fremote-assist.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/examples/session-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fsession-events.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fget-started.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/features.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started-official.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started-official.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/session-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsession-events.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/references/settings-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsettings-reference.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/browser-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fbrowser-compatibility.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/cors-csp.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcors-csp.md -->","partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/contact-center/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/android/concepts/sdk-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fconcepts%2Fsdk-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/android/examples/service-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fexamples%2Fservice-patterns.md -->","partner-built/zoom-plugin/skills/contact-center/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/contact-center/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/ios/concepts/sdk-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fconcepts%2Fsdk-lifecycle.md -->","partner-built/zoom-plugin/skills/contact-center/ios/examples/service-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fexamples%2Fservice-patterns.md -->","partner-built/zoom-plugin/skills/contact-center/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/contact-center/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/contact-center/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/contact-center/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/contact-center/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/contact-center/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/contact-center/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/contact-center/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/contact-center/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/contact-center/web/concepts/lifecycle-and-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","partner-built/zoom-plugin/skills/contact-center/web/examples/app-context-and-state.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fexamples%2Fapp-context-and-state.md -->","partner-built/zoom-plugin/skills/contact-center/web/references/web-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Freferences%2Fweb-reference-map.md -->","partner-built/zoom-plugin/skills/contact-center/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom-integration%2FSKILL.md -->","partner-built/zoom-plugin/skills/debug-zoom/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom%2FSKILL.md -->","partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdesign-mcp-workflow%2FSKILL.md -->","partner-built/zoom-plugin/skills/general/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/general/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FSKILL.md -->","partner-built/zoom-plugin/skills/general/references/app-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fapp-types.md -->","partner-built/zoom-plugin/skills/general/references/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthentication.md -->","partner-built/zoom-plugin/skills/general/references/authorization-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthorization-patterns.md -->","partner-built/zoom-plugin/skills/general/references/automatic-skill-chaining-rest-webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fautomatic-skill-chaining-rest-webhooks.md -->","partner-built/zoom-plugin/skills/general/references/community-repos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fcommunity-repos.md -->","partner-built/zoom-plugin/skills/general/references/distributed-meeting-fallback-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fdistributed-meeting-fallback-architecture.md -->","partner-built/zoom-plugin/skills/general/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/general/references/interview-answer-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Finterview-answer-routing.md -->","partner-built/zoom-plugin/skills/general/references/known-limitations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fknown-limitations.md -->","partner-built/zoom-plugin/skills/general/references/marketplace.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmarketplace.md -->","partner-built/zoom-plugin/skills/general/references/meeting-webhooks-oauth-refresh-orchestration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmeeting-webhooks-oauth-refresh-orchestration.md -->","partner-built/zoom-plugin/skills/general/references/query-routing-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fquery-routing-playbook.md -->","partner-built/zoom-plugin/skills/general/references/routing-implementation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Frouting-implementation.md -->","partner-built/zoom-plugin/skills/general/references/scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fscopes.md -->","partner-built/zoom-plugin/skills/general/references/sdk-logs-troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-logs-troubleshooting.md -->","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-guide.md -->","partner-built/zoom-plugin/skills/general/references/sdk-upgrade-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-workflow.md -->","partner-built/zoom-plugin/skills/general/use-cases/ai-companion-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-companion-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/ai-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/apis-vs-mcp-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fapis-vs-mcp-routing.md -->","partner-built/zoom-plugin/skills/general/use-cases/backend-automation-s2s-oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fbackend-automation-s2s-oauth.md -->","partner-built/zoom-plugin/skills/general/use-cases/collaborative-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcollaborative-apps.md -->","partner-built/zoom-plugin/skills/general/use-cases/contact-center-app-lifecycle-and-context-switching.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-app-lifecycle-and-context-switching.md -->","partner-built/zoom-plugin/skills/general/use-cases/contact-center-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/custom-meeting-ui-web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-meeting-ui-web.md -->","partner-built/zoom-plugin/skills/general/use-cases/custom-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-video.md -->","partner-built/zoom-plugin/skills/general/use-cases/customer-support-cobrowsing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustomer-support-cobrowsing.md -->","partner-built/zoom-plugin/skills/general/use-cases/electron-meeting-embed.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Felectron-meeting-embed.md -->","partner-built/zoom-plugin/skills/general/use-cases/embed-meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fembed-meetings.md -->","partner-built/zoom-plugin/skills/general/use-cases/enterprise-app-deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fenterprise-app-deployment.md -->","partner-built/zoom-plugin/skills/general/use-cases/flutter-video-sessions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fflutter-video-sessions.md -->","partner-built/zoom-plugin/skills/general/use-cases/form-completion-assistant.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fform-completion-assistant.md -->","partner-built/zoom-plugin/skills/general/use-cases/hd-video-resolution.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhd-video-resolution.md -->","partner-built/zoom-plugin/skills/general/use-cases/high-volume-meeting-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhigh-volume-meeting-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/immersive-experiences.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fimmersive-experiences.md -->","partner-built/zoom-plugin/skills/general/use-cases/in-meeting-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fin-meeting-apps.md -->","partner-built/zoom-plugin/skills/general/use-cases/marketplace-publishing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmarketplace-publishing.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-automation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-automation.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-bots.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-bots.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-details-with-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-details-with-events.md -->","partner-built/zoom-plugin/skills/general/use-cases/meeting-links-vs-embedding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-links-vs-embedding.md -->","partner-built/zoom-plugin/skills/general/use-cases/minutes-calculation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fminutes-calculation.md -->","partner-built/zoom-plugin/skills/general/use-cases/native-meeting-sdk-multi-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-meeting-sdk-multi-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/native-video-sdk-multi-platform.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-video-sdk-multi-platform.md -->","partner-built/zoom-plugin/skills/general/use-cases/prebuilt-video-ui.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprebuilt-video-ui.md -->","partner-built/zoom-plugin/skills/general/use-cases/probe-sdk-preflight-readiness-gate.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprobe-sdk-preflight-readiness-gate.md -->","partner-built/zoom-plugin/skills/general/use-cases/qss-monitoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fqss-monitoring.md -->","partner-built/zoom-plugin/skills/general/use-cases/raw-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fraw-recording.md -->","partner-built/zoom-plugin/skills/general/use-cases/react-native-meeting-embed.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-meeting-embed.md -->","partner-built/zoom-plugin/skills/general/use-cases/react-native-video-sessions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-video-sessions.md -->","partner-built/zoom-plugin/skills/general/use-cases/real-time-media-streams.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freal-time-media-streams.md -->","partner-built/zoom-plugin/skills/general/use-cases/recording-download-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-download-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/recording-transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-transcription.md -->","partner-built/zoom-plugin/skills/general/use-cases/retrieve-meeting-and-subscribe-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fretrieve-meeting-and-subscribe-events.md -->","partner-built/zoom-plugin/skills/general/use-cases/rivet-event-driven-api-orchestrator.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frivet-event-driven-api-orchestrator.md -->","partner-built/zoom-plugin/skills/general/use-cases/saas-app-oauth-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsaas-app-oauth-integration.md -->","partner-built/zoom-plugin/skills/general/use-cases/scribe-transcription-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fscribe-transcription-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/sdk-size-optimization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-size-optimization.md -->","partner-built/zoom-plugin/skills/general/use-cases/sdk-wrappers-gui.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-wrappers-gui.md -->","partner-built/zoom-plugin/skills/general/use-cases/server-to-server-oauth-with-webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fserver-to-server-oauth-with-webhooks.md -->","partner-built/zoom-plugin/skills/general/use-cases/team-chat-llm-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fteam-chat-llm-bot.md -->","partner-built/zoom-plugin/skills/general/use-cases/testing-development.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftesting-development.md -->","partner-built/zoom-plugin/skills/general/use-cases/token-and-scope-troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftoken-and-scope-troubleshooting.md -->","partner-built/zoom-plugin/skills/general/use-cases/transcription-bot-linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftranscription-bot-linux.md -->","partner-built/zoom-plugin/skills/general/use-cases/usage-reporting-analytics.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fusage-reporting-analytics.md -->","partner-built/zoom-plugin/skills/general/use-cases/user-and-meeting-creation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fuser-and-meeting-creation.md -->","partner-built/zoom-plugin/skills/general/use-cases/video-sdk-bring-your-own-storage.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvideo-sdk-bring-your-own-storage.md -->","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-campaign-web-mobile-wrapper.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-campaign-web-mobile-wrapper.md -->","partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-knowledge-base-sync-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-knowledge-base-sync-pipeline.md -->","partner-built/zoom-plugin/skills/general/use-cases/web-sdk-embedding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fweb-sdk-embedding.md -->","partner-built/zoom-plugin/skills/general/use-cases/zoom-phone-smart-embed-crm.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fzoom-phone-smart-embed-crm.md -->","partner-built/zoom-plugin/skills/meeting-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fandroid.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/authentication-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fauthentication-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/join-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fjoin-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/raw-data-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fraw-data-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/electron-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Felectron-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Flinux.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/meeting-sdk-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fmeeting-sdk-bot.md -->","partner-built/zoom-plugin/skills/meeting-sdk/linux/references/linux-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fmacos.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/macos-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/macos/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/auth-and-token-model.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fauth-and-token-model.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/join-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fjoin-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/provider-hook-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fprovider-hook-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/start-meeting-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fstart-meeting-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/android-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fandroid-setup.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/ios-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fios-setup.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/native-bridge-notes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fnative-bridge-notes.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/wrapper-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fwrapper-api.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fai-companion.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fandroid.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/bot-authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbot-authentication.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmacos.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/multiple-meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmultiple-meetings.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/signature-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fsignature-playbook.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/triage-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftriage-intake.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftroubleshooting.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/unreal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Funreal.md -->","partner-built/zoom-plugin/skills/meeting-sdk/references/webinars.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fwebinars.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/examples/join-start-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fexamples%2Fjoin-start-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/unreal-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Funreal-reference-map.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/unreal/unreal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Funreal.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/references/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2Freferences%2FREADME.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/references/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2Freferences%2FREADME.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/browser-support.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fbrowser-support.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/sharedarraybuffer.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fsharedarraybuffer.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/client-view-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fclient-view-basic.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/examples/component-view-react.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fcomponent-view-react.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-breakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-ui-customization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-ui-customization.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/sharedarraybuffer-gallery-view.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fsharedarraybuffer-gallery-view.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-performance-cpu.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-performance-cpu.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-timeout-browser-restriction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-timeout-browser-restriction.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-tracking-id.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-tracking-id.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/references/web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FSKILL.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-architecture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-vs-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-vs-raw-data.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fai-companion.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/authentication-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fauthentication-pattern.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/captions-transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcaptions-transcription.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/custom-ui-video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcustom-ui-video-rendering.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/local-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Flocal-recording.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/send-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fsend-raw-data.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/service-quality.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fservice-quality.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/share-raw-data-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fshare-raw-data-capture.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/video-advanced.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fvideo-advanced.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fdeployment.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/interface-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Finterface-methods.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/references/windows-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/windows-message-loop.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","partner-built/zoom-plugin/skills/oauth/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/oauth/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FSKILL.md -->","partner-built/zoom-plugin/skills/oauth/concepts/oauth-flows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Foauth-flows.md -->","partner-built/zoom-plugin/skills/oauth/concepts/pkce.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fpkce.md -->","partner-built/zoom-plugin/skills/oauth/concepts/scopes-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fscopes-architecture.md -->","partner-built/zoom-plugin/skills/oauth/concepts/state-parameter.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fstate-parameter.md -->","partner-built/zoom-plugin/skills/oauth/concepts/token-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Ftoken-lifecycle.md -->","partner-built/zoom-plugin/skills/oauth/examples/device-flow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fdevice-flow.md -->","partner-built/zoom-plugin/skills/oauth/examples/pkce-implementation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fpkce-implementation.md -->","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-basic.md -->","partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-redis.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-redis.md -->","partner-built/zoom-plugin/skills/oauth/examples/token-refresh.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Ftoken-refresh.md -->","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-basic.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-basic.md -->","partner-built/zoom-plugin/skills/oauth/examples/user-oauth-mysql.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-mysql.md -->","partner-built/zoom-plugin/skills/oauth/references/classic-scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fclassic-scopes.md -->","partner-built/zoom-plugin/skills/oauth/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/oauth/references/granular-scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fgranular-scopes.md -->","partner-built/zoom-plugin/skills/oauth/references/oauth-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Foauth-errors.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/redirect-uri-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fredirect-uri-issues.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/scope-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fscope-issues.md -->","partner-built/zoom-plugin/skills/oauth/troubleshooting/token-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Ftoken-issues.md -->","partner-built/zoom-plugin/skills/phone/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/phone/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FSKILL.md -->","partner-built/zoom-plugin/skills/phone/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/phone/examples/phone-api-service-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fphone-api-service-pattern.md -->","partner-built/zoom-plugin/skills/phone/examples/smart-embed-postmessage-bridge.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fsmart-embed-postmessage-bridge.md -->","partner-built/zoom-plugin/skills/phone/references/call-handling-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcall-handling-patterns.md -->","partner-built/zoom-plugin/skills/phone/references/crm-sample-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcrm-sample-validation.md -->","partner-built/zoom-plugin/skills/phone/references/deprecations-and-migrations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fdeprecations-and-migrations.md -->","partner-built/zoom-plugin/skills/phone/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/phone/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/phone/references/smart-embed-event-contract.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsmart-embed-event-contract.md -->","partner-built/zoom-plugin/skills/phone/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/phone/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/phone/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-integration%2FSKILL.md -->","partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-product%2FSKILL.md -->","partner-built/zoom-plugin/skills/probe-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/probe-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/probe-sdk/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/probe-sdk/examples/comprehensive-network-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fcomprehensive-network-pattern.md -->","partner-built/zoom-plugin/skills/probe-sdk/examples/diagnostic-page-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fdiagnostic-page-pattern.md -->","partner-built/zoom-plugin/skills/probe-sdk/probe-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fprobe-sdk.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/probe-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fprobe-reference-map.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/probe-sdk/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/probe-sdk/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/probe-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rest-api/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rest-api/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FSKILL.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/api-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fapi-architecture.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/authentication-flows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fauthentication-flows.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/meeting-urls-and-sdk-joining.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fmeeting-urls-and-sdk-joining.md -->","partner-built/zoom-plugin/skills/rest-api/concepts/rate-limiting-strategy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Frate-limiting-strategy.md -->","partner-built/zoom-plugin/skills/rest-api/examples/graphql-queries.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fgraphql-queries.md -->","partner-built/zoom-plugin/skills/rest-api/examples/meeting-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fmeeting-lifecycle.md -->","partner-built/zoom-plugin/skills/rest-api/examples/recording-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Frecording-pipeline.md -->","partner-built/zoom-plugin/skills/rest-api/examples/user-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fuser-management.md -->","partner-built/zoom-plugin/skills/rest-api/examples/webhook-server.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fwebhook-server.md -->","partner-built/zoom-plugin/skills/rest-api/references/accounts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Faccounts.md -->","partner-built/zoom-plugin/skills/rest-api/references/ai-companion.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-companion.md -->","partner-built/zoom-plugin/skills/rest-api/references/ai-services.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-services.md -->","partner-built/zoom-plugin/skills/rest-api/references/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauthentication.md -->","partner-built/zoom-plugin/skills/rest-api/references/auto-dialer.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauto-dialer.md -->","partner-built/zoom-plugin/skills/rest-api/references/calendar.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcalendar.md -->","partner-built/zoom-plugin/skills/rest-api/references/chatbot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fchatbot.md -->","partner-built/zoom-plugin/skills/rest-api/references/clips.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fclips.md -->","partner-built/zoom-plugin/skills/rest-api/references/cobrowse-sdk-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcobrowse-sdk-api.md -->","partner-built/zoom-plugin/skills/rest-api/references/commerce.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcommerce.md -->","partner-built/zoom-plugin/skills/rest-api/references/contact-center.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcontact-center.md -->","partner-built/zoom-plugin/skills/rest-api/references/crc.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcrc.md -->","partner-built/zoom-plugin/skills/rest-api/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rest-api/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/rest-api/references/graphql.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fgraphql.md -->","partner-built/zoom-plugin/skills/rest-api/references/healthcare.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fhealthcare.md -->","partner-built/zoom-plugin/skills/rest-api/references/mail.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmail.md -->","partner-built/zoom-plugin/skills/rest-api/references/marketplace-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmarketplace-apps.md -->","partner-built/zoom-plugin/skills/rest-api/references/meetings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmeetings.md -->","partner-built/zoom-plugin/skills/rest-api/references/number-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fnumber-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/openapi.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fopenapi.md -->","partner-built/zoom-plugin/skills/rest-api/references/phone.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fphone.md -->","partner-built/zoom-plugin/skills/rest-api/references/qss.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fqss.md -->","partner-built/zoom-plugin/skills/rest-api/references/quality-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fquality-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/rate-limits.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frate-limits.md -->","partner-built/zoom-plugin/skills/rest-api/references/recordings.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frecordings.md -->","partner-built/zoom-plugin/skills/rest-api/references/reports.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Freports.md -->","partner-built/zoom-plugin/skills/rest-api/references/revenue-accelerator.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frevenue-accelerator.md -->","partner-built/zoom-plugin/skills/rest-api/references/rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frooms.md -->","partner-built/zoom-plugin/skills/rest-api/references/scheduler.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscheduler.md -->","partner-built/zoom-plugin/skills/rest-api/references/scim2.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscim2.md -->","partner-built/zoom-plugin/skills/rest-api/references/tasks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Ftasks.md -->","partner-built/zoom-plugin/skills/rest-api/references/team-chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fteam-chat.md -->","partner-built/zoom-plugin/skills/rest-api/references/users.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fusers.md -->","partner-built/zoom-plugin/skills/rest-api/references/video-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/video-sdk-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-sdk-api.md -->","partner-built/zoom-plugin/skills/rest-api/references/virtual-agent.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvirtual-agent.md -->","partner-built/zoom-plugin/skills/rest-api/references/webinars.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwebinars.md -->","partner-built/zoom-plugin/skills/rest-api/references/whiteboard.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwhiteboard.md -->","partner-built/zoom-plugin/skills/rest-api/references/workforce-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fworkforce-management.md -->","partner-built/zoom-plugin/skills/rest-api/references/zoom-docs.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fzoom-docs.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/rest-api/troubleshooting/token-scope-playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Ftoken-scope-playbook.md -->","partner-built/zoom-plugin/skills/rivet-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/rivet-sdk/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/rivet-sdk/examples/getting-started-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fgetting-started-pattern.md -->","partner-built/zoom-plugin/skills/rivet-sdk/examples/multi-client-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fmulti-client-pattern.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/rivet-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Frivet-reference-map.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/source-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsource-map.md -->","partner-built/zoom-plugin/skills/rivet-sdk/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/rivet-sdk/rivet-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Frivet-sdk.md -->","partner-built/zoom-plugin/skills/rivet-sdk/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/rivet-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/rtms/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/rtms/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FSKILL.md -->","partner-built/zoom-plugin/skills/rtms/concepts/connection-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Fconnection-architecture.md -->","partner-built/zoom-plugin/skills/rtms/concepts/lifecycle-flow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Flifecycle-flow.md -->","partner-built/zoom-plugin/skills/rtms/examples/ai-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fai-integration.md -->","partner-built/zoom-plugin/skills/rtms/examples/manual-websocket.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fmanual-websocket.md -->","partner-built/zoom-plugin/skills/rtms/examples/rtms-bot.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Frtms-bot.md -->","partner-built/zoom-plugin/skills/rtms/examples/sdk-quickstart.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fsdk-quickstart.md -->","partner-built/zoom-plugin/skills/rtms/references/connection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fconnection.md -->","partner-built/zoom-plugin/skills/rtms/references/data-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fdata-types.md -->","partner-built/zoom-plugin/skills/rtms/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/rtms/references/media-types.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fmedia-types.md -->","partner-built/zoom-plugin/skills/rtms/references/quickstart.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fquickstart.md -->","partner-built/zoom-plugin/skills/rtms/references/webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fwebhooks.md -->","partner-built/zoom-plugin/skills/rtms/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/scribe/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/scribe/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FSKILL.md -->","partner-built/zoom-plugin/skills/scribe/concepts/auth-and-processing-modes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fconcepts%2Fauth-and-processing-modes.md -->","partner-built/zoom-plugin/skills/scribe/examples/batch-webhook-pipeline.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Fbatch-webhook-pipeline.md -->","partner-built/zoom-plugin/skills/scribe/examples/fast-mode-node.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Ffast-mode-node.md -->","partner-built/zoom-plugin/skills/scribe/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/scribe/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/scribe/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/scribe/references/versioning-and-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fversioning-and-drift.md -->","partner-built/zoom-plugin/skills/scribe/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/scribe/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-mcp%2FSKILL.md -->","partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-oauth%2FSKILL.md -->","partner-built/zoom-plugin/skills/start/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fstart%2FSKILL.md -->","partner-built/zoom-plugin/skills/team-chat/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/team-chat/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FSKILL.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/api-selection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fapi-selection.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/authentication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fauthentication.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/deployment.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fdeployment.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/environment-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fenvironment-setup.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/message-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fmessage-structure.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/security.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fsecurity.md -->","partner-built/zoom-plugin/skills/team-chat/concepts/webhooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fwebhooks.md -->","partner-built/zoom-plugin/skills/team-chat/examples/button-actions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fbutton-actions.md -->","partner-built/zoom-plugin/skills/team-chat/examples/channel-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchannel-management.md -->","partner-built/zoom-plugin/skills/team-chat/examples/chatbot-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchatbot-setup.md -->","partner-built/zoom-plugin/skills/team-chat/examples/database-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdatabase-integration.md -->","partner-built/zoom-plugin/skills/team-chat/examples/dropdown-selects.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdropdown-selects.md -->","partner-built/zoom-plugin/skills/team-chat/examples/form-submissions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fform-submissions.md -->","partner-built/zoom-plugin/skills/team-chat/examples/llm-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fllm-integration.md -->","partner-built/zoom-plugin/skills/team-chat/examples/multi-step-workflows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fmulti-step-workflows.md -->","partner-built/zoom-plugin/skills/team-chat/examples/oauth-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Foauth-setup.md -->","partner-built/zoom-plugin/skills/team-chat/examples/scheduled-alerts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fscheduled-alerts.md -->","partner-built/zoom-plugin/skills/team-chat/examples/send-message.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fsend-message.md -->","partner-built/zoom-plugin/skills/team-chat/examples/slash-commands.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fslash-commands.md -->","partner-built/zoom-plugin/skills/team-chat/examples/token-management.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Ftoken-management.md -->","partner-built/zoom-plugin/skills/team-chat/get-started.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fget-started.md -->","partner-built/zoom-plugin/skills/team-chat/references/api-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fapi-reference.md -->","partner-built/zoom-plugin/skills/team-chat/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/team-chat/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/team-chat/references/jid-formats.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fjid-formats.md -->","partner-built/zoom-plugin/skills/team-chat/references/message-cards.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fmessage-cards.md -->","partner-built/zoom-plugin/skills/team-chat/references/rate-limits.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Frate-limits.md -->","partner-built/zoom-plugin/skills/team-chat/references/sample-comparison.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsample-comparison.md -->","partner-built/zoom-plugin/skills/team-chat/references/samples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsamples.md -->","partner-built/zoom-plugin/skills/team-chat/references/scopes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fscopes.md -->","partner-built/zoom-plugin/skills/team-chat/references/webhook-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fwebhook-events.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/deployment-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fdeployment-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/message-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fmessage-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/oauth-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Foauth-issues.md -->","partner-built/zoom-plugin/skills/team-chat/troubleshooting/webhook-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fwebhook-issues.md -->","partner-built/zoom-plugin/skills/ui-toolkit/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FSKILL.md -->","partner-built/zoom-plugin/skills/ui-toolkit/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/ui-toolkit/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/android/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/android/android.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fandroid.md -->","partner-built/zoom-plugin/skills/video-sdk/android/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/android/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/android/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/android/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/android/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/event-handling-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fevent-handling-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/flutter-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fflutter-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/ios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fios.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/raw-data-vs-canvas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fraw-data-vs-canvas.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/cloud-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcloud-recording.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/live-streaming.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Flive-streaming.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/qt-gtk-integration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fqt-gtk-integration.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-audio-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-audio-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/examples/virtual-audio-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fvirtual-audio-video.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/linux.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Flinux.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/references/linux-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/pulseaudio-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fpulseaudio-setup.md -->","partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/qt-dependencies.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fqt-dependencies.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/macos.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fmacos.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/macos-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/macos/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/event-handling-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fevent-handling-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/examples/setup-guide.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/module-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fmodule-map.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/official-sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/references/react-native-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Freact-native-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/deprecated-and-contradictions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/version-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","partner-built/zoom-plugin/skills/video-sdk/references/authorization.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fauthorization.md -->","partner-built/zoom-plugin/skills/video-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/references/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/video-sdk/references/licensing-and-entitlements.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Flicensing-and-entitlements.md -->","partner-built/zoom-plugin/skills/video-sdk/references/session-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fsession-lifecycle.md -->","partner-built/zoom-plugin/skills/video-sdk/references/token-contract-test-spec.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftoken-contract-test-spec.md -->","partner-built/zoom-plugin/skills/video-sdk/references/triage-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftriage-intake.md -->","partner-built/zoom-plugin/skills/video-sdk/references/troubleshooting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftroubleshooting.md -->","partner-built/zoom-plugin/skills/video-sdk/references/ui-toolkit.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fui-toolkit.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/concepts/lifecycle-workflow.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Flifecycle-workflow.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/unity-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Funity-reference-map.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/references/versioning-and-compatibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fversioning-and-compatibility.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/unity/unity.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Funity.md -->","partner-built/zoom-plugin/skills/video-sdk/web/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/web/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/web/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/chat.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fchat.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/event-handling.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fevent-handling.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/framework-integrations.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fframework-integrations.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/react-hooks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Freact-hooks.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Frecording.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/screen-share.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fscreen-share.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/web/examples/video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fvideo-rendering.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/events-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fevents-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/web-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/web/references/web.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb.md -->","partner-built/zoom-plugin/skills/video-sdk/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FSKILL.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/canvas-vs-raw-data.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fcanvas-vs-raw-data.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/sdk-architecture-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/concepts/singleton-hierarchy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/cloud-recording.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcloud-recording.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/command-channel.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcommand-channel.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/dotnet-winforms/README.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fdotnet-winforms%2FREADME.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-audio-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-audio-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-video-capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/screen-share-subscription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fscreen-share-subscription.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-audio.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-audio.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-video.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-video.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/session-join-pattern.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsession-join-pattern.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/transcription.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Ftranscription.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/examples/video-rendering.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fvideo-rendering.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/delegate-methods.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fdelegate-methods.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/samples.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fsamples.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/references/windows-reference.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/build-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/windows-message-loop.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","partner-built/zoom-plugin/skills/video-sdk/windows/windows.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fwindows.md -->","partner-built/zoom-plugin/skills/virtual-agent/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/virtual-agent/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/concepts/webview-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fconcepts%2Fwebview-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/examples/js-bridge-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fexamples%2Fjs-bridge-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/references/android-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/android/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/virtual-agent/concepts/architecture-and-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fconcepts%2Farchitecture-and-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/concepts/webview-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fconcepts%2Fwebview-lifecycle.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/examples/js-bridge-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fexamples%2Fjs-bridge-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/references/ios-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Freferences%2Fios-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/ios/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/samples-validation.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fsamples-validation.md -->","partner-built/zoom-plugin/skills/virtual-agent/references/versioning-and-drift.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fversioning-and-drift.md -->","partner-built/zoom-plugin/skills/virtual-agent/scenarios/high-level-scenarios.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fscenarios%2Fhigh-level-scenarios.md -->","partner-built/zoom-plugin/skills/virtual-agent/troubleshooting/common-drift-and-breaks.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2FSKILL.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/concepts/lifecycle-and-events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/examples/campaign-and-entry-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fexamples%2Fcampaign-and-entry-patterns.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/references/web-reference-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Freferences%2Fweb-reference-map.md -->","partner-built/zoom-plugin/skills/virtual-agent/web/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/webhooks/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/webhooks/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FSKILL.md -->","partner-built/zoom-plugin/skills/webhooks/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/webhooks/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/webhooks/references/signature-verification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsignature-verification.md -->","partner-built/zoom-plugin/skills/webhooks/references/subscriptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsubscriptions.md -->","partner-built/zoom-plugin/skills/webhooks/references/verification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fverification.md -->","partner-built/zoom-plugin/skills/webhooks/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/websockets/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/websockets/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FSKILL.md -->","partner-built/zoom-plugin/skills/websockets/references/connection.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fconnection.md -->","partner-built/zoom-plugin/skills/websockets/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/websockets/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/websockets/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Farchitecture.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/meeting-sdk-vs-zoom-apps.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fmeeting-sdk-vs-zoom-apps.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/running-contexts.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Frunning-contexts.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/security.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fsecurity.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/app-communication.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fapp-communication.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/breakout-rooms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fbreakout-rooms.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/collaborate-mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fcollaborate-mode.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/guest-mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fguest-mode.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/in-client-oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fin-client-oauth.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-camera.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-camera.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-immersive.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-immersive.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/quick-start.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fquick-start.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/apis.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fapis.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/environment-variables.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fenvironment-variables.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/events.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fevents.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/layers-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Flayers-api.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/oauth.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Foauth.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/references/zmail-sdk.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fzmail-sdk.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/common-issues.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/debugging.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fdebugging.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/forum-top-questions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fforum-top-questions.md -->","partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/migration.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fmigration.md -->","partner-built/zoom-plugin/skills/zoom-mcp/RUNBOOK.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FRUNBOOK.md -->","partner-built/zoom-plugin/skills/zoom-mcp/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-mcp/concepts/mcp-architecture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Fmcp-architecture.md -->","partner-built/zoom-plugin/skills/zoom-mcp/concepts/oauth-setup.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Foauth-setup.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/create-zoom-doc.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fcreate-zoom-doc.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/meeting-lifecycle.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fmeeting-lifecycle.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/search-and-act.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fsearch-and-act.md -->","partner-built/zoom-plugin/skills/zoom-mcp/examples/transcript-retrieval.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Ftranscript-retrieval.md -->","partner-built/zoom-plugin/skills/zoom-mcp/references/error-codes.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ferror-codes.md -->","partner-built/zoom-plugin/skills/zoom-mcp/references/tools.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ftools.md -->","partner-built/zoom-plugin/skills/zoom-mcp/troubleshooting/common-errors.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Ftroubleshooting%2Fcommon-errors.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2FSKILL.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/authentication-and-identifiers.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Fauthentication-and-identifiers.md -->","partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/tools.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Ftools.md -->","pdf-viewer/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2F.claude-plugin%2Fplugin.json -->","pdf-viewer/skills/view-pdf/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2Fskills%2Fview-pdf%2FSKILL.md -->","product-management/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2F.claude-plugin%2Fplugin.json -->","product-management/skills/competitive-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","product-management/skills/metrics-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fmetrics-review%2FSKILL.md -->","product-management/skills/product-brainstorming/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fproduct-brainstorming%2FSKILL.md -->","product-management/skills/roadmap-update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Froadmap-update%2FSKILL.md -->","product-management/skills/sprint-planning/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsprint-planning%2FSKILL.md -->","product-management/skills/stakeholder-update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fstakeholder-update%2FSKILL.md -->","product-management/skills/synthesize-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsynthesize-research%2FSKILL.md -->","product-management/skills/write-spec/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fwrite-spec%2FSKILL.md -->","productivity/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2F.claude-plugin%2Fplugin.json -->","productivity/skills/memory-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fmemory-management%2FSKILL.md -->","productivity/skills/start/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fstart%2FSKILL.md -->","productivity/skills/task-management/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Ftask-management%2FSKILL.md -->","productivity/skills/update/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fupdate%2FSKILL.md -->","sales/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2F.claude-plugin%2Fplugin.json -->","sales/skills/account-context/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-context%2FSKILL.md -->","sales/skills/account-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-plan%2FSKILL.md -->","sales/skills/account-research/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-research%2FSKILL.md -->","sales/skills/account-tiering/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-tiering%2FSKILL.md -->","sales/skills/call-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-prep%2FSKILL.md -->","sales/skills/call-summary/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-summary%2FSKILL.md -->","sales/skills/close-plan/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fclose-plan%2FSKILL.md -->","sales/skills/competitive-intelligence/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcompetitive-intelligence%2FSKILL.md -->","sales/skills/create-an-asset/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcreate-an-asset%2FSKILL.md -->","sales/skills/crm-hygiene-check/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcrm-hygiene-check%2FSKILL.md -->","sales/skills/customer-health/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-health%2FSKILL.md -->","sales/skills/customer-voice/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-voice%2FSKILL.md -->","sales/skills/daily-briefing/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdaily-briefing%2FSKILL.md -->","sales/skills/deal-advance-gap/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-advance-gap%2FSKILL.md -->","sales/skills/deal-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-review%2FSKILL.md -->","sales/skills/deal-signals/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-signals%2FSKILL.md -->","sales/skills/deal-slip-scenario/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-slip-scenario%2FSKILL.md -->","sales/skills/draft-outreach/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdraft-outreach%2FSKILL.md -->","sales/skills/end-of-day/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fend-of-day%2FSKILL.md -->","sales/skills/expansion-whitespace/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fexpansion-whitespace%2FSKILL.md -->","sales/skills/forecast/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fforecast%2FSKILL.md -->","sales/skills/handle-objection/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fhandle-objection%2FSKILL.md -->","sales/skills/inbox-sweep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Finbox-sweep%2FSKILL.md -->","sales/skills/lead-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flead-triage%2FSKILL.md -->","sales/skills/log-activity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flog-activity%2FSKILL.md -->","sales/skills/pipeline-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fpipeline-review%2FSKILL.md -->","sales/skills/renewal-radar/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frenewal-radar%2FSKILL.md -->","sales/skills/rep-context/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frep-context%2FSKILL.md -->","sales/skills/route-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Froute-lead%2FSKILL.md -->","sales/skills/schedule-meeting/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fschedule-meeting%2FSKILL.md -->","sales/skills/setup/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fsetup%2FSKILL.md -->","sales/skills/stakeholder-map/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fstakeholder-map%2FSKILL.md -->","sales/skills/team-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fteam-pipeline%2FSKILL.md -->","sales/skills/update-opportunity/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fupdate-opportunity%2FSKILL.md -->","sales/skills/weekly-wrap/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fweekly-wrap%2FSKILL.md -->","sales/skills/win-loss-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fwin-loss-review%2FSKILL.md -->","small-business/.claude-plugin/plugin.json":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2F.claude-plugin%2Fplugin.json -->","small-business/skills/ad-manager/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2FSKILL.md -->","small-business/skills/ad-manager/reference/ad_copy.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fad_copy.md -->","small-business/skills/ad-manager/reference/change_playbook.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fchange_playbook.md -->","small-business/skills/ad-manager/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdata_sources.md -->","small-business/skills/ad-manager/reference/diagnostics.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdiagnostics.md -->","small-business/skills/ad-manager/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fgotchas.md -->","small-business/skills/ap-processor/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2FSKILL.md -->","small-business/skills/ap-processor/reference/coding_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fcoding_rules.md -->","small-business/skills/ap-processor/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fgotchas.md -->","small-business/skills/ap-processor/reference/intake_and_extraction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fintake_and_extraction.md -->","small-business/skills/ap-processor/reference/matching_and_exceptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fmatching_and_exceptions.md -->","small-business/skills/ap-processor/reference/payment_run.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fpayment_run.md -->","small-business/skills/brand-style/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbrand-style%2FSKILL.md -->","small-business/skills/build-agent/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2FSKILL.md -->","small-business/skills/build-agent/reference/capture.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fcapture.md -->","small-business/skills/build-agent/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fgotchas.md -->","small-business/skills/build-agent/reference/skill_authoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fskill_authoring.md -->","small-business/skills/build-connector/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2FSKILL.md -->","small-business/skills/build-connector/reference/discovery.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fdiscovery.md -->","small-business/skills/build-connector/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fgotchas.md -->","small-business/skills/build-connector/reference/paths.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fpaths.md -->","small-business/skills/build-connector/reference/use-zapier.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fuse-zapier.md -->","small-business/skills/business-pulse/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2FSKILL.md -->","small-business/skills/business-pulse/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fdata_sources.md -->","small-business/skills/business-pulse/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fgotchas.md -->","small-business/skills/business-pulse/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Foutput_template.md -->","small-business/skills/business-pulse/reference/thresholds.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fthresholds.md -->","small-business/skills/business-pulse/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fv2_sources.md -->","small-business/skills/call-list/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcall-list%2FSKILL.md -->","small-business/skills/canva-creator/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2FSKILL.md -->","small-business/skills/canva-creator/reference/canva-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fcanva-api.md -->","small-business/skills/canva-creator/reference/examples/boutique-brief-campaign.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fexamples%2Fboutique-brief-campaign.md -->","small-business/skills/canva-creator/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fgotchas.md -->","small-business/skills/canva-creator/reference/hubspot-staging.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fhubspot-staging.md -->","small-business/skills/cash-flow-snapshot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2FSKILL.md -->","small-business/skills/cash-flow-snapshot/reference/examples/worked-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fexamples%2Fworked-example.md -->","small-business/skills/cash-flow-snapshot/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fgotchas.md -->","small-business/skills/cash-flow-snapshot/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fv2_sources.md -->","small-business/skills/close-month/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fclose-month%2FSKILL.md -->","small-business/skills/content-strategy/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2FSKILL.md -->","small-business/skills/content-strategy/reference/examples/retail-boutique-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fexamples%2Fretail-boutique-example.md -->","small-business/skills/content-strategy/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fgotchas.md -->","small-business/skills/content-strategy/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fv2_sources.md -->","small-business/skills/contract-review/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2FSKILL.md -->","small-business/skills/contract-review/reference/docusign-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fdocusign-fetch.md -->","small-business/skills/contract-review/reference/examples/flagged-summary-saas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fexamples%2Fflagged-summary-saas.md -->","small-business/skills/contract-review/reference/gmail-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgmail-fetch.md -->","small-business/skills/contract-review/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgotchas.md -->","small-business/skills/contract-review/reference/m365-fetch.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fm365-fetch.md -->","small-business/skills/crm-autopilot/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2FSKILL.md -->","small-business/skills/crm-autopilot/reference/cleanup-checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fcleanup-checklist.md -->","small-business/skills/crm-autopilot/reference/examples/cleanup-deal.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Fcleanup-deal.md -->","small-business/skills/crm-autopilot/reference/examples/log-call-happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-call-happy-path.md -->","small-business/skills/crm-autopilot/reference/examples/log-email-happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-email-happy-path.md -->","small-business/skills/crm-autopilot/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fgotchas.md -->","small-business/skills/crm-autopilot/reference/hubspot-fields.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fhubspot-fields.md -->","small-business/skills/crm-autopilot/reference/lightweight_crm.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Flightweight_crm.md -->","small-business/skills/crm-autopilot/reference/salesforce-fields.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fsalesforce-fields.md -->","small-business/skills/crm-autopilot/reference/standing_mode.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fstanding_mode.md -->","small-business/skills/grant-rfp-writer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2FSKILL.md -->","small-business/skills/grant-rfp-writer/reference/drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fdrafting.md -->","small-business/skills/grant-rfp-writer/reference/go_no_go.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgo_no_go.md -->","small-business/skills/grant-rfp-writer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgotchas.md -->","small-business/skills/grant-rfp-writer/reference/opportunity_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fopportunity_sources.md -->","small-business/skills/grant-rfp-writer/reference/org_profile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Forg_profile.md -->","small-business/skills/grow-pipeline/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrow-pipeline%2FSKILL.md -->","small-business/skills/growth-pulse/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2FSKILL.md -->","small-business/skills/growth-pulse/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fdata_sources.md -->","small-business/skills/growth-pulse/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fgotchas.md -->","small-business/skills/growth-pulse/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Foutput_template.md -->","small-business/skills/growth-pulse/reference/thresholds.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fthresholds.md -->","small-business/skills/hiring-screener/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2FSKILL.md -->","small-business/skills/hiring-screener/reference/candidate_comms.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fcandidate_comms.md -->","small-business/skills/hiring-screener/reference/fair_screening.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Ffair_screening.md -->","small-business/skills/hiring-screener/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fgotchas.md -->","small-business/skills/hiring-screener/reference/onboarding.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fonboarding.md -->","small-business/skills/hiring-screener/reference/rubric.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Frubric.md -->","small-business/skills/inbox-manager/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2FSKILL.md -->","small-business/skills/inbox-manager/reference/digest_format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fdigest_format.md -->","small-business/skills/inbox-manager/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fgotchas.md -->","small-business/skills/inbox-manager/reference/handoffs.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fhandoffs.md -->","small-business/skills/inbox-manager/reference/reply_drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Freply_drafting.md -->","small-business/skills/inbox-manager/reference/triage_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Ftriage_rules.md -->","small-business/skills/inventory-planner/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2FSKILL.md -->","small-business/skills/inventory-planner/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fdata_sources.md -->","small-business/skills/inventory-planner/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fgotchas.md -->","small-business/skills/inventory-planner/reference/po_drafting.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fpo_drafting.md -->","small-business/skills/inventory-planner/reference/seasonality.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fseasonality.md -->","small-business/skills/inventory-planner/reference/velocity_and_reorder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fvelocity_and_reorder.md -->","small-business/skills/invoice-chase/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2FSKILL.md -->","small-business/skills/invoice-chase/reference/examples/firm-reminder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Ffirm-reminder.md -->","small-business/skills/invoice-chase/reference/examples/gentle-reminder.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Fgentle-reminder.md -->","small-business/skills/invoice-chase/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fgotchas.md -->","small-business/skills/invoice-chase/reference/tone-matching.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Ftone-matching.md -->","small-business/skills/invoice-chase/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fv2_sources.md -->","small-business/skills/job-post-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2FSKILL.md -->","small-business/skills/job-post-builder/reference/docusign-routing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fdocusign-routing.md -->","small-business/skills/job-post-builder/reference/examples/worked-example.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexamples%2Fworked-example.md -->","small-business/skills/job-post-builder/reference/existing-document-merge.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexisting-document-merge.md -->","small-business/skills/job-post-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fgotchas.md -->","small-business/skills/job-post-builder/reference/interview-guide-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Finterview-guide-structure.md -->","small-business/skills/job-post-builder/reference/job-post-structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fjob-post-structure.md -->","small-business/skills/job-post-builder/reference/offer-letter-template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Foffer-letter-template.md -->","small-business/skills/job-post-builder/reference/role-intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Frole-intake.md -->","small-business/skills/lead-finder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2FSKILL.md -->","small-business/skills/lead-finder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fgotchas.md -->","small-business/skills/lead-finder/reference/icp_method.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Ficp_method.md -->","small-business/skills/lead-finder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Foutput_template.md -->","small-business/skills/lead-finder/reference/scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fscoring.md -->","small-business/skills/lead-finder/reference/sourcing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fsourcing.md -->","small-business/skills/lead-triage/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2FSKILL.md -->","small-business/skills/lead-triage/reference/examples/happy-path-triage.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fexamples%2Fhappy-path-triage.md -->","small-business/skills/lead-triage/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fgotchas.md -->","small-business/skills/lead-triage/reference/hubspot-scoring.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fhubspot-scoring.md -->","small-business/skills/marketing-monday/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmarketing-monday%2FSKILL.md -->","small-business/skills/monday-brief/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonday-brief%2FSKILL.md -->","small-business/skills/month-end-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2FSKILL.md -->","small-business/skills/month-end-prep/reference/close-packet-format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fclose-packet-format.md -->","small-business/skills/month-end-prep/reference/examples/pl-narrative.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fexamples%2Fpl-narrative.md -->","small-business/skills/month-end-prep/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fgotchas.md -->","small-business/skills/month-end-prep/reference/paypal-settlements.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fpaypal-settlements.md -->","small-business/skills/month-end-prep/reference/quickbooks-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fquickbooks-reconcile.md -->","small-business/skills/month-end-prep/reference/v2_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fv2_sources.md -->","small-business/skills/month-end-prep/reference/xero-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fxero-reconcile.md -->","small-business/skills/month-end-prep/reference/zoho-books-reconcile.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fzoho-books-reconcile.md -->","small-business/skills/outreach-composer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2FSKILL.md -->","small-business/skills/outreach-composer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fgotchas.md -->","small-business/skills/outreach-composer/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Foutput_template.md -->","small-business/skills/outreach-composer/reference/sequence_patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fsequence_patterns.md -->","small-business/skills/outreach-composer/reference/slop_test.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fslop_test.md -->","small-business/skills/pay-the-bills/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpay-the-bills%2FSKILL.md -->","small-business/skills/payroll-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2FSKILL.md -->","small-business/skills/payroll-prep/reference/anomaly_rules.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fanomaly_rules.md -->","small-business/skills/payroll-prep/reference/books_sync.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fbooks_sync.md -->","small-business/skills/payroll-prep/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fgotchas.md -->","small-business/skills/payroll-prep/reference/run_sheet_format.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Frun_sheet_format.md -->","small-business/skills/payroll-prep/reference/timesheet_intake.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Ftimesheet_intake.md -->","small-business/skills/plan-payroll/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fplan-payroll%2FSKILL.md -->","small-business/skills/proposal-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2FSKILL.md -->","small-business/skills/proposal-builder/reference/discovery_extraction.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fdiscovery_extraction.md -->","small-business/skills/proposal-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fgotchas.md -->","small-business/skills/proposal-builder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Foutput_template.md -->","small-business/skills/proposal-builder/reference/pricing_method.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fpricing_method.md -->","small-business/skills/proposal-builder/reference/proposal_structure.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fproposal_structure.md -->","small-business/skills/reactivate/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freactivate%2FSKILL.md -->","small-business/skills/report-builder/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2FSKILL.md -->","small-business/skills/report-builder/reference/data_sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fdata_sources.md -->","small-business/skills/report-builder/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fgotchas.md -->","small-business/skills/report-builder/reference/output_template.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Foutput_template.md -->","small-business/skills/report-builder/reference/report_spec.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Freport_spec.md -->","small-business/skills/report-builder/reference/saved_reports.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fsaved_reports.md -->","small-business/skills/report-pack/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-pack%2FSKILL.md -->","small-business/skills/restock/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Frestock%2FSKILL.md -->","small-business/skills/review-reputation/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2FSKILL.md -->","small-business/skills/review-reputation/reference/churn-signals.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fchurn-signals.md -->","small-business/skills/review-reputation/reference/examples/example-report.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fexamples%2Fexample-report.md -->","small-business/skills/review-reputation/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fgotchas.md -->","small-business/skills/review-reputation/reference/response-patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fresponse-patterns.md -->","small-business/skills/review-reputation/reference/sources.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fsources.md -->","small-business/skills/seo-ai-visibility/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2FSKILL.md -->","small-business/skills/seo-ai-visibility/reference/ai_visibility.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fai_visibility.md -->","small-business/skills/seo-ai-visibility/reference/audit_checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Faudit_checklist.md -->","small-business/skills/seo-ai-visibility/reference/catalog_refresh.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcatalog_refresh.md -->","small-business/skills/seo-ai-visibility/reference/content_rewrite.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcontent_rewrite.md -->","small-business/skills/seo-ai-visibility/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fgotchas.md -->","small-business/skills/smb-onboard/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2FSKILL.md -->","small-business/skills/smb-onboard/reference/examples/happy-path.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fexamples%2Fhappy-path.md -->","small-business/skills/smb-onboard/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fgotchas.md -->","small-business/skills/smb-onboard/reference/onboard-checklist.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fonboard-checklist.md -->","small-business/skills/smb-onboard/reference/website-research.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fwebsite-research.md -->","small-business/skills/smb-router/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2FSKILL.md -->","small-business/skills/smb-router/reference/connector-map.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2Freference%2Fconnector-map.md -->","small-business/skills/social-content-engine/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2FSKILL.md -->","small-business/skills/social-content-engine/reference/calendar.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcalendar.md -->","small-business/skills/social-content-engine/reference/canva-api.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcanva-api.md -->","small-business/skills/social-content-engine/reference/examples/okonkwo-campaign.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fexamples%2Fokonkwo-campaign.md -->","small-business/skills/social-content-engine/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fgotchas.md -->","small-business/skills/social-content-engine/reference/publishing.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fpublishing.md -->","small-business/skills/social-content-engine/reference/shopify-assets.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fshopify-assets.md -->","small-business/skills/speed-to-lead/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2FSKILL.md -->","small-business/skills/speed-to-lead/reference/approval.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fapproval.md -->","small-business/skills/speed-to-lead/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fgotchas.md -->","small-business/skills/speed-to-lead/reference/qualification.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fqualification.md -->","small-business/skills/speed-to-lead/reference/response_patterns.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fresponse_patterns.md -->","small-business/skills/tax-prep/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-prep%2FSKILL.md -->","small-business/skills/tax-season-organizer/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2FSKILL.md -->","small-business/skills/tax-season-organizer/reference/calculation-assumptions.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fcalculation-assumptions.md -->","small-business/skills/tax-season-organizer/reference/connector-queries.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fconnector-queries.md -->","small-business/skills/tax-season-organizer/reference/examples/quarterly-estimate.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fquarterly-estimate.md -->","small-business/skills/tax-season-organizer/reference/examples/year-end-1099.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fyear-end-1099.md -->","small-business/skills/tax-season-organizer/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fgotchas.md -->","small-business/skills/tax-season-organizer/reference/output-formats.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Foutput-formats.md -->","small-business/skills/ticket-deflector/SKILL.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2FSKILL.md -->","small-business/skills/ticket-deflector/reference/examples/deny-refund-request.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Fdeny-refund-request.md -->","small-business/skills/ticket-deflector/reference/examples/respond-refund-request.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Frespond-refund-request.md -->","small-business/skills/ticket-deflector/reference/gotchas.md":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fgotchas.md -->"},"items":[{"name":"asm_schema_overview.md","path":"bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# ASM Schema Overview\n\nThe Allotrope Simple Model (ASM) is a JSON-based standard for representing laboratory instrument data with semantic consistency.\n\n## Core Concepts\n\n### Structure\nASM uses a hierarchical document structure:\n- **Manifest** - Links to ontologies and schemas\n- **Data** - The actual measurement data organized by technique\n\n### Key Components\n\n```json\n{\n  \"$asm.manifest\": {\n    \"vocabulary\": [\"http://purl.allotrope.org/voc/afo/REC/2023/09/\"],\n    \"contexts\": [\"http://purl.allotrope.org/json-ld/afo-context-REC-2023-09.jsonld\"]\n  },\n  \"<technique>-aggregate-document\": {\n    \"device-system-document\": { ... },\n    \"<technique>-document\": [\n      {\n        \"measurement-aggregate-document\": {\n          \"measurement-document\": [ ... ]\n        }\n      }\n    ]\n  }\n}\n```\n\n## Required Metadata Documents\n\n### data system document\nEvery ASM output MUST include this document with:\n- `ASM file identifier`: Output filename\n- `data system instance identifier`: System ID or \"N/A\"\n- `file name`: Source input filename\n- `UNC path`: Path to source file\n- `ASM converter name`: Parser identifier (e.g., \"allotropy_beckman_coulter_biomek\")\n- `ASM converter version`: Version string\n- `software name`: Instrument software that generated the source file\n\n### device system document\nEvery ASM output MUST include this document with:\n- `equipment serial number`: Main instrument serial\n- `product manufacturer`: Vendor name\n- `device document`: Array of sub-components (probes, pods, etc.)\n  - `device type`: Standardized type (e.g., \"liquid handler probe head\")\n  - `device identifier`: Logical name (e.g., \"Pod1\", not serial number)\n  - `equipment serial number`: Component serial\n  - `product manufacturer`: Component vendor\n\n## Available ASM Techniques\n\nThe official ASM repository includes **65 technique schemas**:\n\n```\nabsorbance, automated-reactors, balance, bga, binding-affinity, bulk-density,\ncell-counting, cell-culture-analyzer, chromatography, code-reader, conductance,\nconductivity, disintegration, dsc, dvs, electronic-lab-notebook,\nelectronic-spectrometry, electrophoresis, flow-cytometry, fluorescence,\nfoam-height, foam-qualification, fplc, ftir, gas-chromatography, gc-ms, gloss,\nhot-tack, impedance, lc-ms, light-obscuration, liquid-chromatography,\nloss-on-drying, luminescence, mass-spectrometry, metabolite-analyzer,\nmulti-analyte-profiling, nephelometry, nmr, optical-imaging, optical-microscopy,\nosmolality, oven-kf, pcr, ph, plate-reader, pressure-monitoring, psd, pumping,\nraman, rheometry, sem, solution-analyzer, specific-rotation, spectrophotometry,\nstirring, surface-area-analysis, tablet-hardness, temperature-monitoring,\ntensile-test, thermogravimetric-analysis, titration, ultraviolet-absorbance,\nx-ray-powder-diffraction\n```\n\nSee: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\n## Common ASM Schemas by Technique\n\nBelow are details for frequently-used techniques:\n\n### Cell Counting\nSchema: `cell-counting/REC/2024/09/cell-counting.schema.json`\n\nKey fields:\n- `viable-cell-density` (cells/mL)\n- `viability` (percentage)\n- `total-cell-count`\n- `dead-cell-count`\n- `cell-diameter-distribution-datum`\n\n### Spectrophotometry (UV-Vis)\nSchema: `spectrophotometry/REC/2024/06/spectrophotometry.schema.json`\n\nKey fields:\n- `absorbance` (dimensionless)\n- `wavelength` (nm)\n- `transmittance` (percentage)\n- `pathlength` (cm)\n- `concentration` with units\n\n### Plate Reader\nSchema: `plate-reader/REC/2024/06/plate-reader.schema.json`\n\nKey fields:\n- `absorbance`\n- `fluorescence`\n- `luminescence`\n- `well-location` (A1-H12)\n- `plate-identifier`\n\n### qPCR\nSchema: `pcr/REC/2024/06/pcr.schema.json`\n\nKey fields:\n- `cycle-threshold-result`\n- `amplification-efficiency`\n- `melt-curve-datum`\n- `target-DNA-description`\n\n### Chromatography\nSchema: `liquid-chromatography/REC/2023/09/liquid-chromatography.schema.json`\n\nKey fields:\n- `retention-time` (minutes)\n- `peak-area`\n- `peak-height`\n- `peak-width`\n- `chromatogram-data-cube`\n\n## Data Patterns\n\n### Value Datum\nSimple value with unit:\n```json\n{\n  \"value\": 1.5,\n  \"unit\": \"mL\"\n}\n```\n\n### Aggregate Datum\nCollection of related values:\n```json\n{\n  \"measurement-aggregate-document\": {\n    \"measurement-document\": [\n      { \"viable-cell-density\": {\"value\": 2.5e6, \"unit\": \"(cell/mL)\"} },\n      { \"viability\": {\"value\": 95.2, \"unit\": \"%\"} }\n    ]\n  }\n}\n```\n\n### Data Cube\nMulti-dimensional array data:\n```json\n{\n  \"cube-structure\": {\n    \"dimensions\": [{\"@componentDatatype\": \"double\", \"concept\": \"elapsed time\"}],\n    \"measures\": [{\"@componentDatatype\": \"double\", \"concept\": \"absorbance\"}]\n  },\n  \"data\": {\n    \"dimensions\": [[0, 1, 2, 3, 4]],\n    \"measures\": [[0.1, 0.2, 0.3, 0.4, 0.5]]\n  }\n}\n```\n\n## Validation\n\nValidate ASM output against official schemas:\n\n```python\nimport json\nimport jsonschema\nfrom urllib.request import urlopen\n\n# Load ASM output\nwith open(\"output.json\") as f:\n    asm = json.load(f)\n\n# Get schema URL from manifest\nschema_url = asm.get(\"$asm.manifest\", {}).get(\"$ref\")\n\n# Validate (simplified - real validation more complex)\n# Note: Full validation requires resolving $ref references\n```\n\n## Schema Repository\n\nOfficial schemas: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\nSchema structure:\n```\njson-schemas/adm/\n├── cell-counting/\n│   └── REC/2024/09/\n│       └── cell-counting.schema.json\n├── spectrophotometry/\n│   └── REC/2024/06/\n│       └── spectrophotometry.schema.json\n├── plate-reader/\n│   └── REC/2024/06/\n│       └── plate-reader.schema.json\n└── ...\n```\n\n## Common Issues\n\n### Missing Fields\nNot all instrument exports contain all ASM fields. Report completeness:\n```python\ndef report_completeness(asm, expected_fields):\n    found = set(extract_all_fields(asm))\n    missing = expected_fields - found\n    return len(found) / len(expected_fields) * 100\n```\n\n### Unit Variations\nInstruments may use different unit formats. The allotropy library normalizes these:\n- \"cells/mL\" → \"(cell/mL)\"\n- \"%\" → \"%\"\n- \"nm\" → \"nm\"\n\n### Date Formats\nASM uses ISO 8601: `2024-01-15T10:30:00Z`\n","isInternal":false,"tokens":1672,"sizeBytes":6110},{"name":"field_classification_guide.md","path":"bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Field Classification Guide\n\nThis guide helps classify instrument data fields into the correct ASM document locations. Use this when mapping raw instrument output to Allotrope Simple Model structure.\n\n## ASM Document Hierarchy\n\n```\n<technique>-aggregate-document\n├── device-system-document          # Instrument hardware info\n├── data-system-document            # Software/conversion info\n├── <technique>-document[]          # Per-run/sequence data\n│   ├── analyst                     # Who performed the analysis\n│   ├── measurement-aggregate-document\n│   │   ├── measurement-time\n│   │   ├── measurement-document[]  # Individual measurements\n│   │   │   ├── sample-document\n│   │   │   ├── device-control-aggregate-document\n│   │   │   └── [measurement fields]\n│   │   └── [aggregate-level metadata]\n│   ├── processed-data-aggregate-document\n│   │   └── processed-data-document[]\n│   │       ├── data-processing-document\n│   │       └── [processed results]\n│   └── calculated-data-aggregate-document\n│       └── calculated-data-document[]\n```\n\n## Field Classification Categories\n\n### 1. Device/Instrument Information → `device-system-document`\n\nHardware and firmware details about the physical instrument.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Instrument name | `model-number` | \"Vi-CELL BLU\", \"NanoDrop One\" |\n| Serial number | `equipment-serial-number` | \"VCB-12345\", \"SN001234\" |\n| Manufacturer | `product-manufacturer` | \"Beckman Coulter\", \"Thermo Fisher\" |\n| Firmware version | `firmware-version` | \"v2.1.3\" |\n| Device ID | `device-identifier` | \"Instrument_01\" |\n| Brand | `brand-name` | \"Beckman Coulter\" |\n\n**Rule:** If the value describes the physical instrument and doesn't change between runs, it goes in `device-system-document`.\n\n---\n\n### 2. Software/Data System Information → `data-system-document`\n\nInformation about software used for acquisition, analysis, or conversion.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Software name | `software-name` | \"Chromeleon\", \"Gen5\" |\n| Software version | `software-version` | \"7.3.2\" |\n| File name | `file-name` | \"experiment_001.xlsx\" |\n| File path | `file-identifier` | \"/data/runs/2024-01-15/\" |\n| Database ID | `ASM-converter-name` | \"allotropy v0.1.55\" |\n\n**Rule:** If the value describes software, file metadata, or data provenance, it goes in `data-system-document`.\n\n---\n\n### 3. Sample Information → `sample-document`\n\nMetadata about the biological/chemical sample being analyzed.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Sample ID | `sample-identifier` | \"Sample_A\", \"LIMS-001234\" |\n| Sample name | `written-name` | \"CHO Cell Culture Day 5\" |\n| Sample type/role | `sample-role-type` | \"unknown sample role\", \"control sample role\" |\n| Batch ID | `batch-identifier` | \"Batch-2024-001\" |\n| Description | `description` | \"Protein expression sample\" |\n| Well position | `location-identifier` | \"A1\", \"B3\" |\n\n**Rule:** If the value identifies or describes what was measured (not how), it goes in `sample-document`.\n\n---\n\n### 4. Device Control Settings → `device-control-aggregate-document`\n\nInstrument settings and parameters used during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Injection volume | `sample-volume-setting` | 10 µL |\n| Wavelength | `detector-wavelength-setting` | 254 nm |\n| Temperature | `compartment-temperature` | 37°C |\n| Flow rate | `flow-rate` | 1.0 mL/min |\n| Exposure time | `exposure-duration-setting` | 500 ms |\n| Detector gain | `detector-gain-setting` | 1.5 |\n| Illumination | `illumination-setting` | 80% |\n\n**Rule:** If the value is a configurable instrument parameter that affects measurement, it goes in `device-control-aggregate-document`.\n\n---\n\n### 5. Environmental Conditions → `device-control-document` or technique-specific\n\nAmbient or controlled environmental parameters during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Ambient temperature | `ambient-temperature` | 22.5°C |\n| Humidity | `ambient-relative-humidity` | 45% |\n| Column temperature | `compartment-temperature` | 30°C |\n| Sample temperature | `sample-temperature` | 4°C |\n| Electrophoresis temp | (technique-specific) | 26.4°C |\n\n**Rule:** Environmental conditions that affect measurement quality go with device control or in technique-specific locations.\n\n---\n\n### 6. Raw Measurement Data → `measurement-document`\n\nDirect instrument readings - the \"ground truth\" data.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Absorbance | `absorbance` | 0.523 AU |\n| Fluorescence | `fluorescence` | 12500 RFU |\n| Cell count | `total-cell-count` | 2.5e6 cells |\n| Peak area | `peak-area` | 1234.5 mAU·min |\n| Retention time | `retention-time` | 5.67 min |\n| Ct value | `cycle-threshold-result` | 24.5 |\n| Concentration (measured) | `mass-concentration` | 1.5 mg/mL |\n\n**Rule:** If the value is a direct instrument reading that wasn't computed from other values in this analysis, it goes in `measurement-document`.\n\n---\n\n### 7. Calculated/Derived Data → `calculated-data-aggregate-document`\n\nValues computed from raw measurements.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Viability % | `calculated-result` | 95.2% |\n| Concentration (from std curve) | `calculated-result` | 125 ng/µL |\n| Ratio (260/280) | `calculated-result` | 1.89 |\n| Relative quantity | `calculated-result` | 2.5x |\n| % Recovery | `calculated-result` | 98.7% |\n| CV% | `calculated-result` | 2.3% |\n\n**Calculated data document structure:**\n```json\n{\n  \"calculated-data-name\": \"viability\",\n  \"calculated-result\": {\"value\": 95.2, \"unit\": \"%\"},\n  \"calculation-description\": \"viable cells / total cells * 100\"\n}\n```\n\n**Rule:** If the value was computed from other measurements in this analysis, it goes in `calculated-data-aggregate-document`. Include `calculation-description` when possible.\n\n---\n\n### 8. Processed/Analyzed Data → `processed-data-aggregate-document`\n\nResults from data processing algorithms (peak integration, cell classification, etc.).\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Peak list | `peak-list` | Integrated peak results |\n| Cell size distribution | `cell-diameter-distribution` | Histogram data |\n| Baseline-corrected data | (in processed-data-document) | Corrected spectra |\n| Fitted curve | (in processed-data-document) | Standard curve fit |\n\n**Associated `data-processing-document`:**\n```json\n{\n  \"cell-type-processing-method\": \"trypan blue exclusion\",\n  \"cell-density-dilution-factor\": {\"value\": 2, \"unit\": \"(unitless)\"},\n  \"minimum-cell-diameter-setting\": {\"value\": 5, \"unit\": \"µm\"},\n  \"maximum-cell-diameter-setting\": {\"value\": 50, \"unit\": \"µm\"}\n}\n```\n\n**Rule:** If the value results from an algorithm or processing method applied to raw data, it goes in `processed-data-aggregate-document` with its processing parameters in `data-processing-document`.\n\n---\n\n### 9. Timing/Timestamps → Various locations\n\n| Timestamp Type | Location | ASM Field |\n|----------------|----------|-----------|\n| Measurement time | `measurement-document` | `measurement-time` |\n| Run start time | `analysis-sequence-document` | `analysis-sequence-start-time` |\n| Run end time | `analysis-sequence-document` | `analysis-sequence-end-time` |\n| Data export time | `data-system-document` | (custom) |\n\n**Rule:** Use ISO 8601 format: `2024-01-15T10:30:00Z`\n\n---\n\n### 10. Analyst/Operator Information → `<technique>-document`\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Operator name | `analyst` | \"jsmith\" |\n| Reviewer | (custom or extension) | \"Pending\" |\n\n**Rule:** Analyst goes at the technique-document level, not in individual measurements.\n\n---\n\n## Decision Tree\n\n```\nIs this field about...\n\nTHE INSTRUMENT ITSELF?\n├── Hardware specs → device-system-document\n└── Software/files → data-system-document\n\nTHE SAMPLE?\n└── Sample ID, name, type, batch → sample-document\n\nINSTRUMENT SETTINGS?\n└── Configurable parameters → device-control-aggregate-document\n\nENVIRONMENTAL CONDITIONS?\n└── Temp, humidity, etc. → device-control-document\n\nA DIRECT READING?\n└── Raw instrument output → measurement-document\n\nA COMPUTED VALUE?\n├── From other measurements → calculated-data-document\n└── From processing algorithm → processed-data-document\n\nTIMING?\n├── When measured → measurement-document.measurement-time\n└── When run started/ended → analysis-sequence-document\n\nWHO DID IT?\n└── Operator/analyst → <technique>-document.analyst\n```\n\n## Common Instrument-to-ASM Mappings\n\n> **Note:** These mappings are derived from the [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy/tree/main/src/allotropy/parsers). For authoritative mappings, consult the parser source code for your specific instrument.\n\n### Cell Counter (Vi-CELL BLU)\n*Source: `allotropy/parsers/beckman_vi_cell_blu/vi_cell_blu_structure.py`*\n\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Analysis date/time | `measurement_time` |\n| Analysis by | `analyst` |\n| Viability (%) | `viability` |\n| Viable (x10^6) cells/mL | `viable_cell_density` |\n| Total (x10^6) cells/mL | `total_cell_density` |\n| Cell count | `total_cell_count` |\n| Viable cells | `viable_cell_count` |\n| Average diameter (μm) | `average_total_cell_diameter` |\n| Average viable diameter (μm) | `average_live_cell_diameter` |\n| Average circularity | `average_total_cell_circularity` |\n| Cell type | `cell_type_processing_method` (data-processing) |\n| Dilution | `cell_density_dilution_factor` (data-processing) |\n| Min/Max Diameter | `minimum/maximum_cell_diameter_setting` (data-processing) |\n\n### Spectrophotometer (NanoDrop)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample Name | `sample_identifier` |\n| A260, A280 | `absorbance` (with wavelength) |\n| Concentration | `mass_concentration` |\n| 260/280 ratio | `a260_a280_ratio` |\n| Pathlength | `pathlength` |\n\n### Plate Reader\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Well | `location_identifier` |\n| Sample Type | `sample_role_type` |\n| Absorbance/OD | `absorbance` |\n| Fluorescence | `fluorescence` |\n| Plate ID | `container_identifier` |\n\n### Chromatography (HPLC)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Injection Volume | `injection_volume` |\n| Retention Time | `retention_time` |\n| Peak Area | `peak_area` |\n| Peak Height | `peak_height` |\n| Column Temp | `column_oven_temperature` |\n| Flow Rate | `flow_rate` |\n\n## Unit Handling\n\nOnly use units explicitly present in source data. If a value has no unit specified:\n- Use `(unitless)` as the unit value\n- Do NOT infer units based on domain knowledge\n\n## Calculated Data Traceability\n\nWhen creating calculated values, always link them to their source data using `data-source-aggregate-document`:\n\n```json\n{\n    \"calculated-data-name\": \"DIN\",\n    \"calculated-result\": {\"value\": 5.8, \"unit\": \"(unitless)\"},\n    \"calculated-data-identifier\": \"TEST_ID_147\",\n    \"data-source-aggregate-document\": {\n        \"data-source-document\": [{\n            \"data-source-identifier\": \"TEST_ID_145\",\n            \"data-source-feature\": \"sample\"\n        }]\n    }\n}\n```\n\nThis declares: \"DIN 5.8 was calculated from the sample at `TEST_ID_145`.\"\n\n**Why this matters:**\n- **Audits**: Prove a value came from specific raw data\n- **Debugging**: Trace unexpected results back to their source\n- **Reprocessing**: Know which inputs to re-analyze if algorithms change\n\n**Assign unique IDs to:**\n- Measurements, peaks, regions, and calculated values\n- Use a consistent naming pattern (e.g., `INSTRUMENT_TYPE_TEST_ID_N`)\n\nThis enables bidirectional traversal: trace from calculated → raw, or raw → all derived values.\n\n---\n\n## Nested Document Structure (Critical)\n\nA common mistake is \"flattening\" fields directly onto measurement documents when they should be wrapped in nested structures. This breaks schema compliance and loses semantic context.\n\n### Why Nesting Matters\n\nASM uses nested documents for semantic grouping:\n\n| Document | Purpose | Contains |\n|----------|---------|----------|\n| `sample document` | What was measured | Sample ID, locations, plate identifiers |\n| `device control aggregate document` | How instrument operated | Settings, parameters, techniques |\n| `custom information document` | Vendor-specific fields | Non-standard fields that don't map to ASM |\n\n### Sample Document Fields\n\nThese fields MUST be inside `sample document`, not flattened on measurement:\n\n```json\n// ❌ WRONG - Fields flattened on measurement\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample identifier\": \"Sample_A\",\n  \"location identifier\": \"A1\",\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n\n// ✅ CORRECT - Fields nested in sample document\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample document\": {\n    \"sample identifier\": \"Sample_A\",\n    \"location identifier\": \"A1\",\n    \"well plate identifier\": \"96WP001\"\n  },\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n```\n\n**Fields belonging in sample document:**\n- `sample identifier` - Sample ID/name\n- `written name` - Descriptive sample name\n- `batch identifier` - Batch/lot number\n- `sample role type` - Standard, blank, control, unknown\n- `location identifier` - Well position (A1, B3, etc.)\n- `well plate identifier` - Plate barcode\n- `description` - Sample description\n\n### Device Control Document Fields\n\nInstrument settings MUST be inside `device control aggregate document`:\n\n```json\n// ❌ WRONG - Device settings flattened\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device identifier\": \"Pod1\",\n  \"technique\": \"Custom\",\n  \"volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n\n// ✅ CORRECT - Settings nested in device control\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device control aggregate document\": {\n    \"device control document\": [{\n      \"device type\": \"liquid handler\",\n      \"device identifier\": \"Pod1\"\n    }]\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Fields belonging in device control:**\n- `device type` - Type of device\n- `device identifier` - Device ID\n- `detector wavelength setting` - Wavelength for detection\n- `compartment temperature` - Temperature setting\n- `sample volume setting` - Volume setting\n- `flow rate` - Flow rate setting\n\n### Custom Information Document\n\nVendor-specific fields that don't map to standard ASM terms go in `custom information document`:\n\n```json\n\"device control document\": [{\n  \"device type\": \"liquid handler\",\n  \"custom information document\": {\n    \"probe\": \"2\",\n    \"pod\": \"Pod1\",\n    \"source labware name\": \"Inducer\",\n    \"destination labware name\": \"GRP1\"\n  }\n}]\n```\n\n### Liquid Handler: Transfer Pairing\n\nFor liquid handlers, a measurement represents a complete transfer (aspirate + dispense), not separate operations:\n\n```json\n// ❌ WRONG - Separate records for aspirate and dispense\n[\n  {\"measurement identifier\": \"OP_001\", \"transfer type\": \"Aspirate\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}},\n  {\"measurement identifier\": \"OP_002\", \"transfer type\": \"Dispense\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}}\n]\n\n// ✅ CORRECT - Single record with source and destination\n{\n  \"measurement identifier\": \"TRANSFER_001\",\n  \"sample document\": {\n    \"source well location identifier\": \"1\",\n    \"destination well location identifier\": \"2\",\n    \"source well plate identifier\": \"96WP001\",\n    \"destination well plate identifier\": \"96WP002\"\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"},\n  \"transfer volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Pairing logic:**\n1. Match aspirate and dispense operations by probe number\n2. Create one measurement per matched pair\n3. Use `source_*` fields for aspirate location\n4. Use `destination_*` fields for dispense location\n5. Include both `aspiration volume` and `transfer volume`\n\n### Quick Reference: Nesting Decision\n\n```\nIs this field about...\n\nTHE SAMPLE BEING MEASURED?\n├── Sample ID, name, batch → sample document\n├── Well position → sample document.location identifier\n├── Plate barcode → sample document.well plate identifier\n└── Source/destination locations → sample document (with prefixes)\n\nINSTRUMENT SETTINGS?\n├── Standard settings → device control aggregate document\n└── Vendor-specific → custom information document\n\nA MEASUREMENT VALUE?\n└── Direct on measurement document (e.g., absorbance, volume)\n\nTRANSFER OPERATION TYPE?\n└── DON'T use \"transfer type\" - pair into single measurement\n    with source/destination fields instead\n```\n\n### Validation\n\nUse `validate_asm.py` to check for nesting issues:\n```bash\npython scripts/validate_asm.py output.json --reference known_good.json\n```\n\nThe validator checks for:\n- Fields incorrectly flattened on measurements\n- Missing `sample document` wrapper\n- Missing `device control aggregate document` wrapper\n- Missing `custom information document` for vendor fields\n- Liquid handler: separate transfer types instead of paired records\n\n## Sources\n\n- [Allotrope Simple Model Introduction](https://www.allotrope.org/introduction-to-allotrope-simple-model)\n- [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy)\n- [Allotrope Foundation ASM Overview](https://www.allotrope.org/asm)\n","isInternal":false,"tokens":4311,"sizeBytes":17665},{"name":"flattening_guide.md","path":"bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Flattening ASM to 2D CSV\n\nConverting hierarchical ASM JSON to flat 2D tables for LIMS import, spreadsheet analysis, or data engineering pipelines.\n\n## Why Flatten?\n\nASM is semantically rich but hierarchical. Many systems need flat tables:\n- LIMS import (Benchling, STARLIMS, LabWare)\n- Excel/CSV analysis\n- Database loading\n- Quick visual inspection\n\n## Flattening Strategy\n\n### Core Principle\nEach **measurement** becomes one **row**. Metadata is repeated per row.\n\n### What's Excluded\nThe flattening intentionally **omits top-level ASM metadata** such as:\n- `$asm.manifest` (model version, schema URIs)\n- Root-level fields outside the technique aggregate document\n\nThis keeps the output focused on experimental data. If you need schema version tracking for compliance or audit purposes, consider storing the original ASM JSON alongside the flattened CSV, or modify the flattening script to include these fields.\n\n### Hierarchy to Columns\n```\nASM Hierarchy                    → Flat Column\n─────────────────────────────────────────────────\ndevice-system-document.\n  device-identifier              → instrument_serial_number\n  model-number                   → instrument_model\n  \nmeasurement-aggregate-document.\n  analyst                        → analyst\n  measurement-time               → measurement_datetime\n  \nmeasurement-document[].\n  sample-identifier              → sample_id\n  viable-cell-density.value      → viable_cell_density\n  viable-cell-density.unit       → viable_cell_density_unit\n  viability.value                → viability_percent\n```\n\n## Column Naming Convention\n\nUse snake_case with descriptive suffixes:\n\n| ASM Field | Flat Column |\n|-----------|-------------|\n| `viable-cell-density` | `viable_cell_density` |\n| `.value` | `_value` (or omit if obvious) |\n| `.unit` | `_unit` |\n| `measurement-time` | `measurement_datetime` |\n\n## Example: Cell Counting\n\n### ASM Input (simplified)\n```json\n{\n  \"cell-counting-aggregate-document\": {\n    \"device-system-document\": {\n      \"device-identifier\": \"VCB001\",\n      \"model-number\": \"Vi-CELL BLU\"\n    },\n    \"cell-counting-document\": [{\n      \"measurement-aggregate-document\": {\n        \"analyst\": \"jsmith\",\n        \"measurement-time\": \"2024-01-15T10:30:00Z\",\n        \"measurement-document\": [\n          {\n            \"sample-identifier\": \"Sample_A\",\n            \"viable-cell-density\": {\"value\": 2500000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 95.2, \"unit\": \"%\"}\n          },\n          {\n            \"sample-identifier\": \"Sample_B\",\n            \"viable-cell-density\": {\"value\": 1800000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 88.7, \"unit\": \"%\"}\n          }\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nsample_id,viable_cell_density,viable_cell_density_unit,viability_percent,analyst,measurement_datetime,instrument_serial_number,instrument_model\nSample_A,2500000,(cell/mL),95.2,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\nSample_B,1800000,(cell/mL),88.7,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\n```\n\n## Example: Plate Reader\n\n### ASM Input (simplified)\n```json\n{\n  \"plate-reader-aggregate-document\": {\n    \"plate-reader-document\": [{\n      \"measurement-aggregate-document\": {\n        \"plate-identifier\": \"ELISA_001\",\n        \"measurement-document\": [\n          {\"well-location\": \"A1\", \"absorbance\": {\"value\": 0.125, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A2\", \"absorbance\": {\"value\": 0.892, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A3\", \"absorbance\": {\"value\": 1.456, \"unit\": \"mAU\"}}\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nplate_id,well_position,absorbance,absorbance_unit\nELISA_001,A1,0.125,mAU\nELISA_001,A2,0.892,mAU\nELISA_001,A3,1.456,mAU\n```\n\n## Handling Data Cubes\n\nData cubes (time series, spectra) need special handling:\n\n### Option 1: Expand to rows\nEach point becomes a row:\n```csv\nsample_id,time_seconds,absorbance\nSample_A,0,0.100\nSample_A,60,0.125\nSample_A,120,0.150\n```\n\n### Option 2: Wide format\nMeasurements as columns:\n```csv\nsample_id,abs_0s,abs_60s,abs_120s\nSample_A,0.100,0.125,0.150\n```\n\n### Option 3: JSON array in cell\nKeep as array (some systems support this):\n```csv\nsample_id,absorbance_timeseries\nSample_A,\"[0.100,0.125,0.150]\"\n```\n\n## Standard Column Sets by Technique\n\n### Cell Counting\n```\nsample_id, viable_cell_density, viable_cell_density_unit, total_cell_count,\nviability_percent, average_cell_diameter, average_cell_diameter_unit,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Spectrophotometry\n```\nsample_id, wavelength_nm, absorbance, pathlength_cm, concentration,\nconcentration_unit, a260_a280_ratio, a260_a230_ratio,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Plate Reader / ELISA\n```\nplate_id, well_position, sample_type, sample_id, absorbance, absorbance_unit,\nconcentration, concentration_unit, dilution_factor, cv_percent,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### qPCR\n```\nsample_id, target_name, well_position, ct_value, ct_mean, ct_sd,\nquantity, quantity_unit, amplification_efficiency,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n## Python Implementation\n\n```python\nimport json\nimport pandas as pd\n\ndef flatten_asm(asm_dict, technique=\"cell-counting\"):\n    \"\"\"\n    Flatten ASM JSON to pandas DataFrame.\n    \n    Args:\n        asm_dict: Parsed ASM JSON\n        technique: ASM technique type\n        \n    Returns:\n        pandas DataFrame with one row per measurement\n    \"\"\"\n    rows = []\n    \n    # Get aggregate document\n    agg_key = f\"{technique}-aggregate-document\"\n    agg_doc = asm_dict.get(agg_key, {})\n    \n    # Extract device info\n    device = agg_doc.get(\"device-system-document\", {})\n    device_info = {\n        \"instrument_serial_number\": device.get(\"device-identifier\"),\n        \"instrument_model\": device.get(\"model-number\")\n    }\n    \n    # Get technique documents\n    doc_key = f\"{technique}-document\"\n    for doc in agg_doc.get(doc_key, []):\n        meas_agg = doc.get(\"measurement-aggregate-document\", {})\n        \n        # Extract common metadata\n        common = {\n            \"analyst\": meas_agg.get(\"analyst\"),\n            \"measurement_datetime\": meas_agg.get(\"measurement-time\"),\n            **device_info\n        }\n        \n        # Extract each measurement\n        for meas in meas_agg.get(\"measurement-document\", []):\n            row = {**common}\n            \n            # Flatten measurement fields\n            for key, value in meas.items():\n                if isinstance(value, dict) and \"value\" in value:\n                    # Value datum pattern\n                    col = key.replace(\"-\", \"_\")\n                    row[col] = value[\"value\"]\n                    if \"unit\" in value:\n                        row[f\"{col}_unit\"] = value[\"unit\"]\n                else:\n                    row[key.replace(\"-\", \"_\")] = value\n            \n            rows.append(row)\n    \n    return pd.DataFrame(rows)\n\n# Usage\nwith open(\"asm_output.json\") as f:\n    asm = json.load(f)\n\ndf = flatten_asm(asm, \"cell-counting\")\ndf.to_csv(\"flattened_output.csv\", index=False)\n```\n\n## LIMS Import Considerations\n\nWhen importing flattened data into a LIMS:\n- Match column names to your LIMS schema field names\n- Use ISO 8601 date format for timestamps\n- Ensure sample IDs match existing LIMS sample identifiers\n- Check if your LIMS expects units in separate columns or embedded in values\n","isInternal":false,"tokens":1820,"sizeBytes":7500},{"name":"supported_instruments.md","path":"bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Supported Instruments\n\n## What Can This Skill Convert?\n\n**Any instrument data that maps to an Allotrope schema can be converted.** The skill uses a tiered parsing approach:\n\n1. **Native allotropy parsers** (listed below) - Highest fidelity, validated against vendor-specific formats\n2. **Flexible fallback parser** - Handles any tabular data (CSV, Excel, TXT) by mapping columns to ASM fields\n3. **PDF extraction** - Extracts tables from PDFs, then applies flexible parsing\n\nIf your instrument isn't listed below, the skill can still convert it as long as your data contains recognizable measurement fields (sample IDs, values, units, timestamps, etc.) that map to an ASM technique schema.\n\n---\n\n## Instruments with Native Allotropy Parsers\n\nThe following instruments have optimized parsers in the allotropy library with their Vendor enum values.\n\n## Cell Counting\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Beckman Coulter Vi-CELL BLU | `BECKMAN_VI_CELL_BLU` | .csv |\n| Beckman Coulter Vi-CELL XR | `BECKMAN_VI_CELL_XR` | .txt, .xls, .xlsx |\n| ChemoMetec NucleoView NC-200 | `CHEMOMETEC_NUCLEOVIEW` | .xlsx |\n| ChemoMetec NC-View | `CHEMOMETEC_NC_VIEW` | .xlsx |\n| Revvity Matrix | `REVVITY_MATRIX` | .csv |\n\n## Spectrophotometry (UV-Vis)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Thermo Fisher NanoDrop One | `THERMO_FISHER_NANODROP_ONE` | .csv, .xlsx |\n| Thermo Fisher NanoDrop Eight | `THERMO_FISHER_NANODROP_EIGHT` | .tsv, .txt |\n| Thermo Fisher NanoDrop 8000 | `THERMO_FISHER_NANODROP_8000` | .csv |\n| Unchained Labs Lunatic | `UNCHAINED_LABS_LUNATIC` | .csv, .xlsx |\n| Thermo Fisher Genesys 30 | `THERMO_FISHER_GENESYS30` | .csv |\n\n## Plate Readers (Multi-mode, Absorbance, Fluorescence)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| PerkinElmer EnVision | `PERKIN_ELMER_ENVISION` | .csv |\n| Agilent Gen5 (BioTek) | `AGILENT_GEN5` | .xlsx |\n| Agilent Gen5 Image | `AGILENT_GEN5_IMAGE` | .xlsx |\n| BMG MARS (CLARIOstar) | `BMG_MARS` | .csv, .txt |\n| BMG LabTech Smart Control | `BMG_LABTECH_SMART_CONTROL` | .csv |\n| Thermo SkanIt | `THERMO_SKANIT` | .xlsx |\n| Revvity Kaleido | `REVVITY_KALEIDO` | .csv |\n| Tecan Magellan | `TECAN_MAGELLAN` | .xlsx |\n\n## ELISA / Immunoassay\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| MSD Discovery Workbench | `MSD_WORKBENCH` | .txt |\n| MSD Methodical Mind | `METHODICAL_MIND` | .xlsx |\n| BMG MARS | `BMG_MARS` | .csv, .txt |\n\n## qPCR / PCR\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Applied Biosystems QuantStudio | `APPBIO_QUANTSTUDIO` | .xlsx |\n| Applied Biosystems QuantStudio Design & Analysis | `APPBIO_QUANTSTUDIO_DESIGNANALYSIS` | .xlsx, .csv |\n| Bio-Rad CFX Maestro | `BIORAD_CFX_MAESTRO` | .csv, .xlsx |\n| Roche LightCycler | `ROCHE_LIGHTCYCLER` | .txt |\n\n## Chromatography (HPLC, LC)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Waters Empower | `WATERS_EMPOWER` | .xml |\n| Thermo Fisher Chromeleon | `THERMO_FISHER_CHROMELEON` | .xml |\n| Agilent ChemStation | `AGILENT_CHEMSTATION` | .csv |\n\n## Electrophoresis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Agilent TapeStation | `AGILENT_TAPESTATION` | .csv |\n| PerkinElmer LabChip | `PERKIN_ELMER_LABCHIP` | .csv |\n\n## Flow Cytometry\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| BD Biosciences FACSDiva | `BD_BIOSCIENCES_FACSDIVA` | .xml |\n| FlowJo | `FLOWJO` | .wsp |\n\n## Solution Analysis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Roche Cedex BioHT | `ROCHE_CEDEX_BIOHT` | .xlsx |\n| Beckman Coulter Biomek | `BECKMAN_COULTER_BIOMEK` | .csv |\n\n## Auto-Detection Patterns\n\nThe skill attempts to identify instrument type from file contents using these patterns:\n\n### Vi-CELL BLU\n- Column headers: \"Sample ID\", \"Viable cells (x10^6 cells/mL)\", \"Viability (%)\"\n- File structure: CSV with specific column order\n\n### Vi-CELL XR\n- Column headers: \"Sample\", \"Total cells/ml\", \"Viable cells/ml\"\n- Multiple export formats supported\n\n### NanoDrop\n- Column headers: \"Sample Name\", \"Nucleic Acid Conc.\", \"A260\", \"A280\"\n- 260/280 and 260/230 ratio columns\n\n### Plate Readers (General)\n- Well identifiers (A1-H12 pattern)\n- \"Plate\", \"Well\", \"Sample\" columns\n- Block-based structure with metadata headers\n\n### ELISA\n- Standard curve data with concentrations\n- OD/absorbance readings\n- Sample/blank/standard classification\n\n## Using Vendor Enums\n\n```python\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}: {v.value}\")\n\n# Convert file\nasm = allotrope_from_file(\"data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Checking Supported Status\n\n```python\nfrom allotropy.parser_factory import get_parser\n\n# Check if a vendor/file combo is supported\ntry:\n    parser = get_parser(Vendor.BECKMAN_VI_CELL_BLU)\n    print(\"Supported!\")\nexcept Exception as e:\n    print(f\"Not supported: {e}\")\n```\n","isInternal":false,"tokens":1527,"sizeBytes":5304},{"name":"SKILL.md","path":"bio-research/skills/instrument-data-to-allotrope/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/instrument-data-to-allotrope/SKILL.md","title":"instrument-data-to-allotrope","category":"anthropic-skill","format":"markdown","content":"---\nname: instrument-data-to-allotrope\ndescription: Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.\n---\n\n# Instrument Data to Allotrope Converter\n\nConvert instrument files into standardized Allotrope Simple Model (ASM) format for LIMS upload, data lakes, or handoff to data engineering teams.\n\n> **Note: This is an Example Skill**\n>\n> This skill demonstrates how skills can support your data engineering tasks—automating schema transformations, parsing instrument outputs, and generating production-ready code.\n>\n> **To customize for your organization:**\n> - Modify the `references/` files to include your company's specific schemas or ontology mappings\n> - Use an MCP server to connect to systems that define your schemas (e.g., your LIMS, data catalog, or schema registry)\n> - Extend the `scripts/` to handle proprietary instrument formats or internal data standards\n>\n> This pattern can be adapted for any data transformation workflow where you need to convert between formats or validate against organizational standards.\n\n## Workflow Overview\n\n1. **Detect instrument type** from file contents (auto-detect or user-specified)\n2. **Parse file** using allotropy library (native) or flexible fallback parser\n3. **Generate outputs**:\n   - ASM JSON (full semantic structure)\n   - Flattened CSV (2D tabular format)\n   - Python parser code (for data engineer handoff)\n4. **Deliver** files with summary and usage instructions\n\n> **When Uncertain:** If you're unsure how to map a field to ASM (e.g., is this raw data or calculated? device setting or environmental condition?), ask the user for clarification. Refer to `references/field_classification_guide.md` for guidance, but when ambiguity remains, confirm with the user rather than guessing.\n\n## Quick Start\n\n```python\n# Install requirements first\npip install allotropy pandas openpyxl pdfplumber --break-system-packages\n\n# Core conversion\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# Convert with allotropy\nasm = allotrope_from_file(\"instrument_data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Output Format Selection\n\n**ASM JSON (default)** - Full semantic structure with ontology URIs\n- Best for: LIMS systems expecting ASM, data lakes, long-term archival\n- Validates against Allotrope schemas\n\n**Flattened CSV** - 2D tabular representation\n- Best for: Quick analysis, Excel users, systems without JSON support\n- Each measurement becomes one row with metadata repeated\n\n**Both** - Generate both formats for maximum flexibility\n\n## Calculated Data Handling\n\n**IMPORTANT:** Separate raw measurements from calculated/derived values.\n\n- **Raw data** → `measurement-document` (direct instrument readings)\n- **Calculated data** → `calculated-data-aggregate-document` (derived values)\n\nCalculated values MUST include traceability via `data-source-aggregate-document`:\n\n```json\n\"calculated-data-aggregate-document\": {\n  \"calculated-data-document\": [{\n    \"calculated-data-identifier\": \"SAMPLE_B1_DIN_001\",\n    \"calculated-data-name\": \"DNA integrity number\",\n    \"calculated-result\": {\"value\": 9.5, \"unit\": \"(unitless)\"},\n    \"data-source-aggregate-document\": {\n      \"data-source-document\": [{\n        \"data-source-identifier\": \"SAMPLE_B1_MEASUREMENT\",\n        \"data-source-feature\": \"electrophoresis trace\"\n      }]\n    }\n  }]\n}\n```\n\n**Common calculated fields by instrument type:**\n| Instrument | Calculated Fields |\n|------------|-------------------|\n| Cell counter | Viability %, cell density dilution-adjusted values |\n| Spectrophotometer | Concentration (from absorbance), 260/280 ratio |\n| Plate reader | Concentrations from standard curve, %CV |\n| Electrophoresis | DIN/RIN, region concentrations, average sizes |\n| qPCR | Relative quantities, fold change |\n\nSee `references/field_classification_guide.md` for detailed guidance on raw vs. calculated classification.\n\n## Validation\n\nAlways validate ASM output before delivering to the user:\n\n```bash\npython scripts/validate_asm.py output.json\npython scripts/validate_asm.py output.json --reference known_good.json  # Compare to reference\npython scripts/validate_asm.py output.json --strict  # Treat warnings as errors\n```\n\n**Validation Rules:**\n- Based on Allotrope ASM specification (December 2024)\n- Last updated: 2026-01-07\n- Source: https://gitlab.com/allotrope-public/asm\n\n**Soft Validation Approach:**\nUnknown techniques, units, or sample roles generate **warnings** (not errors) to allow for forward compatibility. If Allotrope adds new values after December 2024, the validator won't block them—it will flag them for manual verification. Use `--strict` mode to treat warnings as errors if you need stricter validation.\n\n**What it checks:**\n- Correct technique selection (e.g., multi-analyte profiling vs plate reader)\n- Field naming conventions (space-separated, not hyphenated)\n- Calculated data has traceability (`data-source-aggregate-document`)\n- Unique identifiers exist for measurements and calculated values\n- Required metadata present\n- Valid units and sample roles (with soft validation for unknown values)\n\n## Supported Instruments\n\nSee `references/supported_instruments.md` for complete list. Key instruments:\n\n| Category | Instruments |\n|----------|-------------|\n| Cell Counting | Vi-CELL BLU, Vi-CELL XR, NucleoCounter |\n| Spectrophotometry | NanoDrop One/Eight/8000, Lunatic |\n| Plate Readers | SoftMax Pro, EnVision, Gen5, CLARIOstar |\n| ELISA | SoftMax Pro, BMG MARS, MSD Workbench |\n| qPCR | QuantStudio, Bio-Rad CFX |\n| Chromatography | Empower, Chromeleon |\n\n## Detection & Parsing Strategy\n\n### Tier 1: Native allotropy parsing (PREFERRED)\n**Always try allotropy first.** Check available vendors directly:\n\n```python\nfrom allotropy.parser_factory import Vendor\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}\")\n\n# Common vendors:\n# AGILENT_TAPESTATION_ANALYSIS  (for TapeStation XML)\n# BECKMAN_VI_CELL_BLU\n# THERMO_FISHER_NANODROP_EIGHT\n# MOLDEV_SOFTMAX_PRO\n# APPBIO_QUANTSTUDIO\n# ... many more\n```\n\n**When the user provides a file, check if allotropy supports it before falling back to manual parsing.** The `scripts/convert_to_asm.py` auto-detection only covers a subset of allotropy vendors.\n\n### Tier 2: Flexible fallback parsing\n**Only use if allotropy doesn't support the instrument.** This fallback:\n- Does NOT generate `calculated-data-aggregate-document`\n- Does NOT include full traceability\n- Produces simplified ASM structure\n\nUse flexible parser with:\n- Column name fuzzy matching\n- Unit extraction from headers\n- Metadata extraction from file structure\n\n### Tier 3: PDF extraction\nFor PDF-only files, extract tables using pdfplumber, then apply Tier 2 parsing.\n\n## Pre-Parsing Checklist\n\nBefore writing a custom parser, ALWAYS:\n\n1. **Check if allotropy supports it** - Use native parser if available\n2. **Find a reference ASM file** - Check `references/examples/` or ask user\n3. **Review instrument-specific guide** - Check `references/instrument_guides/`\n4. **Validate against reference** - Run `validate_asm.py --reference <file>`\n\n## Common Mistakes to Avoid\n\n| Mistake | Correct Approach |\n|---------|------------------|\n| Manifest as object | Use URL string |\n| Lowercase detection types | Use \"Absorbance\" not \"absorbance\" |\n| \"emission wavelength setting\" | Use \"detector wavelength setting\" for emission |\n| All measurements in one document | Group by well/sample location |\n| Missing procedure metadata | Extract ALL device settings per measurement |\n\n## Code Export for Data Engineers\n\nGenerate standalone Python scripts that scientists can hand off:\n\n```python\n# Export parser code\npython scripts/export_parser.py --input \"data.csv\" --vendor \"VI_CELL_BLU\" --output \"parser_script.py\"\n```\n\nThe exported script:\n- Has no external dependencies beyond pandas/allotropy\n- Includes inline documentation\n- Can run in Jupyter notebooks\n- Is production-ready for data pipelines\n\n## File Structure\n\n```\ninstrument-data-to-allotrope/\n├── SKILL.md                          # This file\n├── scripts/\n│   ├── convert_to_asm.py            # Main conversion script\n│   ├── flatten_asm.py               # ASM → 2D CSV conversion\n│   ├── export_parser.py             # Generate standalone parser code\n│   └── validate_asm.py              # Validate ASM output quality\n└── references/\n    ├── supported_instruments.md     # Full instrument list with Vendor enums\n    ├── asm_schema_overview.md       # ASM structure reference\n    ├── field_classification_guide.md # Where to put different field types\n    └── flattening_guide.md          # How flattening works\n```\n\n## Usage Examples\n\n### Example 1: Vi-CELL BLU file\n```\nUser: \"Convert this cell counting data to Allotrope format\"\n[uploads viCell_Results.xlsx]\n\nClaude:\n1. Detects Vi-CELL BLU (95% confidence)\n2. Converts using allotropy native parser\n3. Outputs:\n   - viCell_Results_asm.json (full ASM)\n   - viCell_Results_flat.csv (2D format)\n   - viCell_parser.py (exportable code)\n```\n\n### Example 2: Request for code handoff\n```\nUser: \"I need to give our data engineer code to parse NanoDrop files\"\n\nClaude:\n1. Generates self-contained Python script\n2. Includes sample input/output\n3. Documents all assumptions\n4. Provides Jupyter notebook version\n```\n\n### Example 3: LIMS-ready flattened output\n```\nUser: \"Convert this ELISA data to a CSV I can upload to our LIMS\"\n\nClaude:\n1. Parses plate reader data\n2. Generates flattened CSV with columns:\n   - sample_identifier, well_position, measurement_value, measurement_unit\n   - instrument_serial_number, analysis_datetime, assay_type\n3. Validates against common LIMS import requirements\n```\n\n## Implementation Notes\n\n### Installing allotropy\n```bash\npip install allotropy --break-system-packages\n```\n\n### Handling parse failures\nIf allotropy native parsing fails:\n1. Log the error for debugging\n2. Fall back to flexible parser\n3. Report reduced metadata completeness to user\n4. Suggest exporting different format from instrument\n\n### ASM Schema Validation\nValidate output against Allotrope schemas when available:\n```python\nimport jsonschema\n# Schema URLs in references/asm_schema_overview.md\n```\n","frontmatter":{"name":"instrument-data-to-allotrope","description":"Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines."},"isInternal":false,"tokens":2416,"sizeBytes":10726},{"name":"geo-sra-acquisition.md","path":"bio-research/skills/nextflow-development/references/geo-sra-acquisition.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/geo-sra-acquisition.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# GEO/SRA Data Acquisition\n\nDownload raw sequencing data from NCBI GEO/SRA and prepare it for nf-core pipelines.\n\n**Use this when:** Reanalyzing published datasets, validating findings, or comparing results against public cohorts.\n\n## Table of Contents\n\n- [Workflow Overview](#workflow-overview)\n- [Step 1: Fetch Study Information](#step-1-fetch-study-information)\n- [Step 2: Review Sample Groups](#step-2-review-sample-groups)\n- [Step 3: Download FASTQ Files](#step-3-download-fastq-files)\n- [Step 4: Generate Samplesheet](#step-4-generate-samplesheet)\n- [Step 5: Run nf-core Pipeline](#step-5-run-nf-core-pipeline)\n- [Supported Pipelines](#supported-pipelines)\n- [Supported Organisms](#supported-organisms)\n- [Complete Example](#complete-example)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Workflow Overview\n\nExample: \"Find differentially expressed genes in GSE309891 (drug-treated vs control)\"\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                    GEO/SRA DATA ACQUISITION                     │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Fetch study info     │\n                 │   • Query NCBI/SRA     │\n                 │   • Get metadata       │\n                 │   • Detect organism    │\n                 │   • Identify data type │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Present summary      │\n                 │   • Organism: Human    │\n                 │   • Genome: GRCh38     │\n                 │   • Type: RNA-Seq      │\n                 │   • Pipeline: rnaseq   │\n                 │   • Samples: 12        │\n                 │     (6 treated,        │\n                 │      6 control)        │\n                 │   • Size: ~24 GB       │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER CONFIRMS  │◄──── Decision point\n                    │  genome/pipeline│\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Select samples       │\n                 │   • Group by condition │\n                 │   • Show treated/ctrl  │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER SELECTS   │◄──── Decision point\n                    │  sample subset  │\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Download FASTQs      │\n                 │   • 24 files (R1+R2)   │\n                 │   • Parallel transfers │\n                 │   • Auto-resume        │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Generate samplesheet │\n                 │   • Map SRR to files   │\n                 │   • Pair R1/R2         │\n                 │   • Assign conditions  │\n                 └────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                    NF-CORE PIPELINE EXECUTION                   │\n│              (Continue with Step 1 of main workflow)            │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Instructions for Claude\n\nWhen assisting users with GEO/SRA data acquisition:\n\n1. **Always fetch study info first** to show the user what data is available\n2. **Ask for confirmation before downloading** - Present the sample groups and sizes, then ask which subset to download using AskUserQuestion\n3. **Suggest appropriate genome and pipeline** based on the organism and data type\n4. **Return to main SKILL.md workflow** after data preparation is complete\n\nExample confirmation question:\n```\nQuestion: \"Which sample group would you like to download?\"\nOptions:\n  - \"RNA-Seq:PAIRED (42 samples, ~87 GB)\"\n  - \"RNA-Seq:SINGLE (7 samples, ~4.5 GB)\"\n  - \"All samples (49 samples, ~92 GB)\"\n```\n\n---\n\n## Step 1: Fetch Study Information\n\nGet metadata about a GEO study before downloading.\n\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004\n```\n\n**Output includes:**\n- Study title and summary\n- Organism (with auto-suggested genome)\n- Number of samples and runs\n- Data types (RNA-Seq, ATAC-seq, etc.)\n- Estimated download size\n- Suggested nf-core pipeline\n\n**Save info to JSON:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004 -o study_info.json\n```\n\n---\n\n## Step 2: Review Sample Groups\n\nView sample groups organized by data type and layout. This is useful for studies with mixed data types.\n\n```bash\npython scripts/sra_geo_fetch.py groups <GEO_ID>\n```\n\n**Example output:**\n```\nSample Group          Count Layout     GSM Range                    Est. Size\n--------------------------------------------------------------------------------\nRNA-Seq                  42 PAIRED     GSM2879618...(42 samples)      87.4 GB\nRNA-Seq                   7 SINGLE     GSM2976181-GSM2976187           4.5 GB\n--------------------------------------------------------------------------------\nTOTAL                    49                                           91.9 GB\n\nAvailable groups for --subset option:\n  1. \"RNA-Seq:PAIRED\" - 42 samples (~87.4 GB)\n  2. \"RNA-Seq:SINGLE\" - 7 samples (~4.5 GB)\n```\n\n**List individual runs:**\n```bash\npython scripts/sra_geo_fetch.py list <GEO_ID>\n\n# Filter by data type\npython scripts/sra_geo_fetch.py list GSE110004 --filter \"RNA-Seq:PAIRED\"\n```\n\n**DECISION POINT:** Review the sample groups. Decide which subset to download if the study has multiple data types.\n\n---\n\n## Step 3: Download FASTQ Files\n\nDownload FASTQ files from ENA (faster than SRA).\n\n```bash\npython scripts/sra_geo_fetch.py download <GEO_ID> -o <OUTPUT_DIR>\n```\n\n**Options:**\n- `-o, --output`: Output directory (required)\n- `-i, --interactive`: Interactively select sample group to download\n- `-s, --subset`: Filter by data type (e.g., \"RNA-Seq:PAIRED\")\n- `-p, --parallel`: Parallel downloads (default: 4)\n- `-t, --timeout`: Download timeout in seconds (default: 600)\n\n### Interactive Mode (Recommended)\n\nUse `-i` flag for interactive sample selection when the study has multiple data types:\n\n```bash\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n```\n\n**Interactive output:**\n```\n============================================================\n  SELECT SAMPLE GROUP TO DOWNLOAD\n============================================================\n\n  [1] RNA-Seq (paired)\n      Samples: 42\n      GSM: GSM2879618...(42 samples)\n      Size: ~87.4 GB\n\n  [2] RNA-Seq (single)\n      Samples: 7\n      GSM: GSM2976181-GSM2976187\n      Size: ~4.5 GB\n\n  [0] Download ALL (49 samples)\n------------------------------------------------------------\n\nEnter selection (0-2):\n```\n\n### Direct Subset Selection\n\nAlternatively, specify the subset directly:\n\n```bash\n# Download only RNA-Seq paired-end data\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq \\\n    --subset \"RNA-Seq:PAIRED\" --parallel 6\n```\n\n**Note:** Downloads automatically skip existing files. Resume interrupted downloads by re-running the command.\n\n---\n\n## Step 4: Generate Samplesheet\n\nCreate a samplesheet compatible with nf-core pipelines.\n\n```bash\npython scripts/sra_geo_fetch.py samplesheet <GEO_ID> \\\n    --fastq-dir <FASTQ_DIR> \\\n    -o samplesheet.csv\n```\n\n**Options:**\n- `-f, --fastq-dir`: Directory containing downloaded FASTQ files (required)\n- `-o, --output`: Output samplesheet path (default: samplesheet.csv)\n- `-p, --pipeline`: Target pipeline (auto-detected if not specified)\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n```\n\n**Output:** The script will:\n1. Create samplesheet in the format required by the target pipeline\n2. Display suggested genome reference\n3. Show suggested nf-core command\n\n---\n\n## Step 5: Run nf-core Pipeline\n\nAfter generating the samplesheet, the script provides a suggested command.\n\n**Example output:**\n```\nSuggested command:\n   nextflow run nf-core/rnaseq \\\n       --input samplesheet.csv \\\n       --outdir results \\\n       --genome R64-1-1 \\\n       -profile docker\n```\n\n**DECISION POINT:** Review and confirm:\n1. Is the suggested pipeline correct?\n2. Is the genome reference correct for your organism?\n3. Do you need additional pipeline options?\n\nThen return to the main SKILL.md workflow (Step 1: Environment Check) to proceed with pipeline execution.\n\n---\n\n## Supported Pipelines\n\nThe skill auto-detects appropriate pipelines based on library strategy. Pipelines marked with ★ are fully supported with configs, samplesheet generation, and documentation. Others are suggested but require manual setup following nf-core documentation.\n\n| Library Strategy | Suggested Pipeline | Support |\n|------------------|--------------------|---------|\n| RNA-Seq          | nf-core/rnaseq     | ★ Full  |\n| ATAC-seq         | nf-core/atacseq    | ★ Full  |\n| WGS/WXS          | nf-core/sarek      | ★ Full  |\n| ChIP-seq         | nf-core/chipseq    | Manual  |\n| Bisulfite-Seq    | nf-core/methylseq  | Manual  |\n| miRNA-Seq        | nf-core/smrnaseq   | Manual  |\n| Amplicon         | nf-core/ampliseq   | Manual  |\n\n---\n\n## Supported Organisms\n\nCommon organisms with auto-suggested genomes:\n\n| Organism | Genome | Notes |\n|----------|--------|-------|\n| Homo sapiens | GRCh38 | Human reference |\n| Mus musculus | GRCm39 | Mouse reference |\n| Saccharomyces cerevisiae | R64-1-1 | Yeast S288C |\n| Drosophila melanogaster | BDGP6 | Fruit fly |\n| Caenorhabditis elegans | WBcel235 | C. elegans |\n| Danio rerio | GRCz11 | Zebrafish |\n| Arabidopsis thaliana | TAIR10 | Arabidopsis |\n| Rattus norvegicus | Rnor_6.0 | Rat |\n\nSee `scripts/config/genomes.yaml` for the full list.\n\n---\n\n## Complete Example\n\nReanalyze GSE110004 (yeast RNA-seq):\n\n```bash\n# 1. Get study info and sample groups\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download with interactive selection\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n# Select option [1] for RNA-Seq paired-end samples\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n\n# 4. Run nf-core/rnaseq (continue with main SKILL.md workflow)\nnextflow run nf-core/rnaseq \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome R64-1-1 \\\n    -profile docker\n```\n\n### Alternative: Non-interactive Download\n\n```bash\n# Review sample groups first\npython scripts/sra_geo_fetch.py groups GSE110004\n\n# Download specific subset directly\npython scripts/sra_geo_fetch.py download GSE110004 \\\n    --subset \"RNA-Seq:PAIRED\" \\\n    -o ./fastq \\\n    --parallel 4\n```\n\n---\n\n## Troubleshooting\n\n### ENA Download Fails\nIf ENA downloads fail, the data may need to be fetched directly from SRA:\n\n```bash\n# Create SRA tools environment\nconda create -n sra_tools -c bioconda sra-tools\n\n# Download with prefetch + fasterq-dump\nconda run -n sra_tools prefetch SRR6357070\nconda run -n sra_tools fasterq-dump SRR6357070 -O ./fastq\n```\n\n### No SRA Runs Found\nSome GEO datasets only have processed data, not raw sequencing reads. Check:\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\nIf \"Runs: 0\", the dataset may not have raw data in SRA.\n\n### SuperSeries Support\nGEO SuperSeries (which contain multiple SubSeries) are automatically handled. The tool will:\n1. Detect that a GEO ID is a SuperSeries\n2. Find the linked BioProject accession\n3. Fetch all SRA runs from the BioProject\n\nExample: GSE110004 is a SuperSeries that links to BioProject PRJNA432544.\n\n### Genome Not Recognized\nIf the organism is not in the genome mapping, manually specify the genome:\n```bash\n# Check available iGenomes\npython scripts/manage_genomes.py list\n\n# Or provide custom reference files to nf-core\nnextflow run nf-core/rnaseq --fasta /path/to/genome.fa --gtf /path/to/genes.gtf\n```\n\n---\n\n## Requirements\n\n- Python 3.8+\n- `requests` library (optional but recommended)\n- `pyyaml` library (optional, for genome config)\n- Network access to NCBI and ENA\n\nInstall optional dependencies:\n```bash\npip install requests pyyaml\n```\n","isInternal":false,"tokens":3096,"sizeBytes":14122},{"name":"installation.md","path":"bio-research/skills/nextflow-development/references/installation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/installation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Installation\n\n## Contents\n- [Quick install](#quick-install)\n- [Docker setup](#docker-setup)\n- [Singularity setup (HPC)](#singularity-setup-hpc)\n- [nf-core tools (optional)](#nf-core-tools-optional)\n- [Verify installation](#verify-installation)\n- [Common issues](#common-issues)\n\n## Quick install\n\n```bash\n# Nextflow\ncurl -s https://get.nextflow.io | bash\nmv nextflow ~/bin/\nexport PATH=\"$HOME/bin:$PATH\"\n\n# Verify\nnextflow -version\njava -version  # Requires 11+\n```\n\n## Docker setup\n\n### Linux\n```bash\nsudo apt-get update && sudo apt-get install docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n### macOS\nDownload Docker Desktop: https://docker.com/products/docker-desktop\n\n### Verify\n```bash\ndocker run hello-world\n```\n\n## Singularity setup (HPC)\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install singularity-container\n\n# Or via conda\nconda install -c conda-forge singularity\n```\n\n### Configure cache\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\necho 'export NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"' >> ~/.bashrc\n```\n\n## nf-core tools (optional)\n\n```bash\npip install nf-core\n```\n\nUseful commands:\n```bash\nnf-core list                    # Available pipelines\nnf-core launch rnaseq           # Interactive parameter selection\nnf-core download rnaseq -r 3.14.0  # Download for offline use\n```\n\n## Verify installation\n\n```bash\nnextflow run nf-core/demo -profile test,docker --outdir test_demo\nls test_demo/\n```\n\n## Common issues\n\n**Java version wrong:**\n```bash\nexport JAVA_HOME=/path/to/java11\n```\n\n**Docker permission denied:**\n```bash\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n**Nextflow not found:**\n```bash\necho 'export PATH=\"$HOME/bin:$PATH\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n","isInternal":false,"tokens":497,"sizeBytes":1816},{"name":"atacseq.md","path":"bio-research/skills/nextflow-development/references/pipelines/atacseq.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/pipelines/atacseq.md","title":"Pipelines Skill","category":"anthropic-skill","format":"markdown","content":"# nf-core/atacseq\n\n**Version:** 2.1.2\n\n**Official Documentation:** https://nf-co.re/atacseq/2.1.2/\n**GitHub:** https://github.com/nf-core/atacseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/atacseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Quality metrics](#quality-metrics)\n\n## Test command\n\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\n```\n\nExpected: ~15 min, creates peaks and BigWig tracks.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/path/to/ctrl_rep1_R1.fq.gz,/path/to/ctrl_rep1_R2.fq.gz,1\nCONTROL,/path/to/ctrl_rep2_R1.fq.gz,/path/to/ctrl_rep2_R2.fq.gz,2\nTREATMENT,/path/to/treat_rep1_R1.fq.gz,/path/to/treat_rep1_R2.fq.gz,1\nTREATMENT,/path/to/treat_rep2_R1.fq.gz,/path/to/treat_rep2_R2.fq.gz,2\n```\n\n| Column | Required | Description |\n|--------|----------|-------------|\n| sample | Yes | Condition/group identifier |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | Yes | Absolute path to R2 (paired-end required) |\n| replicate | Yes | Replicate number (integer) |\n\n### Design file for differential analysis\n```csv\nsample,condition\nCONTROL,control\nTREATMENT,treatment\n```\n\nUse with `--deseq2_design design.csv`.\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 --read_length 50\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10` |\n| `--read_length` | 50 | Read length for MACS2 optimization |\n| `--narrow_peak` | true | Narrow peaks (false for broad) |\n| `--mito_name` | chrM | Mitochondrial chromosome name |\n| `--keep_mito` | false | Keep mitochondrial reads |\n| `--min_reps_consensus` | 1 | Min replicates for consensus peaks |\n\n### Differential accessibility\n```bash\n--deseq2_design design.csv\n```\n\n## Output files\n\n```\nresults/\n├── bwa/mergedLibrary/\n│   ├── *.mLb.mkD.sorted.bam     # Filtered, deduplicated alignments\n│   └── bigwig/\n│       └── *.bigWig             # Coverage tracks\n├── macs2/narrowPeak/\n│   ├── *.narrowPeak             # Peak calls\n│   └── consensus/\n│       └── consensus_peaks.bed  # Merged peaks across replicates\n├── deeptools/\n│   ├── plotFingerprint/         # Library complexity\n│   └── plotProfile/             # TSS enrichment\n├── deseq2/                      # If --deseq2_design provided\n└── multiqc/\n```\n\n**Key outputs:**\n- `*.mLb.mkD.sorted.bam`: Analysis-ready alignments\n- `*.narrowPeak`: MACS2 peak calls (BED format)\n- `consensus_peaks.bed`: Consensus peaks across replicates\n- `*.bigWig`: Genome browser tracks\n\n## Quality metrics\n\n| Metric | Good | Acceptable | Poor |\n|--------|------|------------|------|\n| Mapped reads | >80% | 60-80% | <60% |\n| Mitochondrial | <20% | 20-40% | >40% |\n| Duplicates | <30% | 30-50% | >50% |\n| FRiP | >30% | 15-30% | <15% |\n| TSS enrichment | >6 | 4-6 | <4 |\n\n**Fragment size**: Should show nucleosomal periodicity (~50bp nucleosome-free, ~200bp mono-nucleosome).\n\n## Downstream analysis\n\n```r\nlibrary(ChIPseeker)\nlibrary(GenomicRanges)\npeaks <- import(\"consensus_peaks.bed\")\npeakAnno <- annotatePeak(peaks, TxDb = TxDb.Hsapiens.UCSC.hg38.knownGene)\n```\n\n**Motif analysis:**\n```bash\nfindMotifsGenome.pl consensus_peaks.bed hg38 motifs/ -size 200\n```\n\n## Troubleshooting\n\n**Low FRiP**: Check library complexity in `plotFingerprint/`. May indicate over-transposition.\n\n**Few peaks**: Lower threshold with `--macs_qvalue 0.1` or use `--narrow_peak false` for broader peaks.\n\n**High duplicates**: Normal for low-input; pipeline removes by default.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/atacseq/2.1.2/parameters/\n- **Output documentation:** https://nf-co.re/atacseq/2.1.2/docs/output/\n- **Usage documentation:** https://nf-co.re/atacseq/2.1.2/docs/usage/\n","isInternal":false,"tokens":1248,"sizeBytes":4181},{"name":"rnaseq.md","path":"bio-research/skills/nextflow-development/references/pipelines/rnaseq.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/pipelines/rnaseq.md","title":"Pipelines Skill","category":"anthropic-skill","format":"markdown","content":"# nf-core/rnaseq\n\n**Version:** 3.22.2\n\n**Official Documentation:** https://nf-co.re/rnaseq/3.22.2/\n**GitHub:** https://github.com/nf-core/rnaseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/rnaseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Downstream analysis](#downstream-analysis)\n\n## Test command\n\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\n```\n\nExpected: ~15 min, creates `multiqc/multiqc_report.html`.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,strandedness\nCONTROL_REP1,/path/to/ctrl1_R1.fq.gz,/path/to/ctrl1_R2.fq.gz,auto\nCONTROL_REP2,/path/to/ctrl2_R1.fq.gz,/path/to/ctrl2_R2.fq.gz,auto\nTREATMENT_REP1,/path/to/treat1_R1.fq.gz,/path/to/treat1_R2.fq.gz,auto\n```\n\n| Column | Required | Values |\n|--------|----------|--------|\n| sample | Yes | Alphanumeric, underscores allowed |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | No | Absolute path to R2 (empty for single-end) |\n| strandedness | Yes | `auto`, `forward`, `reverse`, `unstranded` |\n\n**Strandedness guide:**\n- `auto`: Inferred from data (recommended)\n- `forward`: TruSeq Stranded, dUTP protocols\n- `reverse`: Ligation-based protocols\n- `unstranded`: Non-stranded protocols\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--aligner` | `star_salmon` | Options: `star_salmon`, `star_rsem`, `hisat2` |\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10`, `BDGP6` |\n| `--pseudo_aligner` | - | Set to `salmon` for pseudo-alignment only |\n| `--skip_trimming` | false | Skip adapter trimming |\n| `--skip_alignment` | false | Pseudo-alignment only |\n\n### Custom reference\n```bash\n--fasta /path/to/genome.fa \\\n--gtf /path/to/annotation.gtf \\\n--star_index /path/to/star/  # Optional, builds if absent\n```\n\n## Output files\n\n```\nresults/\n├── star_salmon/\n│   ├── salmon.merged.gene_counts.tsv    # Raw counts for DESeq2\n│   ├── salmon.merged.gene_tpm.tsv       # TPM values\n│   └── *.bam                            # Alignments\n├── multiqc/\n│   └── multiqc_report.html              # QC summary\n└── pipeline_info/\n```\n\n**Key outputs:**\n- `salmon.merged.gene_counts.tsv`: Input for DESeq2/edgeR\n- `salmon.merged.gene_tpm.tsv`: Normalized expression\n\n## Downstream analysis\n\n```r\nlibrary(DESeq2)\ncounts <- read.delim(\"salmon.merged.gene_counts.tsv\", row.names=1)\ncoldata <- data.frame(\n    condition = factor(c(\"control\", \"control\", \"treatment\", \"treatment\"))\n)\ndds <- DESeqDataSetFromMatrix(\n    countData = round(counts),\n    colData = coldata,\n    design = ~ condition\n)\ndds <- DESeq(dds)\nres <- results(dds, contrast = c(\"condition\", \"treatment\", \"control\"))\n```\n\n## Troubleshooting\n\n**STAR index fails**: Increase memory with `--max_memory '64.GB'` or provide pre-built `--star_index`.\n\n**Low alignment rate**: Verify genome matches species; check FastQC for adapter contamination.\n\n**Strandedness detection fails**: Specify explicitly with `--strandedness reverse`.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/rnaseq/3.22.2/parameters/\n- **Output documentation:** https://nf-co.re/rnaseq/3.22.2/docs/output/\n- **Usage documentation:** https://nf-co.re/rnaseq/3.22.2/docs/usage/\n","isInternal":false,"tokens":1057,"sizeBytes":3614},{"name":"sarek.md","path":"bio-research/skills/nextflow-development/references/pipelines/sarek.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/pipelines/sarek.md","title":"Pipelines Skill","category":"anthropic-skill","format":"markdown","content":"# nf-core/sarek\n\n**Version:** 3.7.1\n\n**Official Documentation:** https://nf-co.re/sarek/3.7.1/\n**GitHub:** https://github.com/nf-core/sarek\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/sarek/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Variant calling modes](#variant-calling-modes)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n\n## Test command\n\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\n```\n\nExpected: ~20 min, creates aligned BAMs and variant calls.\n\n## Samplesheet format\n\n### From FASTQ\n```csv\npatient,sample,lane,fastq_1,fastq_2\npatient1,tumor,L001,/path/to/tumor_L001_R1.fq.gz,/path/to/tumor_L001_R2.fq.gz\npatient1,tumor,L002,/path/to/tumor_L002_R1.fq.gz,/path/to/tumor_L002_R2.fq.gz\npatient1,normal,L001,/path/to/normal_R1.fq.gz,/path/to/normal_R2.fq.gz\n```\n\n### From BAM/CRAM\n```csv\npatient,sample,bam,bai\npatient1,tumor,/path/to/tumor.bam,/path/to/tumor.bam.bai\npatient1,normal,/path/to/normal.bam,/path/to/normal.bam.bai\n```\n\n### With tumor/normal status\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,tumor_R1.fq.gz,tumor_R2.fq.gz,1\npatient1,normal,L001,normal_R1.fq.gz,normal_R2.fq.gz,0\n```\n\n`status`: 0 = normal, 1 = tumor\n\n## Variant calling modes\n\n### Germline (single sample)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools haplotypecaller,snpeff\n```\n\n### Somatic (tumor-normal pair)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools mutect2,strelka,snpeff\n```\n\n### WES (exome)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --wes --intervals /path/to/targets.bed \\\n    --tools haplotypecaller,snpeff\n```\n\n### Joint germline (cohort)\n```bash\n--tools haplotypecaller --joint_germline\n```\n\n## Parameters\n\n### Available tools\n\n**Germline callers:**\n- `haplotypecaller`: GATK HaplotypeCaller\n- `freebayes`: FreeBayes\n- `deepvariant`: DeepVariant (GPU optional)\n- `strelka`: Strelka2 germline\n\n**Somatic callers:**\n- `mutect2`: GATK Mutect2\n- `strelka`: Strelka2 somatic\n- `manta`: Structural variants\n\n**CNV callers:**\n- `ascat`: Copy number\n- `controlfreec`: CNV detection\n- `tiddit`: SV calling\n\n**Annotation:**\n- `snpeff`: Functional annotation\n- `vep`: Variant Effect Predictor\n\n### Key parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--tools` | - | Comma-separated list of tools |\n| `--genome` | - | `GRCh38`, `GRCh37` |\n| `--wes` | false | Exome mode (requires `--intervals`) |\n| `--intervals` | - | BED file for targeted regions |\n| `--joint_germline` | false | Joint calling for cohorts |\n| `--skip_bqsr` | false | Skip base quality recalibration |\n\n## Output files\n\n```\nresults/\n├── preprocessing/\n│   └── recalibrated/           # Analysis-ready BAMs\n│       └── *.recal.bam\n├── variant_calling/\n│   ├── haplotypecaller/        # Germline VCFs\n│   ├── mutect2/                # Somatic VCFs (filtered)\n│   └── strelka/\n├── annotation/\n│   └── snpeff/                 # Annotated VCFs\n└── multiqc/\n```\n\n## Troubleshooting\n\n**BQSR fails**: Check known sites available for genome. Skip with `--skip_bqsr` for non-standard references.\n\n**Mutect2 no variants**: Verify tumor/normal pairing in samplesheet (check `status` column).\n\n**Out of memory**: `--max_memory '128.GB'` for WGS.\n\n**DeepVariant GPU**: Ensure NVIDIA Docker runtime configured.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/sarek/3.7.1/parameters/\n- **Output documentation:** https://nf-co.re/sarek/3.7.1/docs/output/\n- **Usage documentation:** https://nf-co.re/sarek/3.7.1/docs/usage/\n","isInternal":false,"tokens":1242,"sizeBytes":4018},{"name":"troubleshooting.md","path":"bio-research/skills/nextflow-development/references/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/references/troubleshooting.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Troubleshooting\n\nQuick fixes for common nf-core pipeline issues.\n\n## Contents\n- [Exit Codes](#exit-codes)\n- [HPC/Singularity Issues](#hpcsingularity-issues)\n- [Pipeline Failures](#pipeline-failures)\n- [RNA-seq Specific](#rna-seq-specific)\n- [Sarek Specific](#sarek-specific)\n- [ATAC-seq Specific](#atac-seq-specific)\n- [Resource Management](#resource-management)\n- [Getting Help](#getting-help)\n\n## Exit Codes\n\nCommon exit codes indicating resource issues (per [nf-core docs](https://nf-co.re/docs/usage/troubleshooting/crash_halfway)):\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 137 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 143 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 104, 134, 139, 247 | Out of memory | Increase `--max_memory` |\n| 1 | General error | Check `.nextflow.log` for details |\n\nMost pipelines auto-retry with 2x then 3x resources before failing.\n\n## HPC/Singularity Issues\n\n### Singularity cache issues\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\n```\n\n### Using Singularity instead of Docker\nOn HPC systems without Docker, use Singularity:\n```bash\nnextflow run nf-core/<pipeline> -profile singularity ...\n```\n\n> **Note**: For basic environment setup (Docker, Nextflow, Java installation), see the inline instructions in Step 1 of SKILL.md.\n\n## Pipeline Failures\n\n### Container pull failed\n- Check network connectivity\n- Try: `-profile singularity` instead of docker\n- For offline: `nf-core download <pipeline> -r <version>`\n\n### \"No such file\" errors\n- Use **absolute paths** in samplesheet\n- Verify files exist: `ls /path/to/file`\n\n### Resume not working\n```bash\n# Check work directory exists\nls -la work/\n\n# Force clean restart (loses cache)\nrm -rf work/ .nextflow*\nnextflow run nf-core/<pipeline> ...\n```\n\n## RNA-seq Specific\n\n### STAR index fails\n- Increase memory: `--max_memory '64.GB'`\n- Or provide pre-built: `--star_index /path/to/star/`\n\n### Low alignment rate\n- Verify genome matches species\n- Check FastQC for adapter contamination\n- Try different aligner: `--aligner hisat2`\n\n### Strandedness detection fails\n- Specify explicitly: `--strandedness reverse`\n- Common values: `forward`, `reverse`, `unstranded`\n\n## Sarek Specific\n\n### BQSR fails\n- Check known sites for genome\n- Skip for non-standard references: `--skip_bqsr`\n\n### Mutect2 no variants\n- Verify tumor/normal pairing\n- Check samplesheet `status` column: 0=normal, 1=tumor\n\n### Out of memory for WGS\n```bash\n--max_memory '128.GB' --max_cpus 16\n```\n\n### DeepVariant GPU issues\n- Ensure NVIDIA Docker runtime configured\n- Or use CPU mode (slower)\n\n## ATAC-seq Specific\n\n### Low FRiP score\n- Check library complexity in `plotFingerprint/`\n- May indicate over-transposition\n\n### Few peaks called\n- Lower threshold: `--macs_qvalue 0.1`\n- Use broad peaks: `--narrow_peak false`\n\n### High duplicates\n- Normal for low-input samples\n- Pipeline removes by default\n- Consider deeper sequencing\n\n## Resource Management\n\n### Set resource limits\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n### Check available resources\n```bash\n# CPUs\nnproc\n\n# Memory\nfree -h\n\n# Disk\ndf -h .\n```\n\n## Getting Help\n\n1. Check `.nextflow.log` for error details\n2. Search nf-core Slack: https://nf-co.re/join\n3. Open issue on GitHub: https://github.com/nf-core/<pipeline>/issues\n","isInternal":false,"tokens":940,"sizeBytes":3368},{"name":"genomes.yaml","path":"bio-research/skills/nextflow-development/scripts/config/genomes.yaml","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/scripts/config/genomes.yaml","title":"Config Skill","category":"anthropic-skill","format":"yaml","content":"# Organism to Genome Mapping for nf-core Pipelines\n# Maps organism names (as they appear in GEO/SRA) to iGenomes keys\n\norganisms:\n  # Human\n  \"Homo sapiens\":\n    genome: \"GRCh38\"\n    taxid: 9606\n    aliases: [\"human\", \"hg38\", \"GRCh38\"]\n    notes: \"Primary human reference genome\"\n\n  \"Homo sapiens (legacy)\":\n    genome: \"GRCh37\"\n    taxid: 9606\n    aliases: [\"hg19\", \"GRCh37\"]\n    notes: \"Legacy human reference, still used for some clinical data\"\n\n  # Mouse\n  \"Mus musculus\":\n    genome: \"GRCm39\"\n    taxid: 10090\n    aliases: [\"mouse\", \"mm39\", \"GRCm39\"]\n    notes: \"Current mouse reference genome\"\n\n  \"Mus musculus (legacy)\":\n    genome: \"GRCm38\"\n    taxid: 10090\n    aliases: [\"mm10\", \"GRCm38\"]\n    notes: \"Legacy mouse reference\"\n\n  # Yeast\n  \"Saccharomyces cerevisiae\":\n    genome: \"R64-1-1\"\n    taxid: 4932\n    aliases: [\"yeast\", \"sacCer3\", \"S288C\", \"budding yeast\"]\n    notes: \"S288C reference strain\"\n\n  # Fruit fly\n  \"Drosophila melanogaster\":\n    genome: \"BDGP6\"\n    taxid: 7227\n    aliases: [\"fly\", \"dm6\", \"fruit fly\", \"Dmel\"]\n    notes: \"Berkeley Drosophila Genome Project release 6\"\n\n  # Worm\n  \"Caenorhabditis elegans\":\n    genome: \"WBcel235\"\n    taxid: 6239\n    aliases: [\"worm\", \"ce11\", \"C. elegans\", \"Cele\"]\n    notes: \"WormBase reference\"\n\n  # Zebrafish\n  \"Danio rerio\":\n    genome: \"GRCz11\"\n    taxid: 7955\n    aliases: [\"zebrafish\", \"danRer11\", \"Drer\"]\n    notes: \"Genome Reference Consortium Zebrafish Build 11\"\n\n  # Arabidopsis\n  \"Arabidopsis thaliana\":\n    genome: \"TAIR10\"\n    taxid: 3702\n    aliases: [\"arabidopsis\", \"thale cress\", \"Atha\"]\n    notes: \"The Arabidopsis Information Resource v10\"\n\n  # Rat\n  \"Rattus norvegicus\":\n    genome: \"Rnor_6.0\"\n    taxid: 10116\n    aliases: [\"rat\", \"rn6\", \"Rnor\"]\n    notes: \"Rnor 6.0 reference\"\n\n  # Chicken\n  \"Gallus gallus\":\n    genome: \"GRCg6a\"\n    taxid: 9031\n    aliases: [\"chicken\", \"galGal6\", \"Ggal\"]\n    notes: \"Genome Reference Consortium Chicken Build 6a\"\n\n  # Pig\n  \"Sus scrofa\":\n    genome: \"Sscrofa11.1\"\n    taxid: 9823\n    aliases: [\"pig\", \"susScr11\", \"Sscr\"]\n    notes: \"Swine genome assembly 11.1\"\n\n  # Cow\n  \"Bos taurus\":\n    genome: \"ARS-UCD1.2\"\n    taxid: 9913\n    aliases: [\"cow\", \"bosTau9\", \"cattle\", \"Btau\"]\n    notes: \"USDA ARS assembly\"\n\n  # Dog\n  \"Canis lupus familiaris\":\n    genome: \"CanFam3.1\"\n    taxid: 9615\n    aliases: [\"dog\", \"canFam3\", \"Clup\"]\n    notes: \"Broad Institute CanFam3.1\"\n\n  # Frog\n  \"Xenopus tropicalis\":\n    genome: \"JGI_4.2\"\n    taxid: 8364\n    aliases: [\"frog\", \"xenTro9\", \"Xtro\"]\n    notes: \"JGI assembly version 4.2\"\n\n  # Maize/Corn\n  \"Zea mays\":\n    genome: \"Zm-B73-REFERENCE-NAM-5.0\"\n    taxid: 4577\n    aliases: [\"maize\", \"corn\", \"Zmay\"]\n    notes: \"B73 reference genome v5\"\n\n  # Rice\n  \"Oryza sativa\":\n    genome: \"IRGSP-1.0\"\n    taxid: 39947\n    aliases: [\"rice\", \"Osat\"]\n    notes: \"International Rice Genome Sequencing Project\"\n\n  # E. coli (common bacterial model)\n  \"Escherichia coli\":\n    genome: null\n    taxid: 562\n    aliases: [\"E. coli\", \"Ecol\"]\n    notes: \"Use specific strain reference; K-12 MG1655 common\"\n\n  # Fission yeast\n  \"Schizosaccharomyces pombe\":\n    genome: \"ASM294v2\"\n    taxid: 4896\n    aliases: [\"fission yeast\", \"S. pombe\", \"Spom\"]\n    notes: \"PomBase reference\"\n\n# Pipeline mapping based on library strategy\npipeline_suggestions:\n  \"RNA-SEQ\": \"rnaseq\"\n  \"ATAC-SEQ\": \"atacseq\"\n  \"CHIP-SEQ\": \"chipseq\"\n  \"WGS\": \"sarek\"\n  \"WXS\": \"sarek\"\n  \"EXOME\": \"sarek\"\n  \"AMPLICON\": \"ampliseq\"\n  \"BISULFITE-SEQ\": \"methylseq\"\n  \"HI-C\": \"hic\"\n  \"MIRNA-SEQ\": \"smrnaseq\"\n  \"RRBS\": \"methylseq\"\n","isInternal":false,"tokens":1288,"sizeBytes":3520},{"name":"atacseq.yaml","path":"bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml","title":"Pipelines Skill","category":"anthropic-skill","format":"yaml","content":"name: atacseq\nversion: \"2.1.2\"\ndescription: \"Chromatin accessibility analysis and peak calling\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/atacseq/{version}/\"\n  parameters: \"https://nf-co.re/atacseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/atacseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/atacseq\"\n  releases: \"https://github.com/nf-core/atacseq/releases\"\n\ndata_types:\n  - ATAC-seq\n  - chromatin accessibility\n  - open chromatin\n\ndetection_hints:\n  filename:\n    - atac\n    - atacseq\n    - chromatin\n    - accessibility\n  directory:\n    - atac\n    - atacseq\n    - chromatin\n    - epigenome\n    - epigenetics\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Condition/group identifier (replicates share same name)\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (paired-end required)\"\n\n    - name: replicate\n      required: true\n      type: integer\n      default: 1\n      inference: filename\n      description: \"Replicate number (integer)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: read_length\n    prompt: \"What is the read length of your sequencing data?\"\n    options:\n      - value: 50\n        label: \"50 bp\"\n        description: \"Short reads\"\n      - value: 75\n        label: \"75 bp\"\n        description: \"Standard length\"\n      - value: 100\n        label: \"100 bp\"\n        description: \"Common for modern sequencers\"\n      - value: 150\n        label: \"150 bp\"\n        description: \"Long reads\"\n    default: 50\n    recommendation: \"Check FASTQ files or sequencing report for exact length\"\n\n  - parameter: narrow_peak\n    prompt: \"What type of peaks are you expecting?\"\n    options:\n      - value: \"true\"\n        label: \"Narrow peaks (default for ATAC-seq)\"\n        description: \"Standard ATAC-seq open chromatin regions\"\n      - value: \"false\"\n        label: \"Broad peaks\"\n        description: \"For histone marks or broader accessibility regions\"\n    default: \"true\"\n    recommendation: \"Use narrow peaks for standard ATAC-seq\"\n\ntest_profile:\n  command: \"nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_atacseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/atacseq \\\n        -r 2.1.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --read_length {read_length} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"bwa/mergedLibrary/*.mLb.mkD.sorted.bam\"\n      description: \"Filtered, deduplicated alignments\"\n    - path: \"bwa/mergedLibrary/bigwig/*.bigWig\"\n      description: \"Coverage tracks for genome browsers\"\n    - path: \"macs2/narrowPeak/*.narrowPeak\"\n      description: \"Peak calls (BED format)\"\n    - path: \"macs2/narrowPeak/consensus/consensus_peaks.bed\"\n      description: \"Consensus peaks across replicates\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"macs2/narrowPeak\"\n      check: exists\n      description: \"Peak calls directory\"\n\nquality_metrics:\n  - name: mapped_reads\n    good: \">80%\"\n    acceptable: \"60-80%\"\n    poor: \"<60%\"\n  - name: mitochondrial\n    good: \"<20%\"\n    acceptable: \"20-40%\"\n    poor: \">40%\"\n  - name: duplicates\n    good: \"<30%\"\n    acceptable: \"30-50%\"\n    poor: \">50%\"\n  - name: frip\n    good: \">30%\"\n    acceptable: \"15-30%\"\n    poor: \"<15%\"\n  - name: tss_enrichment\n    good: \">6\"\n    acceptable: \"4-6\"\n    poor: \"<4\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"Low FRiP score\"\n    fix: \"Check library complexity in plotFingerprint. May indicate over-transposition or low quality\"\n  - error: \"Few peaks called\"\n    fix: \"Lower threshold with --macs_qvalue 0.1 or use --narrow_peak false for broader peaks\"\n  - error: \"High duplicates\"\n    fix: \"Normal for low-input samples. Pipeline removes by default. Consider deeper sequencing\"\n  - error: \"High mitochondrial reads\"\n    fix: \"Sample quality issue. Pipeline filters mito by default (--keep_mito false)\"\n\nreplicate_patterns:\n  - \"_rep(\\\\d+)\"\n  - \"_R(\\\\d+)_\"\n  - \"_(\\\\d+)$\"\n  - \"_replicate(\\\\d+)\"\n","isInternal":false,"tokens":1410,"sizeBytes":5158},{"name":"rnaseq.yaml","path":"bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml","title":"Pipelines Skill","category":"anthropic-skill","format":"yaml","content":"name: rnaseq\nversion: \"3.22.2\"\ndescription: \"Gene expression quantification and differential expression analysis\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/rnaseq/{version}/\"\n  parameters: \"https://nf-co.re/rnaseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/rnaseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/rnaseq\"\n  releases: \"https://github.com/nf-core/rnaseq/releases\"\n\ndata_types:\n  - RNA-seq\n  - mRNA-seq\n  - bulk RNA-seq\n\ndetection_hints:\n  filename:\n    - rna\n    - rnaseq\n    - mrna\n    - expression\n  directory:\n    - rnaseq\n    - rna\n    - expression\n    - transcriptome\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (empty for single-end)\"\n\n    - name: strandedness\n      required: true\n      type: enum\n      allowed:\n        - auto\n        - forward\n        - reverse\n        - unstranded\n      default: \"auto\"\n      inference: default\n      description: \"Library strandedness (auto recommended)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended for human)\"\n        description: \"Latest human reference assembly\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference for compatibility\"\n      - value: mm10\n        label: \"Mouse mm10/GRCm38\"\n        description: \"Mouse reference genome\"\n      - value: BDGP6\n        label: \"Drosophila BDGP6\"\n        description: \"Fruit fly reference\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: aligner\n    prompt: \"Which alignment strategy would you prefer?\"\n    options:\n      - value: star_salmon\n        label: \"STAR + Salmon (recommended)\"\n        description: \"Most accurate, standard for differential expression\"\n      - value: star_rsem\n        label: \"STAR + RSEM\"\n        description: \"Better for isoform-level quantification\"\n      - value: hisat2\n        label: \"HISAT2\"\n        description: \"Lower memory requirements, faster\"\n    default: star_salmon\n    recommendation: \"Use star_salmon unless memory-constrained or need isoforms\"\n\ntest_profile:\n  command: \"nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_rnaseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/rnaseq \\\n        -r 3.22.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --aligner {aligner} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      description: \"Raw gene counts for DESeq2/edgeR\"\n    - path: \"star_salmon/salmon.merged.gene_tpm.tsv\"\n      description: \"TPM normalized expression values\"\n    - path: \"star_salmon/*.bam\"\n      description: \"Aligned reads\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      check: non_empty\n      description: \"Count matrix must have data\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"STAR index fails\"\n    fix: \"Increase memory with --max_memory '64.GB' or provide pre-built --star_index\"\n  - error: \"Low alignment rate\"\n    fix: \"Verify genome matches species; check FastQC for adapter contamination\"\n  - error: \"Strandedness detection fails\"\n    fix: \"Specify explicitly with --strandedness reverse (or forward/unstranded)\"\n","isInternal":false,"tokens":1107,"sizeBytes":4173},{"name":"sarek.yaml","path":"bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml","title":"Pipelines Skill","category":"anthropic-skill","format":"yaml","content":"name: sarek\nversion: \"3.7.1\"\ndescription: \"Variant calling for WGS/WES data (germline and somatic)\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/sarek/{version}/\"\n  parameters: \"https://nf-co.re/sarek/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/sarek/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/sarek\"\n  releases: \"https://github.com/nf-core/sarek/releases\"\n\ndata_types:\n  - WGS\n  - WES\n  - whole genome sequencing\n  - whole exome sequencing\n  - tumor-normal\n  - germline\n  - somatic\n\ndetection_hints:\n  filename:\n    - tumor\n    - normal\n    - germline\n    - wgs\n    - wes\n    - exome\n    - dna\n    - variant\n  directory:\n    - variant\n    - wgs\n    - wes\n    - exome\n    - germline\n    - somatic\n\nsamplesheet:\n  input_types:\n    - fastq\n    - bam\n    - cram\n\n  columns:\n    - name: patient\n      required: true\n      type: string\n      inference: filename\n      description: \"Patient/subject identifier for grouping samples\"\n\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier (e.g., tumor, normal)\"\n\n    - name: lane\n      required: false\n      type: string\n      default: \"L001\"\n      inference: filename\n      description: \"Sequencing lane\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R2 FASTQ\"\n\n    - name: bam\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM file\"\n\n    - name: bai\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM index\"\n\n    - name: status\n      required: false\n      type: integer\n      allowed:\n        - 0\n        - 1\n      default: 0\n      inference: filename\n      description: \"0=normal, 1=tumor (critical for somatic calling)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome should be used?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference with most annotation support\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"For compatibility with older datasets\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human data\"\n\n  - parameter: tools\n    prompt: \"What type of variant calling do you need?\"\n    options:\n      - value: \"haplotypecaller,snpeff\"\n        label: \"Germline variants (single samples)\"\n        description: \"For finding inherited variants in normal samples\"\n        condition: \"no tumor samples detected\"\n      - value: \"mutect2,strelka,snpeff\"\n        label: \"Somatic variants (tumor-normal pairs)\"\n        description: \"For finding cancer mutations with matched normal\"\n        condition: \"tumor-normal pairs detected\"\n      - value: \"haplotypecaller,deepvariant,snpeff\"\n        label: \"Germline with DeepVariant\"\n        description: \"Higher accuracy germline calling (requires GPU)\"\n      - value: \"mutect2,manta,snpeff\"\n        label: \"Somatic with structural variants\"\n        description: \"Comprehensive tumor analysis including SVs\"\n    default: \"haplotypecaller,snpeff\"\n    recommendation: \"Use somatic tools if tumor/normal pairs detected, otherwise germline\"\n\n  - parameter: wes\n    prompt: \"Is this whole exome sequencing (WES) data?\"\n    options:\n      - value: \"false\"\n        label: \"No - Whole Genome Sequencing (WGS)\"\n        description: \"Full genome coverage\"\n      - value: \"true\"\n        label: \"Yes - Whole Exome Sequencing (WES)\"\n        description: \"Requires --intervals BED file\"\n    default: \"false\"\n    recommendation: \"If WES, user must provide intervals BED file\"\n\ntest_profile:\n  command: \"nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\"\n  duration: \"20 minutes\"\n  success_indicators:\n    - \"test_sarek/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        -resume\n\n  wes_template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        --wes \\\n        --intervals {intervals} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"preprocessing/recalibrated/*.recal.bam\"\n      description: \"Analysis-ready BAM files\"\n    - path: \"variant_calling/*/*.vcf.gz\"\n      description: \"Variant call files\"\n    - path: \"annotation/snpeff/*.ann.vcf.gz\"\n      description: \"Annotated variants\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"preprocessing/recalibrated\"\n      check: exists\n      description: \"Recalibrated BAMs directory\"\n\nresources:\n  min_memory: \"16.GB\"\n  recommended_memory: \"64.GB\"\n  wgs_memory: \"128.GB\"\n  min_cpus: 4\n  recommended_cpus: 16\n  disk_space: \"500.GB\"\n\ntroubleshooting:\n  - error: \"BQSR fails\"\n    fix: \"Check known sites available for genome. Skip with --skip_bqsr for non-standard references\"\n  - error: \"Mutect2 no variants\"\n    fix: \"Verify tumor/normal pairing in samplesheet (check status column: 0=normal, 1=tumor)\"\n  - error: \"Out of memory\"\n    fix: \"--max_memory '128.GB' for WGS data\"\n  - error: \"DeepVariant GPU issues\"\n    fix: \"Ensure NVIDIA Docker runtime configured, or use CPU mode\"\n\ntumor_normal_keywords:\n  tumor:\n    - tumor\n    - tumour\n    - met\n    - metastasis\n    - primary\n    - cancer\n    - malignant\n  normal:\n    - normal\n    - germline\n    - blood\n    - pbmc\n    - control\n    - healthy\n    - matched\n","isInternal":false,"tokens":1698,"sizeBytes":6278},{"name":"SKILL.md","path":"bio-research/skills/nextflow-development/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/nextflow-development/SKILL.md","title":"nextflow-development","category":"anthropic-skill","format":"markdown","content":"---\nname: nextflow-development\ndescription: Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation.\n---\n\n# nf-core Pipeline Deployment\n\nRun nf-core bioinformatics pipelines on local or public sequencing data.\n\n**Target users:** Bench scientists and researchers without specialized bioinformatics training who need to run large-scale omics analyses—differential expression, variant calling, or chromatin accessibility analysis.\n\n## Workflow Checklist\n\n```\n- [ ] Step 0: Acquire data (if from GEO/SRA)\n- [ ] Step 1: Environment check (MUST pass)\n- [ ] Step 2: Select pipeline (confirm with user)\n- [ ] Step 3: Run test profile (MUST pass)\n- [ ] Step 4: Create samplesheet\n- [ ] Step 5: Configure & run (confirm genome with user)\n- [ ] Step 6: Verify outputs\n```\n\n---\n\n## Step 0: Acquire Data (GEO/SRA Only)\n\n**Skip this step if user has local FASTQ files.**\n\nFor public datasets, fetch from GEO/SRA first. See [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) for the full workflow.\n\n**Quick start:**\n\n```bash\n# 1. Get study info\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download (interactive mode)\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 --fastq-dir ./fastq -o samplesheet.csv\n```\n\n**DECISION POINT:** After fetching study info, confirm with user:\n- Which sample subset to download (if multiple data types)\n- Suggested genome and pipeline\n\nThen continue to Step 1.\n\n---\n\n## Step 1: Environment Check\n\n**Run first. Pipeline will fail without passing environment.**\n\n```bash\npython scripts/check_environment.py\n```\n\nAll critical checks must pass. If any fail, provide fix instructions:\n\n### Docker issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | Install from https://docs.docker.com/get-docker/ |\n| Permission denied | `sudo usermod -aG docker $USER` then re-login |\n| Daemon not running | `sudo systemctl start docker` |\n\n### Nextflow issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | `curl -s https://get.nextflow.io \\| bash && mv nextflow ~/bin/` |\n| Version < 23.04 | `nextflow self-update` |\n\n### Java issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed / < 11 | `sudo apt install openjdk-11-jdk` |\n\n**Do not proceed until all checks pass.** For HPC/Singularity, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 2: Select Pipeline\n\n**DECISION POINT: Confirm with user before proceeding.**\n\n| Data Type | Pipeline | Version | Goal |\n|-----------|----------|---------|------|\n| RNA-seq | `rnaseq` | 3.22.2 | Gene expression |\n| WGS/WES | `sarek` | 3.7.1 | Variant calling |\n| ATAC-seq | `atacseq` | 2.1.2 | Chromatin accessibility |\n\nAuto-detect from data:\n```bash\npython scripts/detect_data_type.py /path/to/data\n```\n\nFor pipeline-specific details:\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md)\n- [references/pipelines/sarek.md](references/pipelines/sarek.md)\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md)\n\n---\n\n## Step 3: Run Test Profile\n\n**Validates environment with small data. MUST pass before real data.**\n\n```bash\nnextflow run nf-core/<pipeline> -r <version> -profile test,docker --outdir test_output\n```\n\n| Pipeline | Command |\n|----------|---------|\n| rnaseq | `nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq` |\n| sarek | `nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek` |\n| atacseq | `nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq` |\n\nVerify:\n```bash\nls test_output/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\nIf test fails, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 4: Create Samplesheet\n\n### Generate automatically\n\n```bash\npython scripts/generate_samplesheet.py /path/to/data <pipeline> -o samplesheet.csv\n```\n\nThe script:\n- Discovers FASTQ/BAM/CRAM files\n- Pairs R1/R2 reads\n- Infers sample metadata\n- Validates before writing\n\n**For sarek:** Script prompts for tumor/normal status if not auto-detected.\n\n### Validate existing samplesheet\n\n```bash\npython scripts/generate_samplesheet.py --validate samplesheet.csv <pipeline>\n```\n\n### Samplesheet formats\n\n**rnaseq:**\n```csv\nsample,fastq_1,fastq_2,strandedness\nSAMPLE1,/abs/path/R1.fq.gz,/abs/path/R2.fq.gz,auto\n```\n\n**sarek:**\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,/abs/path/tumor_R1.fq.gz,/abs/path/tumor_R2.fq.gz,1\npatient1,normal,L001,/abs/path/normal_R1.fq.gz,/abs/path/normal_R2.fq.gz,0\n```\n\n**atacseq:**\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/abs/path/ctrl_R1.fq.gz,/abs/path/ctrl_R2.fq.gz,1\n```\n\n---\n\n## Step 5: Configure & Run\n\n### 5a. Check genome availability\n\n```bash\npython scripts/manage_genomes.py check <genome>\n# If not installed:\npython scripts/manage_genomes.py download <genome>\n```\n\nCommon genomes: GRCh38 (human), GRCh37 (legacy), GRCm39 (mouse), R64-1-1 (yeast), BDGP6 (fly)\n\n### 5b. Decision points\n\n**DECISION POINT: Confirm with user:**\n\n1. **Genome:** Which reference to use\n2. **Pipeline-specific options:**\n   - **rnaseq:** aligner (star_salmon recommended, hisat2 for low memory)\n   - **sarek:** tools (haplotypecaller for germline, mutect2 for somatic)\n   - **atacseq:** read_length (50, 75, 100, or 150)\n\n### 5c. Run pipeline\n\n```bash\nnextflow run nf-core/<pipeline> \\\n    -r <version> \\\n    -profile docker \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome <genome> \\\n    -resume\n```\n\n**Key flags:**\n- `-r`: Pin version\n- `-profile docker`: Use Docker (or `singularity` for HPC)\n- `--genome`: iGenomes key\n- `-resume`: Continue from checkpoint\n\n**Resource limits (if needed):**\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n---\n\n## Step 6: Verify Outputs\n\n### Check completion\n\n```bash\nls results/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\n### Key outputs by pipeline\n\n**rnaseq:**\n- `results/star_salmon/salmon.merged.gene_counts.tsv` - Gene counts\n- `results/star_salmon/salmon.merged.gene_tpm.tsv` - TPM values\n\n**sarek:**\n- `results/variant_calling/*/` - VCF files\n- `results/preprocessing/recalibrated/` - BAM files\n\n**atacseq:**\n- `results/macs2/narrowPeak/` - Peak calls\n- `results/bwa/mergedLibrary/bigwig/` - Coverage tracks\n\n---\n\n## Quick Reference\n\nFor common exit codes and fixes, see [references/troubleshooting.md](references/troubleshooting.md).\n\n### Resume failed run\n\n```bash\nnextflow run nf-core/<pipeline> -resume\n```\n\n---\n\n## References\n\n- [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) - Downloading public GEO/SRA data\n- [references/troubleshooting.md](references/troubleshooting.md) - Common issues and fixes\n- [references/installation.md](references/installation.md) - Environment setup\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md) - RNA-seq pipeline details\n- [references/pipelines/sarek.md](references/pipelines/sarek.md) - Variant calling details\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md) - ATAC-seq details\n\n---\n\n## Disclaimer\n\nThis skill is provided as a prototype example demonstrating how to integrate nf-core bioinformatics pipelines into Claude Code for automated analysis workflows. The current implementation supports three pipelines (rnaseq, sarek, and atacseq), serving as a foundation that enables the community to expand support to the full set of nf-core pipelines.\n\nIt is intended for educational and research purposes and should not be considered production-ready without appropriate validation for your specific use case. Users are responsible for ensuring their computing environment meets pipeline requirements and for verifying analysis results.\n\nAnthropic does not guarantee the accuracy of bioinformatics outputs, and users should follow standard practices for validating computational analyses. This integration is not officially endorsed by or affiliated with the nf-core community.\n\n## Attribution\n\nWhen publishing results, cite the appropriate pipeline. Citations are available in each nf-core repository's CITATIONS.md file (e.g., https://github.com/nf-core/rnaseq/blob/3.22.2/CITATIONS.md).\n\n## Licenses\n\n- **nf-core pipelines:** MIT License (https://nf-co.re/about)\n- **Nextflow:** Apache License, Version 2.0 (https://www.nextflow.io/about-us.html)\n- **NCBI SRA Toolkit:** Public Domain (https://github.com/ncbi/sra-tools/blob/master/LICENSE)\n","frontmatter":{"name":"nextflow-development","description":"Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation."},"isInternal":false,"tokens":2363,"sizeBytes":8828},{"name":"01-intuition-pumps.md","path":"bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL: Intuition Pumps for Scientific Problem Ideation\n\n## Overview\nThis skill helps scientists generate high-quality research ideas by providing systematic prompts (\"intuition pumps\") and identifying common ideation traps. Based on the framework that most biological and chemical science projects involve **perturbing a system, measuring it, and analyzing the data**, this skill guides users through structured ideation that can significantly impact how they spend years of their career.\n\n## Core Framework\n\n### The Three Pillars of Scientific Work\nResearch advances generally fall into one of these categories, each with two dimensions:\n\n**PERTURBATION**\n- *Logic*: Novel ways to manipulate biological systems (e.g., using CRISPR for deep mutational scanning)\n- *Technology*: New tools for manipulation (e.g., developing base editors, creating whole-genome CRISPR libraries)\n\n**MEASUREMENT**  \n- *Logic*: Novel applications of existing measurement tools (e.g., using tissue clearing to study liver fibrosis)\n- *Technology*: New measurement capabilities (e.g., developing tissue-clearing techniques, super-resolution microscopy)\n\n**THEORY/COMPUTATION**\n- *Logic*: Using computational tools to make discoveries (e.g., applying AlphaFold to identify protein functions)\n- *Technology*: Building new algorithms or models (e.g., developing machine learning architectures for biological data)\n\nUnderstanding which quadrant resonates with the user can help identify their niche and guide ideation.\n\n## The Skill Workflow\n\n### Phase 1: Initial Discovery Questions (5-10 minutes)\n\nBefore diving into intuition pumps, Claude should gather context by asking the user:\n\n1. **What is the user's general research area or field?** (e.g., immunology, synthetic biology, neuroscience, protein engineering)\n\n2. **What excites the user most about science?**\n   - Building new tools/technologies?\n   - Discovering fundamental principles?\n   - Solving practical problems?\n   - Understanding dynamic processes?\n\n3. **What are the user's existing strengths?** (Select all that apply)\n   - Specific techniques (please list)\n   - Computational skills\n   - Access to unique systems/models\n   - Domain expertise in a particular area\n\n4. **Current constraints:**\n   - Time horizon for this project? (months/years)\n   - Resources available?\n   - Must it connect to existing work, or can the user start fresh?\n\n5. **On a scale of 1-5, how would the user rate their current idea?**\n   - Likelihood of success: 1 (very risky) to 5 (highly feasible)\n   - Potential impact: 1 (incremental) to 5 (transformative)\n\n### Phase 2: Applying Intuition Pumps\n\nBased on the user's responses, Claude should guide them through relevant intuition pumps from this list:\n\n#### Intuition Pump #1: Make It Systematic\n**Prompt:** Take any one-off perturbation or measurement and make it systematic.\n\n**Examples:**\n- Instead of mutating one enzyme, measure kinetic parameters across an entire enzyme family\n- Instead of one CRISPR mutant → genome-wide screen with transcriptomic readout\n- Instead of imaging one condition → high-throughput imaging across thousands of conditions\n\n**Prompt for User:** What one-off experiment in your field could become a systematic survey?\n\n#### Intuition Pump #2: Identify Technology Limitations\n**Prompt:** What are the fundamental limitations of technologies you use? These limitations are opportunities.\n\n**Examples:**\n- Microscopy can't resolve beyond diffraction limit → super-resolution microscopy\n- DNA synthesis can't make complete genomes → develop assembly methods\n- Genetic screens have precise input but imprecise output → develop high-dimensional readouts\n- We do single gene KOs but networks are complex → develop combinatorial perturbation methods\n\n**Prompt for User:** What technology limitation frustrates you most? How might you turn that limitation into an opportunity?\n\n#### Intuition Pump #3: The \"I Can't Imagine\" Test\n**Prompt:** I can't imagine a future in which we don't have ____, but it doesn't exist yet.\n\n**Examples:**\n- The ability to design highly efficient enzymes like we design other proteins\n- The ability to deliver genome editing payloads to any cell type in vivo\n- 3D tomographic imaging of live cells at molecular resolution\n- Proteome-scale sequencing with the throughput of RNA-seq\n\n**Prompt for User:** What capability seems inevitable but doesn't exist yet in your field?\n\n#### Intuition Pump #4: Static vs. Dynamic Understanding\n**Prompt:** We understand biological \"parts lists\" but rarely understand dynamic processes.\n\n**Key Insight:** Most observations are single-timepoint, single-perturbation format. But biological systems are dynamic—like humans flowing through Grand Central Station or money through financial systems.\n\n**Examples:**\n- Understanding growth factor signaling like we understand turning a key in a car engine\n- Time-resolved cell atlases with lineage tracing through entire development\n- Following metabolite flux through pathways in real-time\n\n**Prompt for User:** What dynamic process in your field do we observe as static snapshots? How might you capture the full temporal or spatial dynamics?\n\n#### Intuition Pump #5: Pick a New Axis\n**Prompt:** We almost always use time as the x-axis for dynamic processes. What other coordinate could you use?\n\n**Example:** Instead of time, use \"infection progression\" markers to enable monitoring asynchronous cells\n\n**Prompt for User:** What non-temporal coordinate could reveal new biology in your system?\n\n#### Intuition Pump #6: Create a Technology Platform\n**Prompt:** Instead of answering one question, could you build a platform that enables many questions?\n\n**Examples:**\n- Antibodies for intracellular targets (not just extracellular)\n- AI that predicts perturbations needed to reach desired cell states\n- Universal genome delivery vehicles\n\n**Prompt for User:** What platform would transform how your field asks questions?\n\n#### Intuition Pump #7: Dogs That Don't Bark\n**Prompt:** Why doesn't something exist or occur? Absence can be as informative as presence.\n\n**Examples:**\n- Why are there no Gram-negative bacteria on human skin?\n- Why do some catalytically inactive enzymes persist through evolution?\n- Why don't certain cell types exist in certain tissues?\n\n**Prompt for User:** What absence puzzles you in your field?\n\n### Phase 3: Avoiding Common Traps\n\nAfter generating ideas, we must evaluate them critically. Here are the most common traps:\n\n#### Trap #1: The Truffle Hound\n**Warning:** Don't become so good at one system or technique that you fail to ask questions of biological import.\n\n**Bad:** \"What is the role of p190 RhoGAP in wing development?\"  \n**Better:** \"How do signaling pathways and cytoskeleton coordinate to control wing development?\"\n\n**Self-Check:** Is the question driven by biological curiosity or by what the user is technically capable of?\n\n#### Trap #2: Applying Existing Tool to New System\n**Warning:** \"Let's use CRISPR in my organism\" can be valuable but risks crowding and incrementalism.\n\n**When It Works:** The user is enabling a field that truly needs this capability\n**When It Fails:** The tool is already widely applied; the contribution will be incremental\n\n**Self-Check:** Will this tool application open new biological questions, or just extend existing observations? Claude should help the user evaluate this honestly.\n\n#### Trap #3: Jumping on the First Idea\n**Warning:** Treating ideas with reverence instead of skepticism. Confirmation bias sets in quickly.\n\n**Better Approach:** Users should treat new ideas like leeches trying to steal their time. Look for the warts. Develop several ideas in parallel and comparison shop.\n\n**Self-Check:** Has the user critically evaluated at least 3-5 alternative approaches?\n\n#### Trap #4: Too Many Fixed Parameters\n**Warning:** Fixing too many parameters at the outset creates a poor technique-application match.\n\n**Example of Over-Constraining:** \"I will use spatial transcriptomics to study antigen-presenting cell and T cell interactions in the tumor microenvironment.\"\n- This fixes: technique (spatial transcriptomics), cell types, and context\n- If any assumption fails, the project fails\n\n**Self-Check:** Has the user fixed more than 2 parameters before starting?\n\n#### Trap #5: Too Few Fixed Parameters\n**Warning:** \"I want to do impactful work in cell engineering\" → paralysis\n\n**Resolution:** Constraints engender creativity. Fix ONE parameter at a time and let creativity flow.\n\n**Self-Check:** Does the user have at least one concrete constraint to work with?\n\n### Phase 4: Literature Integration\n\nTo ensure the idea has appropriate scope and hasn't been thoroughly explored, Claude should ask:\n\n1. **What are 2-3 key questions or gaps the idea addresses?**\n\n2. **What should be searched in PubMed to:**\n   - Understand the current state of the field?\n   - Identify related approaches?\n   - Find empirical knowledge from adjacent domains that could inform the approach?\n\nClaude should use PubMed to:\n- Assess how general/specific the problem is\n- Identify relevant methodological advances\n- Find analogous systems or approaches in other fields\n- Determine the degree of competition\n\n### Phase 5: Idea Refinement and Output\n\nAfter working through intuition pumps, avoiding traps, and reviewing literature, Claude should help the user:\n\n1. **Crystallize the Idea:**\n   - Biological question\n   - Technical approach (perturbation/measurement/theory: logic vs. technology)\n   - What's novel about this angle?\n\n2. **Articulate Fixed vs. Floating Parameters:**\n   - What MUST remain constant in the approach?\n   - What can be flexible if obstacles arise?\n\n3. **Identify Key Assumptions:**\n   - What must be true for this to work?\n   - Which assumptions are about biology vs. technology capabilities?\n\n4. **Sketch Alternative Paths:**\n   - If the primary approach fails, what's Plan B?\n   - Can the project be designed to succeed regardless of outcome?\n\n## Output Deliverable\n\nAt the end of this skill, Claude should produce a **2-page Problem Ideation Document** containing:\n\n### Page 1: Core Idea\n- **Title:** Concise project name\n- **The Question:** What biological question is being asked?\n- **The Approach:** How will it be answered? (Specify perturbation/measurement/computation: logic vs. technology)\n- **What's Novel:** The unique angle\n- **Why It Matters:** Potential impact (generality × learning, or technology development)\n- **Intuition Pump(s) Used:** Which prompted this idea\n\n### Page 2: Critical Analysis\n- **Fixed vs. Floating Parameters:**\n  - Fixed: What must stay constant\n  - Floating: What can adapt\n\n- **Key Assumptions & Risk Assessment:**\n  - Biological assumptions (risk level 1-5)\n  - Technical assumptions (risk level 1-5)\n\n- **Traps Avoided:** Which pitfalls were navigated around?\n\n- **Alternative Approaches:** Plan B and Plan C\n\n- **Literature Context:**\n  - 3-5 key papers that inform or relate to this work\n  - Degree of competition (low/medium/high)\n  - The user's edge/advantage\n\n- **Next Steps:** First 3 concrete experiments or analyses\n\n## Key Principles to Remember\n\n1. **Reversal of Polarity:** Treat ideas with skepticism, not reverence. Look for flaws before falling in love.\n\n2. **Comparison Shopping:** Develop multiple ideas in parallel. The act of comparison improves decision-making.\n\n3. **Fix One Parameter at a Time:** Constraints engender creativity, but too many constraints prevent it.\n\n4. **Think in Ensembles:** The user is picking a family of possible projects, not a singular path. Flexibility is essential.\n\n5. **Balance Logic and Technology:** Novel biology can come from new tools OR clever application of existing tools.\n\n6. **Systematic Over One-Off:** High-throughput and systematic approaches often reveal more than single observations.\n\n7. **Dynamic Over Static:** Biological systems are dynamic. How can process be captured rather than snapshot?\n\n## Getting Started\n\nWhen the user is ready, Claude should guide them through the Phase 1 questions to begin the systematic ideation process. The key message: spending extra time on problem choice is the highest-leverage activity in science. A well-chosen problem executed reasonably well will have more impact than a mediocre problem executed brilliantly.\n\n---\n\n*This skill is based on the problem choice framework developed by Michael A. Fischbach and Christopher T. Walsh, as described in \"Problem choice and decision trees in science and engineering\" (Cell, 2024).*\n","isInternal":false,"tokens":2629,"sizeBytes":12495},{"name":"02-risk-assessment.md","path":"bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 2: Risk Assessment and Assumption Analysis\n\n## Overview\nThis skill helps scientists systematically identify, quantify, and manage project risk through rigorous assumption analysis. The goal is not to eliminate risk—risk-free projects tend to be incremental—but to name it, quantify it, and work steadily to chip away at it. This skill builds directly on the Problem Ideation Document from Skill 1.\n\n## Core Principle\n\n**\"Don't avoid risk; befriend it.\"**\n\nThe most important concept in problem choice is the two-axis evaluation:\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nThis skill focuses on the X-axis, helping users move their project rightward through systematic risk analysis.\n\n## Why This Matters\n\nA project with a high-risk assumption that won't read out for >2 years is problematic. One that requires multiple miracles to succeed should be avoided or refined. The human tendency is to stay in a safe local space, work laterally, and put off facing existential risks—like an ostrich burying its head in the sand. This skill helps users face risk head-on.\n\n## The Skill Workflow\n\n### Phase 1: Extract Project Assumptions (10-15 minutes)\n\nFirst, Claude should gather information about the user's project from Skill 1:\n\n1. **Project Summary** (from Skill 1):\n   - The biological question\n   - The technical approach\n   - What's novel about it\n\n2. **Project Horizon:**\n   - How long is this project expected to take? (months/years)\n   - What is the user's role? (graduate student, postdoc, PI, startup founder)\n\n3. **Initial Risk Sense:**\n   - What keeps the user up at night about this project?\n   - What's the scariest assumption?\n\n### Phase 2: Comprehensive Assumption Listing\n\nClaude should work with the user to list EVERY assumption the project makes from inception through conclusion. Assumptions fall into two categories:\n\n#### Type A: Assumptions About Biological Reality\nThese are facts about the world that either are or aren't true. They won't change during the project.\n\n**Examples:**\n- New cell types exist beyond what's currently known\n- A particular gene regulates the process being studied\n- Two proteins physically interact\n- A pathway functions in the organism of interest\n- The biological effect size is detectable\n\n#### Type B: Assumptions About Technical Capability\nThese are about whether technology can do what's needed. These CAN change during the project as methods improve.\n\n**Examples:**\n- A specific cell type can be isolated\n- Sequencing will generate high-quality data\n- An assay has sufficient throughput\n- Computational analysis can distinguish signal from noise\n- Gene editing will work in the system\n\n**Claude should ask:**\n1. What must be true about the biology for this to work?\n2. What must the technology be able to do?\n3. What about the experimental design—what assumptions are built in?\n4. What about the analysis—can it deliver what's needed?\n5. If everything works, can the findings be validated?\n6. Will the findings be interpretable and meaningful?\n\n### Phase 3: Risk Scoring (The Assumption Analysis Table)\n\nFor each assumption, Claude should help the user assign two scores:\n\n#### Risk Level (1-5 scale):\n- **1** = Very likely to be true/work (>90% confidence)\n- **2** = Likely (70-90% confidence)\n- **3** = Uncertain (40-70% confidence)\n- **4** = Unlikely (10-40% confidence)\n- **5** = Very unlikely (<10% confidence)\n\n#### Time to Test (months):\nHow long before the user will know if this assumption is valid?\n\n**Critical Rules:**\n1. Be brutally honest—try to convince oneself of being WRONG, not right\n2. Distinguish between biological vs. technical assumptions\n3. Consider whether technical assumptions might improve over time\n4. Note which assumptions depend on earlier assumptions succeeding\n\n### Phase 4: Risk Profile Evaluation\n\nOnce the complete table is ready, Claude should analyze the risk profile:\n\n#### Red Flags to Identify:\n1. **The Late High-Risk Problem:** Risk level 4-5 assumption that won't read out until >18 months\n2. **The Multiple Miracles:** More than 2-3 assumptions with risk level 4-5\n3. **The Dependency Chain:** High-risk assumptions stacked in sequence\n4. **The Ostrich Pattern:** Starting with low-risk work while avoiding the high-risk tests\n\n#### Green Lights:\n1. **Early Go/No-Go:** Highest-risk assumption testable in <6 months\n2. **Multiple Candidates:** Project can succeed with several different outcomes\n3. **Graceful Degradation:** If assumption X fails, assumption Y provides alternative path\n4. **Risk Distribution:** High-risk assumptions balanced across timeline\n\n**Rule of Thumb:** If you have a risk level 5 assumption three years out, pick another project.\n\n### Phase 5: Risk Mitigation Strategies\n\nFor each high-risk assumption (level 4-5), Claude should help develop mitigation strategies:\n\n#### Strategy 1: Move High-Risk Tests Earlier\n**Question:** Can a quicker, cruder test be designed that answers most of what's needed?\n\n**Example:** Instead of waiting 2 years to validate a new cell type exists, consider:\n- Using existing markers as a proxy\n- Testing in a simpler model system first\n- Using computational predictions to increase confidence\n\n#### Strategy 2: Multiple Candidates Approach\n**Question:** Can multiple candidates be tested in parallel to increase likelihood of success?\n\n**Example:** Instead of:\n- Testing one kinase → Test a panel of 10 kinases\n- Building one engineered organism → Build and test a library\n- Pursuing one therapeutic target → Pursue 3 related targets\n\n#### Strategy 3: Reframe the Question\n**Question:** Can the project scope be adjusted to reduce critical assumptions while maintaining impact?\n\n**Example from lecture:**\n- **Original:** Identify NEW enteroendocrine cell types (high risk: they may not exist)\n- **Reframed:** Better characterize KNOWN but incompletely understood cell types (lower risk)\n\n#### Strategy 4: Change the System\n**Question:** Is there a different biological system with similar scientific value but lower technical risk?\n\n**Example from lecture:**\n- **Original:** Intestinal epithelium (hard to manipulate genetically)\n- **Alternative:** Liver (easier genetic manipulation options exist)\n\n#### Strategy 5: Add Complementary Approaches\n**Question:** Can a parallel approach be added that de-risks the main assumption?\n\n**Example from lecture:**\n- Add spatial transcriptomics to scRNA-seq\n- This provides biogeographic context and validates cell type existence earlier\n\n### Phase 6: Go/No-Go Experiment Design\n\nFor the top 3 highest-risk assumptions, Claude should help design the critical go/no-go experiments:\n\n**For each, specify:**\n1. **The Question:** Exactly what is being tested?\n2. **The Experiment:** Most direct test possible (even if crude)\n3. **Success Criteria:** What result means \"go\"?\n4. **Failure Response:** What result means \"pivot\" or \"stop\"?\n5. **Timeline:** How soon can this be run?\n6. **Resources:** What is needed?\n\n**Key Principle:** Cut right to the critical go/no-go experiment. Don't just start with easy stuff—the risk points aren't going away.\n\n### Phase 7: Literature Validation\n\nClaude should search PubMed to help calibrate risk assessments:\n\n**Search for:**\n1. **Precedents:** Has anyone done something similar? (Reduces technical risk)\n2. **Biological Evidence:** What's known about the system? (Informs biological risk)\n3. **Technical Benchmarks:** How well do the methods work in practice?\n4. **Adjacent Successes:** Has anyone solved related problems?\n\n**Questions to ask the user:**\n- What specific searches would help calibrate risk?\n- Are there particular papers that informed the assumptions?\n- Are there technical benchmarks to look up?\n\n### Phase 8: Revised Project Plan\n\nBased on the risk analysis, Claude should help create a revised plan:\n\n#### Option A: De-Risk the Current Plan\n- Reorder experiments to test high-risk assumptions early\n- Add complementary approaches\n- Design multiple-candidate strategies\n\n#### Option B: Reframe the Project\n- Adjust scope while maintaining impact\n- Change biological system\n- Modify technical approach\n\n#### Option C: Pick a Different Project\nSometimes the honest answer is: \"This has too many miracles.\" That's valuable to know BEFORE investing years.\n\n## Output Deliverable\n\nClaude should produce a **2-page Risk Assessment Document**:\n\n### Page 1: Assumption Analysis Table\n\n| Assumption | Type* | Risk† | Time‡ | Notes |\n|------------|-------|-------|-------|-------|\n| [Assumption 1] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| [Assumption 2] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| ... | ... | ... | ... | ... |\n\n*Bio = Biological reality, Tech = Technical capability  \n†Risk: 1=very likely to 5=very unlikely  \n‡Time to test in months\n\n#### Risk Profile Summary:\n- **Total Assumptions:** X\n- **High Risk (4-5):** X assumptions\n- **Late High Risk (>18mo):** X assumptions\n- **Critical Path:** [Identify the chain of dependent assumptions]\n- **Overall Assessment:** [Green/Yellow/Red light with explanation]\n\n### Page 2: Risk Mitigation Plan\n\n#### Top 3 High-Risk Assumptions:\nFor each:\n1. **The Assumption:** [Stated clearly]\n2. **Current Risk Level & Timeline:** X (risk) at Y months\n3. **Why This Risk Exists:** [Explanation]\n4. **Mitigation Strategy:** [From Strategies 1-5 above]\n5. **Go/No-Go Experiment:**\n   - Experiment design\n   - Success criteria\n   - Timeline\n   - What you'll do if it fails\n\n#### Revised Project Timeline:\n```\nMonth 0-6:   [Early go/no-go experiments]\nMonth 6-12:  [Based on go/no-go results]\nMonth 12-18: [...]\nMonth 18+:   [...]\n```\n\n#### Contingency Plans:\n- **If assumption X fails:** [Plan B]\n- **If assumption Y fails:** [Plan C]\n- **Multiple success paths:** [How project can succeed different ways]\n\n#### Decision Points:\n- **Month X:** Evaluate [assumptions A, B] → Go/Pivot/Stop decision\n- **Month Y:** Evaluate [assumptions C, D] → Go/Pivot/Stop decision\n\n## Practical Examples\n\n### Example 1: ScRNA-Seq for Enteroendocrine Cells\n\n**High-Risk Assumptions Identified:**\n1. \"New cell types can be validated experimentally\" (Risk 5, 24 months)\n2. \"Knockout will yield biologically relevant phenotype\" (Risk 5, 30 months)\n\n**Problem:** Two risk-5 assumptions at 24+ months = RED FLAG\n\n**Mitigation Applied:**\n- Reframe to study known but poorly characterized cells (reduces Risk 5→3)\n- Switch to liver instead of intestine (improves validation timeline: 30→18 months)\n- Add spatial transcriptomics (provides earlier validation checkpoint at 16 months)\n\n### Example 2: Bacterial Therapy for Chronic Kidney Disease\n\n**High-Risk Assumption Identified:**\n\"Key uremic toxins leading to effects can be determined\" (Risk 4, unknown timeline)\n\n**Problem:** Critical assumption with unclear path to resolution\n\n**Mitigation Applied:**\n- Focus on known lead toxins (IS and PCS) rather than discovering new ones\n- Add parallel track: test multiple toxin candidates\n- Design study where learning toxin identity IS the outcome (multiple success paths)\n\n## Key Principles to Remember\n\n1. **Try to Convince Yourself You're Wrong:** The goal is critical evaluation, not confirmation bias.\n\n2. **Ignore Everything But Key Risk Points:** Don't get distracted by easy tasks. The high-risk assumptions aren't going away.\n\n3. **Early and Often:** Design go/no-go experiments at the earliest feasible moment.\n\n4. **Be Candid About Risk:** When presenting ideas, acknowledging risk makes your case MORE convincing, not less.\n\n5. **No Risk, No Interest:** The goal isn't zero risk—it's understood, quantified, manageable risk.\n\n6. **Risk Can Change:** Technical assumptions may improve as methods advance. Build this into your planning.\n\n7. **Compare Risk Profiles:** Evaluate multiple projects in parallel to compare risk profiles and make better choices.\n\n8. **Watch for the Ostrich Pattern:** Are you avoiding the scary experiment? That's human nature, but a critical failure mode.\n\n## Warning Signs\n\n**Warning signs include:**\n- Risk level 5 assumptions >2 years out\n- More than 3 assumptions at risk level 4-5\n- Highest-risk assumptions at the END of the timeline\n- Rationalizing why high-risk assumptions will \"probably work out\"\n- Planning to \"start with the easy stuff\" while avoiding risk tests\n- Inability to articulate clear go/no-go criteria\n\n**Good shape indicators:**\n- Highest-risk tests happen in first 6 months\n- Multiple paths to success exist\n- Clear plans for what to do if key assumptions fail\n- Risk is distributed across the timeline\n- Testing assumptions, not confirming hopes\n\n## Getting Started\n\nClaude should begin with Phase 1 by asking for:\n1. The project summary from Skill 1\n2. Project timeline expectations\n3. What concerns the user most about this project\n\nTogether, Claude and the user will build a rigorous risk assessment that dramatically improves the likelihood of success by helping avoid years of work on projects with insurmountable obstacles.\n\n---\n\n*Remember: Spending time on risk analysis is the most valuable investment a scientist can make. A well-understood risk profile enables moving forward with confidence or pivoting with clarity—both are valuable outcomes.*\n","isInternal":false,"tokens":2987,"sizeBytes":13177},{"name":"03-optimization-function.md","path":"bio-research/skills/scientific-problem-selection/references/03-optimization-function.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/03-optimization-function.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 3: Optimization Function Selection\n\n## Overview\nThis skill helps scientists articulate HOW their project should be evaluated and define what success means. While Skill 2 focused on likelihood of success (the X-axis), this skill focuses on impact if successful (the Y-axis). The key insight: **value is in the eye of a belief system**—the value creation framework must be explicitly stated and led with.\n\n## Core Principle\n\n**\"Pick the right optimization function.\"**\n\nDifferent types of projects should be evaluated by different metrics. A common source of conflict between trainees and PIs, or authors and referees, is a misunderstanding about which category a project falls under. The root cause is often failure to articulate evaluation criteria clearly.\n\n## The Fundamental Truth\n\nThe default state of:\n1. Every new discovery is **irrelevance**\n2. Every new technology is **non-use**\n3. Every company is **death**\n\nScientists must actively work against these defaults by choosing the right metrics and scoring well on at least one axis.\n\n## The Skill Workflow\n\n### Phase 1: Project Categorization (5 minutes)\n\nFirst, Claude should determine what type of project the user is pursuing:\n\n**Question 1: What is the primary goal?**\nA. Understand how biology works (fundamental knowledge)\nB. Enable new experiments or capabilities (tool/technology)\nC. Solve a practical problem (invention/application)\nD. Something else (please describe)\n\n**Question 2: What would \"success\" look like in 3-5 years?**\n- 1-2 sentences describing the ideal outcome\n\n**Question 3: Who cares if this succeeds?**\n- Academic researchers in the subfield?\n- Broader scientific community across fields?\n- Clinicians or practitioners?\n- Industry partners or companies?\n- General public or specific communities?\n- All of the above?\n\nBased on the answers, Claude should help identify the right optimization function.\n\n### Phase 2: Understanding the Three Main Frameworks\n\n#### Framework 1: Basic Science\n**Axes:** How much did we learn? × How general/fundamental is the object of study?\n\n**Philosophy:** A high score on EITHER axis yields substantial impact. You don't need both.\n\n**Examples:**\n- **High Generality, Medium Learning:** Ribosome stalling complex\n  - Updates understanding of translation (fundamental process)\n  - Scores well because translation is universal\n  \n- **Medium Generality, High Learning:** Oxytricha germ-line nucleus\n  - Genomic acrobatics may not be common to other organisms\n  - BUT elegant mapping scores highly on how much we learned\n  - May yield tools for genome editing (bonus)\n  \n- **High on Both Axes (Landmark):** RNA interference, biomolecular condensates\n  - These are rare—don't expect every project to be here\n  - But aim to score well on at least one axis\n\n**Key Questions:**\n- How many systems/organisms does this apply to?\n- Does it update understanding of a fundamental process?\n- Will textbooks need to be rewritten?\n- What new questions does this open?\n\n#### Framework 2: Technology Development\n**Axes:** How widely will it be used? × How critical is it for the application?\n\n**Philosophy:** Again, high score on EITHER axis is sufficient.\n\n**Examples:**\n- **Widely Used, Not Critical:** BLAST\n  - Used in countless projects\n  - Rarely THE critical tool, but enormous cumulative impact\n  \n- **Not Widely Used, Highly Critical:** Cryo-electron tomography\n  - Too complicated for broad adoption\n  - But generates stunning data that's impossible to get otherwise\n  - When you need it, nothing else works\n  \n- **High on Both Axes (Game-Changing):** \n  - GFP, CRISPR, AlphaFold (the famous ones)\n  - But also: lentiviral delivery, cell sorting, massively parallel sequencing\n  - Technologies we cannot imagine living without\n\n**Key Questions:**\n- How many labs would adopt this?\n- For what fraction of experiments is this THE enabling technology?\n- What becomes possible that wasn't before?\n- How hard is it to implement?\n\n**Critical Rule:** A tool that won't be widely used AND isn't critical for an application probably isn't worth building.\n\n#### Framework 3: Typical Invention/Application\n**Axes:** How much good? × For how many people?\n\n**Philosophy:** Useful for translational work, frugal science, global health.\n\n**Examples:**\n- Foldscope: Paper microscope accessible to millions of students globally\n- Neglected tropical disease intervention: Quality-adjusted life years per $100\n- Medical device: Number of patients who can access treatment\n\n**Key Questions:**\n- What problem does this solve?\n- How many people have this problem?\n- How much better is their life if you solve it?\n- What's the cost per person helped?\n\n### Phase 3: Selecting and Articulating Your Framework\n\nBased on your Phase 1 responses, let me help you choose:\n\n**If you selected A (fundamental knowledge):** → Basic Science Framework\n**If you selected B (enable experiments):** → Technology Development Framework  \n**If you selected C (solve practical problem):** → Invention Framework\n\n**Now, let's be explicit:**\n\n1. **State Your Framework:** \"This project should be evaluated as [basic science/technology development/invention].\"\n\n2. **Define Your Axes:** \n   - X-axis measures: [specific metric]\n   - Y-axis measures: [specific metric]\n\n3. **Make Your Case:**\n   - X-axis score (Low/Medium/High): [Your assessment + reasoning]\n   - Y-axis score (Low/Medium/High): [Your assessment + reasoning]\n\n4. **Threshold Check:** \n   - Do you score at least MEDIUM-HIGH on one axis?\n   - If both are LOW-MEDIUM, you have a problem\n\n### Phase 4: Alternative or Custom Metrics\n\nSometimes standard frameworks don't fit. Examples where custom metrics work:\n\n**Alternative Metric Examples:**\n- **Frugal Science:** How many children in low/middle-income countries gain access to microscopy?\n- **Neglected Disease:** Quality-adjusted life years saved per $100 invested\n- **Sustainability:** Tons of CO₂ equivalent prevented × cost-effectiveness\n- **Equity:** Reduction in disparity metric × number of people affected\n\n**When to propose alternative metrics:**\n- Your work addresses a specific underserved need\n- Standard metrics miss your core value proposition\n- You're working in an emerging area without established norms\n- Your work crosses traditional boundaries\n\n**How to propose alternative metrics:**\n1. Explain why standard metrics are insufficient\n2. Define your proposed metric clearly\n3. Provide a value creation index (two axes)\n4. Show how your project scores on these axes\n\n### Phase 5: Comparative Assessment\n\nEven if absolute impact is hard to estimate, comparative assessment is valuable:\n\n**Exercise: Compare 3 Related Projects**\n\nFor your project and two alternatives (either from literature or hypothetical):\n\n| Project | Framework | X-Axis Score | Y-Axis Score | Overall |\n|---------|-----------|--------------|--------------|---------|\n| Yours | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 1 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 2 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n\n**Comparative Questions:**\n- Which would be most impactful if they all work?\n- Which has the best risk-adjusted impact?\n- Are you pursuing the best option?\n- If not, why? (Sometimes there are good reasons: resources, expertise, timing)\n\n### Phase 6: Avoiding Metric Mismatch\n\n**Common Mismatches:**\n\n#### Mismatch 1: Basic Science vs. Technology Evaluation\n**Scenario:** You're doing fundamental biology, but reviewers ask \"How widely will this be used?\"\n\n**Problem:** They're evaluating basic science with technology metrics\n\n**Solution:** Explicitly frame as basic science. Lead with: \"This updates our understanding of [fundamental process], which is conserved across [many systems].\"\n\n#### Mismatch 2: Technology vs. Basic Science Evaluation\n**Scenario:** You're building a tool, but reviewers ask \"How much did we learn about biology?\"\n\n**Problem:** They're evaluating technology with basic science metrics\n\n**Solution:** Explicitly frame as technology development. Lead with: \"This enables experiments that are currently impossible, which [X] labs need for [Y] applications.\"\n\n#### Mismatch 3: Within-Category Confusion\n**Scenario:** Your basic science is specific but deep, but reviewers want broad generality\n\n**Problem:** They think both axes are required, rather than either/or\n\n**Solution:** Explicitly acknowledge: \"While this may not be universal, the depth of mechanistic insight scores highly on the learning axis.\"\n\n#### Mismatch 4: Time Horizon Mismatch\n**Scenario:** You're working on long-term fundamental research, but reviewers want immediate impact\n\n**Problem:** Different value systems about when impact should materialize\n\n**Solution:** Articulate your time horizon explicitly and provide historical examples of similar timelines\n\n### Phase 7: Value System Discussion\n\nThis is where Claude explicitly discusses the user's belief system about what matters:\n\n**Questions for Reflection:**\n\n1. **What drives the user?**\n   - Discovery and understanding?\n   - Enabling others?\n   - Solving problems?\n   - Building things?\n\n2. **What would make the user proud?**\n   - Paper in Cell/Nature/Science?\n   - Tool used by hundreds of labs?\n   - Treatment reaching patients?\n   - Opening a new field?\n\n3. **How does the user want to be remembered?**\n   - \"Discovered X\"\n   - \"Built Y that enabled Z\"\n   - \"Solved problem W\"\n   - \"Trained students who went on to...\"\n\n4. **Whose approval matters?**\n   - Specific senior scientists in the field?\n   - Broader community across fields?\n   - Practitioners who use tools?\n   - People whose lives are improved?\n\n**There are no wrong answers—but alignment matters:**\n- The project should match the user's value system\n- The evaluation framework should match the project type\n- Communication should lead with the framework\n\n### Phase 8: Literature Benchmarking\n\nClaude should use PubMed to benchmark impact in the user's area:\n\n**Searches should include:**\n\n1. **Impact Exemplars:** Papers the user considers high-impact in the field\n   - What framework did they use (implicitly or explicitly)?\n   - How did they score on the axes?\n   - What made them successful?\n\n2. **Analogous Projects:** Similar approaches or systems\n   - How were they evaluated?\n   - What impact did they achieve?\n   - What can be learned from their framing?\n\n3. **Field Expectations:** What's typical for the area?\n   - Are basic science papers common?\n   - Is technology development valued?\n   - What level of impact is \"good enough\"?\n\n**Questions to ask the user:**\n- What papers should be analyzed as benchmarks?\n- What search terms capture the field's impact exemplars?\n- Are there specific journals or authors whose framing to emulate?\n\n### Phase 9: Communication Strategy\n\nOnce the framework is selected, here's how to lead with it:\n\n#### In Talks:\n**Opening Frame (within first 2 slides):**\n- \"The goal of this work is to understand [fundamental process X] in [general system Y]\" → Basic science\n- \"We're developing a technology that will enable [critical experiment X] for [community Y]\" → Technology\n- \"This invention addresses [problem X] affecting [N] people\" → Application\n\n#### In Papers:\n**Abstract Structure:**\n- State your framework implicitly through word choice\n- Basic science: \"reveals,\" \"demonstrates,\" \"shows that\"\n- Technology: \"enables,\" \"provides,\" \"makes it possible to\"\n- Application: \"solves,\" \"addresses,\" \"improves\"\n\n#### In Grants:\n**Broader Impact Section:**\n- Explicitly name your evaluation framework\n- Provide the two-axis assessment\n- Score yourself on each axis with evidence\n\n#### With Your PI/Committee:\n**Alignment Conversation:**\n- \"I want to make sure we're aligned on how this should be evaluated\"\n- \"I see this as [framework], scoring [X] on [axis 1] and [Y] on [axis 2]\"\n- \"Do you agree, or do you see it differently?\"\n- \"This matters because...\" [explain downstream implications]\n\n## Output Deliverable\n\nClaude should produce a **2-page Impact Assessment Document**:\n\n### Page 1: Framework and Scoring\n\n#### Project Categorization:\n- **Type:** Basic Science / Technology Development / Invention / Custom\n- **Rationale:** [Why this categorization fits]\n\n#### Optimization Function:\n- **X-Axis:** [Metric name and definition]\n- **Y-Axis:** [Metric name and definition]\n- **Custom Rationale (if applicable):** [Why standard metrics don't fit]\n\n#### Self-Assessment:\n\n**X-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Y-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Overall Assessment:**\n- Score on at least one axis: ☑ Yes / ☐ No\n- Strong justification: ☑ Yes / ☐ No\n- Aligned with your values: ☑ Yes / ☐ No\n\n#### Visual Framework:\n```\n         [Your Project Type]\n              \nY-Axis    |           ★ Your Project\n[Metric]  |         /\n          |       /\n          |     /\n          |   /\n          |_________________\n              X-Axis [Metric]\n              \n★ = Your project\nReference projects plotted for context\n```\n\n### Page 2: Communication and Alignment\n\n#### Value System Alignment:\n- **What Drives You:** [Discovery/Enabling/Problem-solving/Building]\n- **Success Definition:** [What would make this worthwhile]\n- **Approval Sources:** [Whose opinion matters and why]\n- **Framework Fit:** [How project aligns with values]\n\n#### Potential Mismatches to Avoid:\n1. [Specific mismatch type]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n2. [Another mismatch]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n#### Communication Strategy:\n\n**For Talks:**\n- Opening frame: [Exact language to use in first 2 slides]\n- Key phrases: [Vocabulary that signals your framework]\n\n**For Papers:**\n- Abstract structure: [Framework-appropriate language]\n- Impact statement: [How to articulate in discussion]\n\n**For Grants:**\n- Broader impact: [How to score yourself explicitly]\n- Justification: [Evidence for scores]\n\n**For Mentors:**\n- Alignment question: [Exact question to ask]\n- Your perspective: [How you see it]\n- Discussion points: [What matters for alignment]\n\n#### Comparative Analysis:\n\n| Project | Type | X-Score | Y-Score | Notes |\n|---------|------|---------|---------|-------|\n| Yours | [Type] | [L/M/H] | [L/M/H] | [Key strengths] |\n| Benchmark 1 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Benchmark 2 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Alternative | [Type] | [L/M/H] | [L/M/H] | [Why not pursuing] |\n\n#### Action Items:\n1. [Specific step to strengthen X-axis score or argument]\n2. [Specific step to strengthen Y-axis score or argument]\n3. [Communication alignment with key stakeholders]\n\n## Practical Examples\n\n### Example 1: Ribosome Stalling (Basic Science)\n- **Framework:** Basic science\n- **X-Axis (Generality):** HIGH—translation is universal\n- **Y-Axis (Learning):** MEDIUM—mechanism of one quality control system\n- **Assessment:** High on generality alone = substantial impact\n- **Communication:** \"Updates our understanding of translation quality control\"\n\n### Example 2: BLAST (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** VERY HIGH—used by virtually all molecular biologists\n- **Y-Axis (Critical):** LOW-MEDIUM—helpful but rarely essential\n- **Assessment:** Extreme breadth of use = enormous cumulative impact\n- **Communication:** \"Enables rapid sequence comparison across all biological databases\"\n\n### Example 3: Cryo-EM Tomography (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** LOW—complex, expensive, specialized\n- **Y-Axis (Critical):** VERY HIGH—generates impossible-to-get-otherwise data\n- **Assessment:** Extreme criticality for niche = high impact\n- **Communication:** \"Enables 3D visualization of molecular machines in native cellular context\"\n\n### Example 4: Foldscope (Invention)\n- **Framework:** Invention (custom metric)\n- **X-Axis (Good):** MEDIUM—functional microscopy\n- **Y-Axis (People):** VERY HIGH—millions of students globally\n- **Assessment:** Massive reach × modest utility = transformative for education\n- **Communication:** \"Democratizes microscopy for global education\"\n\n## Key Principles to Remember\n\n1. **Value Is in the Eye of a Belief System:** Make yours explicit.\n\n2. **Lead with Your Metric:** Don't assume others share your framework.\n\n3. **Either Axis Suffices:** You don't need both—just score well on one.\n\n4. **Articulate Early:** Discuss with mentors before you're 2 years in.\n\n5. **Avoid Default State:** Work actively against irrelevance/non-use.\n\n6. **Compare, Don't Absolute:** Even rough comparison beats ignoring impact.\n\n7. **Align Communication:** Your words should signal your framework.\n\n8. **Match Project to Values:** Life is too short for misaligned work.\n\n## Warning Signs\n\n**Warning signs include:**\n- Inability to articulate which framework applies\n- Scoring LOW on both axes\n- Project type and evaluation framework don't match\n- User and PI have different frameworks but haven't discussed it\n- Using basic science metrics for a tool or vice versa\n- Never explicitly discussing impact assessment\n\n**Good shape indicators:**\n- Clear statement of optimization function\n- MEDIUM-HIGH score on at least one axis\n- Framework matches project type\n- Alignment with key stakeholders\n- Communication signals framework clearly\n- Benchmarking against comparable work\n\n## Getting Started\n\nClaude should begin Phase 1 by asking:\n1. What is the primary goal? (A/B/C/D)\n2. What would success look like in 3-5 years?\n3. Who cares if this succeeds?\n\nTogether, Claude and the user will select the right optimization function and position the work for maximum impact.\n\n---\n\n*Remember: Impact assessment isn't about ego—it's about ensuring work matters in the way the scientist wants it to matter. Explicit framing prevents years of misalignment.*\n","isInternal":false,"tokens":4134,"sizeBytes":18167},{"name":"04-parameter-strategy.md","path":"bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 4: Parameter Fixation Strategy\n\n## Overview\nThis skill helps scientists strategically decide which parameters to fix and which to keep flexible in their project. The paradox: too many fixed parameters creates brittleness, but too few causes paralysis. The key is fixing ONE parameter thoughtfully and letting others float—constraints engender creativity.\n\n## Core Principle\n\n**\"Fix one parameter; let the others float.\"**\n\nMost failure modes in ideation involve fixing too many parameters at the outset (system + method + application). Conversely, statements like \"I want to do impactful work in cell engineering\" are so broad they cause paralysis. The sweet spot: fix one meaningful constraint and let creativity flow within that boundary.\n\n## What Are Project Parameters?\n\nParameters are the choices that define your project:\n\n**Common Parameters:**\n- **System:** Which organism/cell type/tissue/molecule?\n- **Question:** What biological phenomenon to study?\n- **Tool/Method:** Which experimental approach?\n- **Application:** What practical use or goal?\n- **Output:** What form will results take?\n- **Collaborators:** Who will you work with?\n- **Timeline:** How fast must you move?\n- **Resources:** What's available/necessary?\n\n## The Skill Workflow\n\n### Phase 1: Parameter Inventory (10 minutes)\n\nFirst, let's identify what's already fixed in your current project idea:\n\n**Question 1: List your project parameters**\n\nFor each category, indicate if it's **FIXED** (must stay) or **FLOATING** (could change):\n\n| Parameter Type | Your Choice | Status (F/FL) | Why Fixed? |\n|----------------|-------------|---------------|------------|\n| **System** | [organism/cell/tissue] | F / FL | [reason] |\n| **Question** | [biological phenomenon] | F / FL | [reason] |\n| **Tool/Method** | [techniques] | F / FL | [reason] |\n| **Application** | [use case/goal] | F / FL | [reason] |\n| **Timeline** | [duration] | F / FL | [reason] |\n| **Resources** | [equipment/funding] | F / FL | [reason] |\n\n**Question 2: Count your fixed parameters**\n- How many did you mark as FIXED? _____\n- If >2, you may have over-constrained the problem\n\n**Question 3: Why are they fixed?**\nFor each fixed parameter, is it because:\nA. Your expertise/passion\nB. Lab resources/capabilities  \nC. Advisor requirements\nD. You think it's the \"best\" solution\nE. Historical accident (you started this way)\n\n### Phase 2: The GLP-1 Example (Case Study)\n\nLet's learn from a concrete example:\n\n**Proposed Project:** Engineer a T cell to produce GLP-1 (glucagon-like peptide-1) for continuous supply.\n\n**Analysis: What's Fixed?**\n1. Improving GLP-1 receptor agonist delivery characteristics (the problem)\n2. Using an engineered T cell (the solution)\n\n**Problem:** Two parameters fixed = poor technique-application match\n\n**Alternative Framings:**\n\n**If you fix Parameter 1 (GLP-1 delivery):**\n- Let the solution float\n- Better options: peptide engineering for extended half-life, oral peptides, small molecules, B cells (better protein secretion)\n- Why T cell is suboptimal: Not designed for protein secretion\n- **Best for:** Trainee in metabolism lab who cares about GLP-1\n\n**If you fix Parameter 2 (Engineered T cell):**\n- Let the application float\n- Better options: local-acting peptides (cytokines, chemokines, growth factors) for oncology/autoimmunity/regeneration\n- Why GLP-1 is suboptimal: Doesn't leverage T cell's natural capabilities\n- **Best for:** Trainee in immunology/cell engineering lab\n\n**Key Insight:** Which parameter you fix depends on YOUR interests and your lab's expertise. Both can lead to great projects, but they're DIFFERENT projects.\n\n### Phase 3: Diagnostic Questions\n\n**The Goldilocks Test:**\n\n**Too Many Fixed Parameters (>2):**\n- Are you forcing a technique-application match?\n- If one assumption fails, does everything fail?\n- Are you more attached to HOW than WHAT?\n- Does your project sound like: \"Use X to do Y in Z\"?\n\n**Too Few Fixed Parameters (0-1 very broad):**\n- Do you feel paralyzed where to start?\n- Is your statement super generic? (\"Do impactful work in...\")\n- Are you avoiding commitment?\n- Do you have decision fatigue?\n\n**Just Right (1-2 well-chosen):**\n- Do you have creative constraints?\n- Can you articulate why THIS constraint matters?\n- If one approach fails, do alternatives exist?\n- Does the constraint energize you?\n\n### Phase 4: The Illumina Example (Constraints Drive Innovation)\n\n**Historical Context:** Next-generation sequencing wasn't designed; we got Illumina's approach (many short reads).\n\n**Initial Constraint:** Short reads seemed like a limitation\n- Not what we would have \"asked for\"\n- Seemed inferior to long reads\n\n**Innovation Unleashed:**\n- Computational methods (assembly algorithms)\n- Novel applications (RNA-seq, ChIP-seq, ATAC-seq)\n- Unexpected uses (protein folding via sequencing)\n- Biochemical creativity to work within constraints\n\n**Lesson:** Constraints don't limit creativity—they focus it. If you feel stuck, fix ONE parameter and watch resourcefulness emerge.\n\n### Phase 5: Which Parameter Should You Fix?\n\n**Strategic Questions to Identify the Right Fixed Parameter:**\n\n1. **What can you prototype quickly?**\n   - What test article could you build rapidly?\n   - Which experimental conditions enable early go/no-go?\n   - What gives you fastest feedback?\n\n2. **What are people around you unusually good at?**\n   - Lab expertise?\n   - Core facility capabilities?\n   - Collaborator strengths?\n   - Your unique skill combination?\n\n3. **What do you enjoy so much you don't think of it as work?**\n   - System you're passionate about?\n   - Technique you love?\n   - Type of question that excites you?\n\n4. **What's your competitive advantage?**\n   - Unique resource access?\n   - Rare skill combination?\n   - Proprietary data/reagents?\n   - First-mover opportunity?\n\n**Common Strategic Choices:**\n\n**Fix the System (Let question & tool float):**\n- Good if: You're an expert in the organism/tissue/cell type\n- Enables: Asking multiple questions, trying various tools\n- Example: \"I study *Drosophila* neural development; I'll let the specific questions and methods emerge\"\n\n**Fix the Question (Let system & tool float):**\n- Good if: You care deeply about a biological phenomenon\n- Enables: Testing across systems, using best tool for each\n- Example: \"I want to understand phase separation; I'll study it wherever it's clearest\"\n\n**Fix the Tool (Let system & question float):**\n- Good if: You're developing or mastering a technology\n- Enables: Finding best applications, comparing across systems\n- Example: \"I'm building a new microscopy method; I'll find the most impactful uses\"\n\n**Fix the Application (Let system & tool float):**\n- Good if: You have a specific translational goal\n- Enables: Trying multiple approaches, testing in different models\n- Example: \"I want to treat disease X; I'm open to any validated approach\"\n\n### Phase 6: Parameter Flexibility Matrix\n\nFor your project, let's create a flexibility assessment:\n\n| Parameter | Currently | Should Be? | If Problem Arises, Could This Float? |\n|-----------|-----------|------------|--------------------------------------|\n| System | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Question | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Tool | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Application | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Timeline | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Resources | [F/FL] | [F/FL] | Yes / No / Maybe |\n\n**Analysis:**\n- **Flexibility Score:** How many \"Yes\" or \"Maybe\"? _____\n- **Risk Assessment:** If <3 can float, you're brittle\n- **Pivot Potential:** Which parameters provide escape routes?\n\n### Phase 7: Scenario Planning\n\nFor each fixed parameter, let's plan what happens if it becomes untenable:\n\n**Fixed Parameter 1: [Name it]**\n- **Why it's fixed:** [Your reason]\n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n**Fixed Parameter 2: [Name it]**\n- **Why it's fixed:** [Your reason]  \n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n### Phase 8: The Unfixing Exercise\n\nSometimes you need to unfix parameters to escape a rut:\n\n**Current State:** [Describe your over-constrained project]\n\n**Unfixing Experiment:**\n\n**Try 1: Unfix the System**\n- Keep question & tool\n- What other systems could you study?\n- Which would be easier/faster/more informative?\n\n**Try 2: Unfix the Tool**\n- Keep system & question\n- What other methods exist?\n- Which are more mature/accessible/powerful?\n\n**Try 3: Unfix the Question**\n- Keep system & tool\n- What other questions could you ask?\n- Which would be more impactful/feasible?\n\n**Evaluation:** Does any \"unfixed\" version seem better than your original? If yes, you over-constrained.\n\n### Phase 9: Literature Reality Check\n\nLet's use PubMed to see how others handled parameter fixation:\n\n**Search 1: Successful projects in your area**\n- What did they fix?\n- What did they let float?\n- Did they pivot from their initial parameter choices?\n\n**Search 2: Failed or stalled projects**\n- (Often in discussion sections or preprints)\n- Did they over-constrain?\n- What parameters trapped them?\n\n**Search 3: Method papers**\n- How did technology developers choose applications?\n- Did they fix the tool and let applications emerge?\n\n**Your Searches:**\nWhat specific papers should we analyze for parameter lessons?\n\n## Output Deliverable\n\n**2-Page Parameter Strategy Document**\n\n### Page 1: Current State and Analysis\n\n#### Parameter Inventory:\n| Parameter | Current Status | Strategic Rationale | Flexibility |\n|-----------|----------------|---------------------|-------------|\n| System | Fixed: [X] | [Why] | Can float if: [condition] |\n| Question | Floating: [Y,Z] | [Why] | Constrained by: [X] |\n| Tool | [Status] | [Why] | [Contingency] |\n| Application | [Status] | [Why] | [Contingency] |\n\n#### Diagnostic Summary:\n- **Fixed Parameters:** [Count and list]\n- **Assessment:** ☐ Too Many (>2) / ☐ Just Right (1-2) / ☐ Too Few (0, too broad)\n- **Primary Fixed Parameter:** [The one that matters most]\n- **Reason for Fixation:** [Expertise/Passion/Resources/Other]\n\n#### Goldilocks Test Results:\n- Over-constrained indicators: [Yes/No to each test]\n- Under-constrained indicators: [Yes/No to each test]\n- Verdict: [Analysis]\n\n### Page 2: Strategy and Contingencies\n\n#### Recommended Parameter Strategy:\n\n**Core Fixed Parameter:** [The one to keep]\n- **Rationale:** [Why this one]\n- **Your advantage:** [Expertise/access/passion]\n- **Enables:** [What becomes possible]\n\n**Parameters That Should Float:** [List]\n- [Parameter 1]: [How to explore alternatives]\n- [Parameter 2]: [How to explore alternatives]\n\n#### If Core Assumptions Fail:\n\n**Scenario 1: [Specific failure mode]**\n- **Unfix:** [Which parameter to let float]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n**Scenario 2: [Another failure mode]**\n- **Unfix:** [Which parameter]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n#### Project Ensemble:\n```\nCore Fixed: [X]\n\nPossible Projects:\n1. [X] + [A] + [B1] → [Outcome]\n2. [X] + [A] + [B2] → [Outcome]\n3. [X] + [C] + [B1] → [Outcome]\n\nAll share [X], but float other parameters\n```\n\n#### Strategic Questions Answered:\n1. **Quick prototype:** [How to test quickly]\n2. **Team strengths:** [Who's good at what]\n3. **Your passion:** [What energizes you]\n4. **Competitive advantage:** [Your edge]\n\n#### Historical Parallel:\n[Example like Illumina where constraints drove innovation in your field]\n- The constraint: [What seemed limiting]\n- The innovation: [How people worked within it]\n- Your application: [How this applies to your project]\n\n## Practical Examples\n\n### Example 1: GLP-1 T Cell Project (Over-Constrained)\n- **Fixed:** GLP-1 delivery + T cell engineering\n- **Problem:** Poor technique-application match\n- **Solution:** Unfix one parameter\n  - Fix delivery, float cell type → Better options emerge\n  - Fix T cell, float payload → Better applications emerge\n\n### Example 2: Drosophila Neurobiologist (Well-Constrained)\n- **Fixed:** *Drosophila* nervous system\n- **Floating:** Specific questions, methods\n- **Works because:** Deep system expertise, many tools available\n- **Enables:** Pursuing most impactful questions as field evolves\n\n### Example 3: \"Impactful Cell Engineering\" (Under-Constrained)\n- **Fixed:** Nothing specific\n- **Problem:** Paralysis from too many options\n- **Solution:** Fix one meaningful constraint\n  - Option A: Fix CAR-T platform → Find best applications\n  - Option B: Fix autoimmune disease → Find best cell engineering approach\n  - Option C: Fix specific rare disease → Let methods emerge\n\n## Key Principles to Remember\n\n1. **Constraints Engender Creativity:** Limitations focus resourcefulness\n\n2. **One Parameter Rule:** Fix one meaningful constraint, let others float\n\n3. **Match to Your Strengths:** Fix the parameter you have advantage in\n\n4. **Technique-Application Match:** Don't force tools into wrong problems\n\n5. **Flexibility = Resilience:** Floating parameters provide pivot options\n\n6. **Historical Lesson:** Best technologies emerged from working within constraints (Illumina)\n\n7. **Not Forever:** Parameters can unfix mid-project when stuck\n\n## Warning Signs\n\n**Over-Constrained (Too Many Fixed):**\n- Project sounds like: \"Use X to study Y in Z\"\n- When one assumption fails, everything fails\n- You're attached to HOW more than WHAT\n- Forcing a technique-application match\n\n**Under-Constrained (Too Few/Vague):**\n- Statement is incredibly broad (\"impactful work in...\")\n- Feeling paralyzed about where to start\n- Avoiding commitment due to infinite options\n- No clear next experimental step\n\n**Well-Constrained:**\n- One clear fixed parameter with good rationale\n- Multiple paths within that constraint\n- Energized by the focused challenge\n- If one approach fails, alternatives exist\n\n## Ready to Begin?\n\nLet's start with Phase 1. Please provide:\n1. Your current project description\n2. List of what you think is fixed vs. floating\n3. Your lab's core expertise\n4. What aspect excites you most\n\nTogether we'll optimize your parameter strategy for maximum creativity and resilience.\n\n---\n\n*Remember: The right constraint is liberating, not limiting. It channels creativity into productive directions while maintaining flexibility for pivots.*\n","isInternal":false,"tokens":3444,"sizeBytes":14423},{"name":"05-decision-tree.md","path":"bio-research/skills/scientific-problem-selection/references/05-decision-tree.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/05-decision-tree.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 5: Decision Tree Navigation (\"The Altitude Dance\")\n\n## Overview\nThis skill teaches you to move fluidly between execution (Level 1: getting stuff done) and strategic evaluation (Level 2: critical thinking). Projects rarely unfold linearly—they require frequent course correction. Most trainees should spend MORE time on their project's decision tree.\n\n## Core Principle\n**\"Learn the altitude dance\"**\n\nMove back and forth frequently between:\n- **Level 1:** Full immersion in experimental details or coding\n- **Level 2:** Step back, clear your head, evaluate as if someone else did the work\n\nThese cannot be done simultaneously. The key to navigating a project's decision tree is alternating between these levels deliberately.\n\n## Key Concepts\n\n**Why Decision Trees Matter:**\nOnce you're in a project, the landscape changes:\n- You've learned from initial experiments\n- New papers have been published\n- Technology has advanced\n- Your assumptions have been tested\n\nAt any decision point, you should rarely follow your plan from 2 years ago—there will be a better alternative.\n\n**The Altitude Levels:**\n- **Level 1 (Ground Level):** Doing the work, troubleshooting, optimizing\n- **Level 2 (Strategic Altitude):** What did we learn? What should we do next?\n- **Level 3 (Field Altitude):** How does this fit in the broader landscape?\n- **Level 4 (Career Altitude):** Is this the right use of my finite time?\n\n**Common Failure Modes:**\n1. **Stuck in Level 1:** Troubleshooting endlessly without reassessing the plan\n2. **Only Level 2:** Brilliant strategist but never rolls up sleeves\n3. **No rhythm:** Switching randomly instead of deliberately\n\n## Workflow\n\n### Phase 1: Map Your Decision Tree\n\nFor your project, identify:\n1. **Initial plan:** What was the intended path?\n2. **Branch points:** Where might alternative paths emerge?\n3. **Decision criteria:** What determines which branch to take?\n4. **New information:** What could change the landscape?\n\n### Phase 2: Establish Your Rhythm\n\n**Recommended Schedule:**\n- **Daily:** Level 1 work (experiments, coding, analysis)\n- **Weekly:** Level 2 evaluation (1-2 hours, ideally Friday afternoon)\n- **Monthly:** Level 3 field review (read new papers, attend seminars)\n- **Quarterly:** Level 4 career check-in (with mentor)\n\n**Level 2 Weekly Protocol:**\n1. Clear your head (walk, coffee, change of scene)\n2. Review what happened this week\n3. Ask: What did we learn?\n4. Ask: What should happen next?\n5. Update decision tree\n6. Plan next week's Level 1 work\n\n### Phase 3: Decision Points\n\nAt each major branch point:\n\n**Example: Genetic Screen Hits Wall**\n\nInstead of endless troubleshooting:\n- **Alternative 1:** Redo computational analysis with larger genome dataset\n- **Alternative 2:** Use AlphaFold models to search for similar folds\n- **Alternative 3:** Print and test larger candidate set (DNA synthesis cheaper now)\n\n**Framework:**\n1. **Acknowledge the stuck point**\n2. **Step to Level 2:** Evaluate with fresh eyes\n3. **Consider: What's newly possible?** (technology, knowledge)\n4. **Generate 3 alternatives**\n5. **Decide:** Troubleshoot more vs. pursue alternative\n\n## Output: Decision Tree Map\n- Visual map of your project's decision points\n- Update frequency schedule\n- Criteria for each branch point\n- Protocol for getting unstuck\n","isInternal":false,"tokens":760,"sizeBytes":3295},{"name":"06-adversity-planning.md","path":"bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 6: Adversity Response Planning (\"The Adversity Feature\")\n\n## Overview\nThis skill helps you prepare for inevitable crises and reframe them as opportunities. The term \"adversity feature\" (like a \"rock garden\" on a mountain bike trail) captures the mindset: adversity is not an obstacle—it's an opportunity to develop skill and improve your project.\n\n## Core Principle\n**\"Capitalize on the 'adversity feature'\"**\n\nAdversity in a project is inevitable AND opportune:\n- **Inevitable:** Almost every project suffers existential crisis or sharp turn\n- **Opportune:** Two valuable outcomes possible:\n  1. Fix the problem AND upgrade the project simultaneously\n  2. Develop reasoning-your-way-out skills (best growth opportunity)\n\n## Key Concepts\n\n**Why Adversity Is Inevitable:**\n- Technology doesn't work as advertised\n- Biological assumptions prove false\n- You get scooped\n- Key collaborator leaves\n- Funding runs out\n- Results don't support hypothesis\n\n**Why Adversity Is Opportune:**\n- Forces you to think deeply about alternatives\n- Removes sunk-cost bias (path is blocked anyway)\n- Often leads to better projects than original plan\n- Develops critical problem-solving skills\n- Makes you resourceful\n\n**The Crisis Mindset:**\n- **Wrong:** \"This is a disaster that delays me\"\n- **Right:** \"This is the crisis I've been waiting for—don't waste it\"\n\n## Workflow\n\n### Phase 1: Anticipate Failure Modes\n\nFor your project, list likely adversity scenarios:\n1. **Technical failures:** Method doesn't work, signal too low, etc.\n2. **Biological surprises:** System behaves unexpectedly\n3. **Competition:** Someone scoops you\n4. **Resource issues:** Funding, equipment, access\n5. **Timeline pressures:** Takes longer than expected\n\nFor each, rate:\n- Likelihood (Low/Medium/High)\n- Impact if it happens (Low/Medium/High)\n- When it might surface (early/mid/late)\n\n### Phase 2: Upgrade Opportunities\n\nFor each high-likelihood or high-impact failure mode:\n\n**Question 1: How could you fix this AND make the project better?**\nNot just: \"Get it working\"\nInstead: \"Use this as opportunity to improve the approach\"\n\n**Example: Your Cell Type Can't Be Isolated**\n- Fix: Develop new isolation method\n- Upgrade: Make method work for whole class of cell types\n- Result: Better project (technology paper) + original biology\n\n**Question 2: What skill would you develop by solving this?**\n- Computational: Learn new analysis method\n- Technical: Master challenging technique\n- Conceptual: Reason through biological complexity\n\n### Phase 3: The Ensemble View\n\n**Critical Insight:** You're not picking ONE project path—you're picking an ENSEMBLE of possible projects that share core elements.\n\n**Your Project Ensemble:**\n```\nCore Theme: [What stays constant]\n\nPath 1: [Original plan]\nPath 2: [If assumption A fails]\nPath 3: [If technical barrier B encountered]\nPath 4: [If scooped on C]\n\nAll paths lead to impactful results, just different ones\n```\n\nThis reframing is liberating: when adversity strikes, you're not failing—you're discovering which path in the ensemble you're actually on.\n\n### Phase 4: Historical Examples\n\n**Example 1: PROTAC Discovery**\n- **Original Plan:** Create molecules to degrade specific kinase\n- **Crisis:** Didn't work for intended target\n- **Upgrade:** Test across kinome systematically\n- **Result:** Better project (mapped degradable kinome, discovered that target engagement ≠ degradation)\n- **Impact:** More influential than if original plan succeeded\n\n**Example 2: Steroid Receptor Study**\n- **Original Plan:** Identify THE receptor for a steroid\n- **Crisis:** Binds multiple receptors at different affinities\n- **Upgrade:** Reframe question: How does finite receptor pool sense infinite lipids?\n- **Result:** Combinatorial sensing model (like piano chords)\n- **Impact:** More interesting than \"receptor X binds steroid Y\"\n\n## Output: Adversity Playbook\n\n**Page 1: Anticipated Crises**\n| Crisis | Likelihood | Impact | Timeline | Growth Opportunity |\n|--------|-----------|--------|----------|-------------------|\n| [Crisis 1] | H/M/L | H/M/L | Early/Mid/Late | [Skill developed] |\n\n**Page 2: Upgrade Strategies**\nFor each high-priority crisis:\n- **The Crisis:** [Description]\n- **Fix Strategy:** [How to solve it]\n- **Upgrade Strategy:** [How to make project better while fixing]\n- **Alternative Path:** [New direction if fix doesn't work]\n- **Ensemble Position:** [How this fits in project family]\n\n**Page 3: Resilience Rituals**\n- **Weekly check-in:** Review what went wrong, what was learned\n- **Monthly ensemble review:** Update the family of possible projects\n- **Crisis protocol:** When major setback hits, take 2 days to think before acting\n- **Growth tracking:** Document skills developed through adversity\n","isInternal":false,"tokens":1098,"sizeBytes":4734},{"name":"07-problem-inversion.md","path":"bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 7: Problem Inversion Strategies (\"Turn It On Its Head\")\n\n## Overview\nThis skill provides three concrete strategies for navigating around obstacles by reframing problems. When stuck, instead of pushing harder on the current approach, try inverting the problem.\n\n## Core Principle\n**\"Turn a problem on its head\"**\n\nThree powerful strategies:\n1. **Unfix parameters** (covered in Skill 4, applied here in crisis)\n2. **Don't achieve goal A? Achieve comparable goal B**\n3. **\"I have the answer; what is the question?\"**\n\n## Strategy 1: Unfix Parameters (In Crisis Mode)\n\n**When to Use:** Run-of-the-mill issues in project execution\n\n**Approach:** Let a \"sacred\" fixed parameter float\n\n**Example from Lecture:**\n- **Stuck:** Spatial transcriptomics of APC-T cell interactions in tumor microenvironment\n- **All fixed:** Technique, cell types, context\n- **Inversion:**\n  - Unfix technique → What else could measure these interactions?\n  - Unfix cell types → What other interactions matter in tumors?\n  - Unfix context → Where else do APC-T interactions matter?\n\n**Your Application:**\nFor each fixed parameter in your project:\n- What if this floated?\n- What alternatives exist?\n- Which would be easier/faster/more informative?\n\n## Strategy 2: Comparable Goal Substitution\n\n**When to Use:** Existential threats to project (can't achieve original goal)\n\n**Approach:** Achieve a different but equally valuable goal\n\n**Mindset Shift:**\n- **Wrong:** \"I failed to do X\"\n- **Right:** \"The world needs Y instead, which I CAN do\"\n\n**Example from Lectures: PROTAC Story**\n- **Goal A (Failed):** Degrade specific therapeutic target\n- **Goal B (Achieved):** Map which kinases ARE degradable\n- **Value:** B is more impactful (general principle + method validation)\n- **Learning:** Target engagement ≠ degradation (important discovery)\n\n**Framework:**\n1. **Original goal:** [What you wanted]\n2. **Why it failed:** [Specific reason]\n3. **What CAN you do with current data/tools:** [Capabilities]\n4. **Comparable goals:**\n   - Option 1: [Different but related goal]\n   - Option 2: [Another alternative]\n   - Option 3: [Yet another]\n5. **Which is most valuable:** [Analysis]\n6. **How to frame it:** [Communication strategy]\n\n## Strategy 3: Answer Seeking Question\n\n**When to Use:** End-of-project challenges (interpretation, framing, application)\n\n**Approach:** You got an answer, but not to your original question. What question DOES your data answer?\n\n**Mindset Shift:**\n- **Wrong:** \"This doesn't answer my question\"\n- **Right:** \"What interesting question does this answer?\"\n\n**Example from Lectures: Steroid Receptor**\n- **Original Question:** What is THE receptor for this steroid?\n- **Answer Obtained:** Binds multiple receptors at different affinities\n- **Problem:** Can't answer original question (no single receptor)\n- **Inversion:** \"What question does this answer?\"\n- **New Question:** How does finite receptor pool sense infinite lipids?\n- **Answer:** Combinatorial sensing (pattern = unique \"chord\")\n- **Impact:** More interesting than intended finding\n\n**Framework:**\n1. **Original question:** [What you asked]\n2. **Data obtained:** [What you actually found]\n3. **Why it doesn't answer:** [The mismatch]\n4. **What DOES the data show clearly:** [Solid findings]\n5. **What questions could these answer:**\n   - Question 1: [Option]\n   - Question 2: [Option]\n   - Question 3: [Option]\n6. **Which is most interesting:** [Assessment]\n7. **How to reframe paper/project:** [New framing]\n\n## Workflow\n\n### Phase 1: Identify Your Obstacle\n- **Type:** Technical / Biological / Competitive / Interpretive\n- **Severity:** Run-of-mill / Existential / End-stage\n- **Description:** [What's blocking you]\n\n### Phase 2: Select Strategy\n\n| Obstacle Type | Recommended Strategy |\n|--------------|---------------------|\n| Technical barrier, mid-project | Strategy 1 (Unfix parameters) |\n| Can't achieve original goal | Strategy 2 (Comparable goal) |\n| Have data, unclear what it means | Strategy 3 (Answer seeking question) |\n\n### Phase 3: Apply Strategy\n\nWork through the relevant framework above with your specific situation.\n\n### Phase 4: Evaluate Alternatives\n\nFor each alternative generated:\n- **Scientific value:** How interesting is this?\n- **Feasibility:** How hard to execute?\n- **Timeline:** How long will it take?\n- **Impact:** How does this compare to original plan?\n- **Your advantage:** Do you still have edge here?\n\n## Output: Problem Inversion Analysis\n\n**Page 1: Current Situation**\n- **Obstacle:** [Clear description]\n- **Why you're stuck:** [Root cause]\n- **Original plan:** [What you intended]\n- **Current capability:** [What you CAN do]\n\n**Page 2: Strategy Applications**\n\n**Strategy 1 (Unfix Parameters):**\n| Fixed Parameter | If This Floated | Alternative Approaches | Assessment |\n|----------------|-----------------|----------------------|------------|\n| [Param 1] | [Consequences] | [Options] | [Value] |\n\n**Strategy 2 (Comparable Goals):**\n| Original Goal | Why It Failed | Comparable Goal | Value Assessment |\n|--------------|---------------|----------------|------------------|\n| [Goal A] | [Reason] | [Goal B] | [Compare impact] |\n\n**Strategy 3 (Answer → Question):**\n- **Data obtained:** [What you have]\n- **Question 1 it could answer:** [Option 1]\n- **Question 2 it could answer:** [Option 2]\n- **Question 3 it could answer:** [Option 3]\n- **Most interesting:** [Selection + reasoning]\n\n**Page 3: Recommended Path**\n- **Selected strategy:** [1, 2, or 3]\n- **New direction:** [Specific plan]\n- **Why this is better:** [Not just \"it works\" but \"it's more interesting\"]\n- **Communication approach:** [How to frame this pivot]\n- **Timeline:** [New schedule]\n","isInternal":false,"tokens":1359,"sizeBytes":5671},{"name":"08-integration-synthesis.md","path":"bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 8: Integration and Synthesis\n\n## Overview\nThis final individual skill synthesizes all previous skills into a coherent project plan and communication strategy. You'll create a complete package that demonstrates thoughtful problem selection and rigorous planning.\n\n## Core Principle\n**\"Tell a compelling story with your choices\"**\n\nHumans love stories. Your project should have:\n- **Setting:** Background and problem framing\n- **Problem statement:** Clear, general enough to be interesting, specific enough to be distinctive\n- **New idea/approach:** Your angle (perturbation/measurement/theory: logic vs. technology)\n- **Iteration:** Loop of \"we wondered X → did Y → found Z → interpreted as W\"\n- **Conclusion:** What we learned and/or what's now possible\n- **Passion:** Authentic enthusiasm\n\n## Workflow\n\n### Phase 1: Gather Your Skill Outputs\n\nCollect your completed documents:\n- ☐ Skill 1: Problem Ideation Document\n- ☐ Skill 2: Risk Assessment Matrix\n- ☐ Skill 3: Impact Assessment Document\n- ☐ Skill 4: Parameter Strategy Document\n- ☐ Skill 5: Decision Tree Map\n- ☐ Skill 6: Adversity Playbook\n- ☐ Skill 7: Problem Inversion Analysis (if applicable)\n\n### Phase 2: Create Narrative Arc\n\n**Story Structure for Your Project:**\n\n**1. Setting (Background)**\n- What's known in the field?\n- What's the gap or opportunity?\n- Why does this matter?\n\n**2. Problem Statement**\n- General enough: connects to broad principle\n- Specific enough: distinctive and tractable\n- Your framing from Skill 1\n\n**3. Your Approach**\n- Perturbation/Measurement/Theory\n- Logic vs. Technology\n- What's novel about your angle (from Skill 1)\n- How your optimization function shapes approach (from Skill 3)\n\n**4. Strategy**\n- Fixed vs. floating parameters (from Skill 4)\n- Decision points mapped out (from Skill 5)\n- Risk mitigation built in (from Skill 2)\n- Adversity contingencies (from Skill 6)\n\n**5. Why You**\n- Your competitive advantage\n- Lab expertise\n- Your passion and alignment\n- Timeline and resources\n\n### Phase 3: Communication Formats\n\n**Format 1: 3-Slide, 5-Minute Presentation**\n\n**Slide 1: The Opportunity**\n- Setting + Problem statement\n- One key figure or schematic\n- Why this matters (optimization function)\n\n**Slide 2: Your Approach**\n- New idea/angle\n- Key experiments or analyses\n- What makes this feasible\n- Decision tree highlights\n\n**Slide 3: Impact and Timeline**\n- What you'll learn or enable\n- Success metrics\n- Timeline with milestones\n- Your advantage\n\n**Slide Design Tips:**\n- Minimal text (bullets are fine here)\n- Strong visuals\n- Tell story, don't catalog facts\n- Passion shows through\n\n**Format 2: 1-Page Written Summary**\n\n**Paragraph 1:** Setting and problem (2-3 sentences)\n**Paragraph 2:** Your approach and novelty (3-4 sentences)\n**Paragraph 3:** Why it will work (risk mitigation, your advantage) (2-3 sentences)\n**Paragraph 4:** Impact and timeline (2-3 sentences)\n\n**Total:** ~250-300 words that could be abstract or summary\n\n**Format 3: 1-Minute Elevator Pitch**\n\n**Structure:**\n- \"I'm working on [problem] because [why it matters]\"\n- \"Current approaches are limited by [gap]\"\n- \"My angle is [approach] which is novel because [what's new]\"\n- \"This will [impact] and I have [advantage]\"\n\n**Practice until:** Natural, passionate, memorable\n\n### Phase 4: Integration Document\n\n**Complete Project Plan Integrating All Skills:**\n\n**Section 1: Problem Selection Rationale**\n- How you generated this idea (Skill 1 intuition pumps)\n- Why this problem matters (Skill 3 optimization function)\n- Your competitive advantage\n\n**Section 2: Risk Management**\n- Assumption analysis table (Skill 2)\n- Go/no-go experiments\n- Timeline with checkpoints\n- Mitigation strategies\n\n**Section 3: Execution Strategy**\n- Fixed vs. floating parameters (Skill 4)\n- Decision tree navigation plan (Skill 5)\n- Adversity response protocols (Skill 6)\n- Project ensemble (alternative paths)\n\n**Section 4: Communication Plan**\n- Presentations (3-slide deck)\n- Written summary (1-page)\n- Elevator pitch (1-minute)\n- Key messages for different audiences\n\n**Section 5: Career Alignment**\n- How this fits your trajectory\n- Skills you'll develop\n- Network you'll build\n- Next steps after this project\n\n## Output: Complete Project Package\n\n**Document 1: Integrated Project Plan (4-6 pages)**\n- All sections above\n- References to individual skill outputs\n- Timeline and milestones\n- Resource requirements\n\n**Document 2: Communication Materials**\n- 3-slide presentation\n- 1-page summary\n- Elevator pitch script\n- Talking points for different audiences\n\n**Document 3: Living Documents**\n- Decision tree (to update regularly)\n- Risk assessment (to review quarterly)\n- Adversity playbook (to consult in crisis)\n- Parameter strategy (to revisit if stuck)\n\n## Key Principles\n\n1. **Integration, Not Duplication:** Each skill output serves a purpose in the whole\n2. **Story Over Catalog:** Communicate choices, not just facts\n3. **Passion Matters:** Authentic enthusiasm is persuasive\n4. **Living Plan:** This evolves; revisit quarterly\n5. **Alignment:** Project, values, and career fit together\n6. **Preparation:** You've thought through contingencies\n7. **Communication:** You can pitch this clearly to anyone\n\n## Ready to Synthesize\n\nWith all skills complete, you now have a comprehensive, thoughtful, rigorous approach to problem selection and project planning. This is the highest-leverage work you can do in science.\n","isInternal":false,"tokens":1270,"sizeBytes":5416},{"name":"09-meta-framework.md","path":"bio-research/skills/scientific-problem-selection/references/09-meta-framework.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/references/09-meta-framework.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# SKILL 9: Meta-Framework - Complete Problem Selection Workflow\n\n## Overview\nThis meta-skill orchestrates the complete problem selection process, guiding users through Skills 1-8 in a systematic, iterative way. This skill should be used when comprehensive support is needed from ideation through execution planning, with integrated literature searches and coherent documentation.\n\n## When to Use This Skill\n\n**Use Skill 9 (Complete Workflow) when:**\n- Starting a new project from scratch\n- Major project pivot or reframe needed\n- Grant/fellowship application requiring systematic planning\n- Thesis committee meeting preparation\n- Startup company planning\n- Want comprehensive, documented problem selection process\n\n**Use Individual Skills when:**\n- You're at a specific stage (e.g., just need risk assessment)\n- Quick consultation on one aspect\n- Updating one component of existing plan\n- Teaching/learning one concept\n\n## The Complete Workflow\n\n### Overview of the Journey\n\n```\nSTART: Vague idea or area of interest\n    ↓\n[SKILL 1] → Problem Ideation Document\n    ↓\n[SKILL 2] → Risk Assessment Matrix\n    ↓\n[SKILL 3] → Impact Assessment Document\n    ↓\n[SKILL 4] → Parameter Strategy Document\n    ↓\n[SKILL 5] → Decision Tree Map\n    ↓\n[SKILL 6] → Adversity Playbook\n    ↓\n[SKILL 7] → Problem Inversion Analysis (if needed)\n    ↓\n[SKILL 8] → Integrated Project Plan + Communication Materials\n    ↓\nEND: Comprehensive, rigorous project ready to execute\n```\n\n**Estimated Time:**\n- **Intensive:** 1 week of focused work (full-time)\n- **Distributed:** 4-6 weeks with other commitments\n- **With iterations:** Add 50% more time\n\n**You'll invest time once to save years of potential missteps.**\n\n## Phase-by-Phase Workflow\n\n### Phase 1: Preparation (Before Starting)\n\n**Gather Your Context:**\n1. **Your background:**\n   - Research area/field\n   - Current position (grad student, postdoc, PI, etc.)\n   - Lab expertise and resources\n   - Timeline constraints\n\n2. **Your starting point:**\n   - Vague area of interest?\n   - Specific problem in mind?\n   - Must build on existing work?\n   - Starting completely fresh?\n\n3. **Your goals:**\n   - Publication target (journal tier, timeline)?\n   - Degree requirement (thesis chapter)?\n   - Funding application?\n   - Startup foundation?\n   - Career development?\n\n**Set Expectations:**\n- This process will challenge your assumptions\n- You may discover your initial idea needs major revision\n- That's the point—better to know now than after 2 years\n- Intellectual honesty is required; this only works if you're rigorous\n\n### Phase 2: Ideation (Skill 1) - ~1 week\n\n**What We'll Do:**\n1. Understand your context and constraints\n2. Work through relevant intuition pumps\n3. Avoid common ideation traps\n4. Generate 2-3 project ideas\n5. Preliminary literature search to calibrate scope\n6. Select most promising idea\n7. Create Problem Ideation Document (2 pages)\n\n**Literature Integration Point 1:**\n- Search PubMed for precedents and adjacent work\n- Assess generality of problem\n- Identify methodological advances\n- Determine competition level\n\n**Deliverable:**\n- Problem Ideation Document with core idea and initial analysis\n- List of 10-15 key papers\n- Preliminary assessment of novelty and feasibility\n\n**Checkpoint:** Do you have a clear, specific idea that excites you? If not, iterate on intuition pumps.\n\n### Phase 3: Risk Analysis (Skill 2) - ~3-5 days\n\n**What We'll Do:**\n1. Extract ALL assumptions from your idea\n2. Categorize (biological vs. technical)\n3. Score each assumption (risk 1-5, time to test)\n4. Identify high-risk late-reading assumptions\n5. Design go/no-go experiments\n6. Develop mitigation strategies\n7. Create Risk Assessment Matrix (2 pages)\n\n**Literature Integration Point 2:**\n- Search for technical precedents (has method worked before?)\n- Find biological evidence (what's known about your system?)\n- Identify benchmarks (success rates, effect sizes)\n- Assess timeline realism\n\n**Deliverable:**\n- Complete assumption analysis table\n- Top 3 high-risk assumptions with mitigation plans\n- Go/no-go experiment designs\n- Revised timeline with decision points\n\n**Checkpoint:** Is your risk profile acceptable? If risk-5 assumptions are >2 years out, return to Skill 1 to reframe.\n\n### Phase 4: Impact Assessment (Skill 3) - ~2-3 days\n\n**What We'll Do:**\n1. Categorize your project type\n2. Select appropriate optimization function\n3. Score yourself on both axes\n4. Compare to benchmarks\n5. Articulate value system alignment\n6. Develop communication strategy\n7. Create Impact Assessment Document (2 pages)\n\n**Literature Integration Point 3:**\n- Identify high-impact exemplars in your field\n- Analyze their framing and evaluation\n- Benchmark your potential impact\n- Understand field expectations\n\n**Deliverable:**\n- Clear optimization function selection\n- Self-assessment on both axes with justification\n- Comparative analysis vs. alternatives\n- Communication strategy for different audiences\n\n**Checkpoint:** Do you score MEDIUM-HIGH on at least one axis? If not, return to Skill 1 to find higher-impact angle.\n\n### Phase 5: Parameter Strategy (Skill 4) - ~2-3 days\n\n**What We'll Do:**\n1. Inventory all project parameters\n2. Identify which are fixed vs. floating\n3. Assess if you're over/under-constrained\n4. Select strategic fixed parameter\n5. Plan flexibility for contingencies\n6. Create Parameter Strategy Document (2 pages)\n\n**Literature Integration Point 4:**\n- How did successful projects handle parameters?\n- What parameter choices led to breakthroughs?\n- What over-constraints caused failures?\n\n**Deliverable:**\n- Complete parameter inventory\n- Strategic rationale for fixed/floating decisions\n- Flexibility matrix for contingencies\n- Project ensemble (family of related projects)\n\n**Checkpoint:** Have you fixed 1-2 meaningful parameters while maintaining flexibility? If too rigid, adjust.\n\n### Phase 6: Decision Tree Planning (Skill 5) - ~2 days\n\n**What We'll Do:**\n1. Map your project's decision tree\n2. Identify major branch points\n3. Set criteria for each decision\n4. Establish Level 1 / Level 2 rhythm\n5. Create protocols for getting unstuck\n6. Create Decision Tree Map (1-2 pages)\n\n**No major literature search here** (unless you identify specific decision points needing technical information)\n\n**Deliverable:**\n- Visual decision tree\n- Decision criteria at each branch\n- Schedule for Level 2 evaluations\n- Protocol for course correction\n\n**Checkpoint:** Have you planned for regular strategic evaluation, not just execution?\n\n### Phase 7: Adversity Preparation (Skill 6) - ~2 days\n\n**What We'll Do:**\n1. Anticipate likely failure modes\n2. For each, identify upgrade opportunity\n3. Map your project ensemble\n4. Create crisis response protocols\n5. Create Adversity Playbook (2-3 pages)\n\n**Literature Integration Point 5:**\n- Historical examples of productive pivots\n- How did others capitalize on adversity?\n- What second-generation projects emerged from failures?\n\n**Deliverable:**\n- Anticipated crisis catalog\n- Upgrade strategies for each\n- Project ensemble map\n- Resilience rituals and protocols\n\n**Checkpoint:** Are you prepared to see adversity as opportunity? Have you planned how to upgrade, not just fix?\n\n### Phase 8: Problem Inversion Toolkit (Skill 7) - ~1 day\n\n**What We'll Do:**\n1. Review three inversion strategies\n2. Pre-plan applications for your likely obstacles\n3. Create Problem Inversion Analysis (1-2 pages)\n\n**This is preparatory** - you may not need it now, but when crisis hits, you'll have framework ready.\n\n**Deliverable:**\n- Strategy 1 application planned\n- Strategy 2 options identified\n- Strategy 3 alternative questions brainstormed\n- Quick-reference guide for crisis\n\n**Checkpoint:** Do you have concrete strategies for inverting problems when stuck?\n\n### Phase 9: Integration and Synthesis (Skill 8) - ~3-5 days\n\n**What We'll Do:**\n1. Review all outputs from Skills 1-7\n2. Create cohesive narrative\n3. Develop communication materials:\n   - 3-slide presentation\n   - 1-page summary\n   - 1-minute elevator pitch\n4. Write integrated project plan (4-6 pages)\n5. Create living documents for ongoing use\n\n**Literature Integration Point 6:**\n- Final references for integrated plan\n- Key papers for each section\n- Communication examples from field leaders\n\n**Deliverable:**\n- Complete Integrated Project Plan (4-6 pages)\n- 3-slide presentation deck\n- 1-page written summary\n- Elevator pitch script\n- Living documents (decision tree, risk matrix, etc.)\n\n**Checkpoint:** Can you communicate your project compellingly in 1 minute, 5 minutes, and 1 page? Do all pieces fit together coherently?\n\n## Iteration and Refinement\n\n### When to Iterate\n\n**Red Flags That Require Going Back:**\n\n**From Skill 2 (Risk):**\n- Risk-5 assumptions >2 years out → Return to Skill 1 (reframe problem)\n- >3 risk-4-5 assumptions → Return to Skill 1 (simplify or change approach)\n\n**From Skill 3 (Impact):**\n- Score LOW on both axes → Return to Skill 1 (find higher-impact angle)\n- Optimization function mismatch → Return to Skill 1 (reframe problem)\n\n**From Skill 4 (Parameters):**\n- >2 fixed parameters → Return to Skill 1 (over-constrained)\n- Zero fixed parameters → Return to Skill 1 (under-constrained)\n\n**From Skills 5-6:**\n- No clear decision points → Return to Skill 4 (need more flexibility)\n- Every failure mode is existential → Return to Skill 2 (too risky)\n\n### Iteration Protocol\n\n**Major Revision Needed:**\n1. **Pause and acknowledge:** The process is working—it caught a problem\n2. **Return to indicated skill:** Usually Skill 1 or 2\n3. **Bring forward what you learned:** Don't start from scratch\n4. **Revised idea → Run through workflow again:** Faster the second time\n5. **Multiple iterations OK:** Better than years on wrong project\n\n**Minor Refinement:**\n1. **Update specific document:** E.g., adjust parameter strategy\n2. **Check downstream effects:** Does this change anything else?\n3. **Update integration document:** Keep everything coherent\n\n## Literature Integration Strategy\n\n### Overall PubMed Approach\n\n**Throughout the workflow, use PubMed strategically:**\n\n1. **Skill 1 (Ideation):** Assess generality, find precedents, gauge competition\n2. **Skill 2 (Risk):** Technical feasibility, biological evidence, benchmarks\n3. **Skill 3 (Impact):** Field exemplars, evaluation frameworks, benchmarks\n4. **Skill 4 (Parameters):** Successful parameter choices, cautionary tales\n5. **Skill 6 (Adversity):** Productive pivots, upgrade examples\n6. **Skill 8 (Integration):** Communication models, comprehensive references\n\n**Search Strategy:**\n- Start broad (field overview)\n- Get specific (your exact approach)\n- Look adjacent (related systems/methods)\n- Find benchmarks (what's state-of-art?)\n- Identify competition (who else is doing this?)\n\n**Papers to Track:**\n- ~10-15 key papers from Skill 1\n- ~5-10 technical papers from Skill 2\n- ~5-10 impact exemplars from Skill 3\n- ~5 parameter lessons from Skill 4\n- ~3-5 pivot examples from Skill 6\n- **Total: ~30-50 papers** (your foundation)\n\n## Final Deliverable Package\n\n### What You'll Have at the End\n\n**Core Documents (Organized Folder):**\n1. `01_Problem_Ideation.pdf` (2 pages, Skill 1)\n2. `02_Risk_Assessment.pdf` (2 pages, Skill 2)\n3. `03_Impact_Assessment.pdf` (2 pages, Skill 3)\n4. `04_Parameter_Strategy.pdf` (2 pages, Skill 4)\n5. `05_Decision_Tree.pdf` (1-2 pages, Skill 5)\n6. `06_Adversity_Playbook.pdf` (2-3 pages, Skill 6)\n7. `07_Problem_Inversion.pdf` (1-2 pages, Skill 7)\n8. `08_Integrated_Plan.pdf` (4-6 pages, Skill 8)\n\n**Communication Materials:**\n- `Presentation_3slides.pptx`\n- `Summary_1page.pdf`\n- `Elevator_Pitch.txt`\n\n**Living Documents (for ongoing use):**\n- `Decision_Tree.pdf` (update monthly)\n- `Risk_Matrix.xlsx` (update quarterly)\n- `Adversity_Playbook.pdf` (consult in crisis)\n- `Parameter_Strategy.pdf` (revisit if stuck)\n\n**Reference Library:**\n- `Key_Papers.pdf` (annotated bibliography, 30-50 papers)\n- Organized by: Ideation / Technical / Impact / Pivots\n\n**Total: ~20-25 pages of documentation + supporting materials**\n\n## Using Your Outputs\n\n### For Different Purposes\n\n**Grant/Fellowship Applications:**\n- Start with Integrated Plan (Skill 8)\n- Include specific aims from Ideation (Skill 1)\n- Show risk mitigation from Risk Assessment (Skill 2)\n- Demonstrate impact from Impact Assessment (Skill 3)\n- Timeline from Decision Tree (Skill 5)\n\n**Thesis Committee Meetings:**\n- Present 3-slide deck (Skill 8)\n- Walk through decision tree (Skill 5)\n- Discuss risk mitigation (Skill 2)\n- Show parameter flexibility (Skill 4)\n- Demonstrate thoughtful planning\n\n**Lab Meetings:**\n- Use elevator pitch (Skill 8)\n- Show decision tree updates (Skill 5)\n- Discuss latest adversity and response (Skill 6)\n- Get input on parameter strategy (Skill 4)\n\n**Collaborator Conversations:**\n- Share 1-page summary (Skill 8)\n- Highlight where their expertise fits (Skill 4)\n- Show risk mitigation plan (Skill 2)\n- Discuss impact potential (Skill 3)\n\n**Personal Reflection:**\n- Quarterly: Review Decision Tree (Skill 5), update milestones\n- After setbacks: Consult Adversity Playbook (Skill 6)\n- When stuck: Use Problem Inversion (Skill 7)\n- Annual: Full workflow review, consider new projects\n\n## Maintenance and Updates\n\n### Living Documents Protocol\n\n**Monthly:**\n- Update Decision Tree (Skill 5)\n- Log adversities and responses (Skill 6)\n- Note new papers or competition\n- Adjust timeline if needed\n\n**Quarterly:**\n- Review Risk Matrix (Skill 2) - mark assumptions tested\n- Reassess Impact (Skill 3) - has evaluation changed?\n- Check Parameter Strategy (Skill 4) - still optimal?\n- Update Integrated Plan (Skill 8) - keep current\n\n**Annually:**\n- Complete workflow review\n- Consider new projects with fresh Skill 1 ideation\n- Archive old project docs\n- Extract lessons learned\n\n## Success Metrics\n\n### How Do You Know This Worked?\n\n**Immediate Indicators:**\n- Clearer project vision than before\n- Honest assessment of risks\n- Contingency plans for failures\n- Compelling communication materials\n- Alignment between project and values\n- Confidence in problem choice\n\n**6-Month Indicators:**\n- Major decisions made faster (have framework)\n- Adversity handled productively (used playbook)\n- No existential crises (risks were mitigated)\n- Regular Level 2 evaluation happening\n- Project staying on-track or pivoting smartly\n\n**2-Year Indicators:**\n- Published results or strong progress\n- Avoided dead-end projects\n- Multiple high-quality options at decision points\n- Skills developed as planned\n- Career trajectory aligned with goals\n- Time well-spent (the ultimate measure)\n\n## Key Principles of the Meta-Framework\n\n1. **Systematic > Ad Hoc:** Process ensures nothing forgotten\n2. **Iterative > Linear:** Expect to loop back, that's good\n3. **Documented > Mental:** Writing forces clarity\n4. **Integrated > Fragmented:** All skills connect\n5. **Living > Static:** Update as you learn\n6. **Thoughtful > Fast:** Time invested now saves years later\n7. **Honest > Optimistic:** Rigor protects against wishful thinking\n8. **Prepared > Surprised:** Anticipate adversity\n9. **Flexible > Rigid:** Parameters float when needed\n10. **Passionate > Obligatory:** Alignment matters\n\n## Getting Started\n\n### First Steps\n\n**This Week:**\n1. Block time in calendar (1-2 hours to start)\n2. Gather your context (background, goals, constraints)\n3. Begin Skill 1 (Intuition Pumps)\n4. Let me know your starting point\n\n**This Month:**\n1. Work through Skills 1-4 (foundation)\n2. Share with mentor for alignment check\n3. Iterate if major changes needed\n4. Complete Skills 5-8 (execution planning)\n\n**This Quarter:**\n1. Begin project execution with living documents\n2. Monthly decision tree updates\n3. Quarterly risk assessment reviews\n4. Log adversities and responses\n\n**This Year:**\n1. Execute planned project\n2. Use frameworks when stuck\n3. Update living documents\n4. Evaluate process and refine\n\n## Ready to Begin?\n\nThe complete meta-framework is substantial, but each step builds on the last. You'll move through:\n- ~2 weeks of intensive planning\n- Comprehensive documentation\n- Clear decision criteria\n- Communication materials\n- Living documents for ongoing guidance\n\n**Most importantly:** You'll KNOW you're working on a well-chosen problem with rigorous planning. That confidence is priceless.\n\nLet's start with Skill 1. Are you ready to begin?\n\n---\n\n*Remember: The highest-leverage work in science is choosing the right problem. This meta-framework ensures you spend your finite time wisely. The investment in systematic planning pays dividends for years.*\n\n","isInternal":false,"tokens":3954,"sizeBytes":16539},{"name":"SKILL.md","path":"bio-research/skills/scientific-problem-selection/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scientific-problem-selection/SKILL.md","title":"scientific-problem-selection","category":"anthropic-skill","format":"markdown","content":"---\nname: scientific-problem-selection\ndescription: This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include \"I have an idea for a project\", \"I'm stuck on my research\", \"help me evaluate this project\", \"what should I work on\", or \"I need strategic advice about my research\".\n---\n\n# Scientific Problem Selection Skills\n\nA conversational framework for systematic scientific problem selection based on Fischbach & Walsh's \"Problem choice and decision trees in science and engineering\" (Cell, 2024).\n\n## Getting Started\n\nPresent users with three entry points:\n\n**1) Pitch an idea for a new project** — to work it up together\n\n**2) Share a problem in a current project** — to troubleshoot together\n\n**3) Ask a strategic question** — to navigate the decision tree together\n\nThis conversational entry meets scientists where they are and establishes a collaborative tone.\n\n---\n\n## Option 1: Pitch an Idea\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your idea (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their idea, return a quick summary (no more than one paragraph) demonstrating understanding. Note the general area of research and rephrase the idea in a way that highlights its kernel—showing alignment and readiness to dive into details.\n\n### Follow-up Prompt\nThen ask for more detail: \"Now give me a bit more detail. You might include, however briefly or even say where you are unsure:\n1. What exactly you want to do\n2. How you currently plan to do it\n3. If it works, why will it be a big deal\n4. What you think are the major risks\"\n\n### Workflow\nFrom there, guide the user through the early stages of problem selection and evaluation:\n- **Skill 1: Intuition Pumps** - Refine and strengthen the idea\n- **Skill 2: Risk Assessment** - Identify and manage project risks\n- **Skill 3: Optimization Function** - Define success metrics\n- **Skill 4: Parameter Strategy** - Determine what to fix vs. keep flexible\n\nSee `references/01-intuition-pumps.md`, `references/02-risk-assessment.md`, `references/03-optimization-function.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 2: Troubleshoot a Problem\n\n### Initial Prompt\nAsk: **\"Tell me a short version of your problem (1-2 sentences or whatever is easy).\"**\n\n### Response Approach\nAfter the user shares their problem, return a quick summary (no more than one paragraph) demonstrating understanding. Note the context of the project where the problem occurred and rephrase the problem—highlighting its core essence—so the user knows the situation is understood. Also raise additional questions that seem important to discuss.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The overall goal of your project (if we have not talked about it before)\n2. What exactly went wrong\n3. Your current ideas for fixing it\"\n\n### Workflow\nFrom there, guide the user through troubleshooting and decision tree navigation:\n- **Skill 5: Decision Tree Navigation** - Plan decision points and navigate between execution and strategic thinking\n- **Skill 4: Parameter Strategy** - Fix one parameter at a time, let others float\n- **Skill 6: Adversity Response** - Frame problems as opportunities for growth\n- **Skill 7: Problem Inversion** - Strategies for navigating around obstacles\n\nAlways include workarounds that might be useful whether or not the problem can be fixed easily.\n\nSee `references/05-decision-tree.md`, `references/06-adversity-planning.md`, `references/07-problem-inversion.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 3: Ask a Strategic Question\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your question (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their question, return a quick summary (no more than one paragraph) demonstrating understanding. Note the broader context and rephrase the question—highlighting its crux—to confirm alignment with their thinking.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The setting (i.e., is this about a current or future project)\n2. A bit more detail about what you're thinking\"\n\n### Workflow\nFrom there, draw on the specific modules from the problem choice framework most appropriate to the question:\n- **Skills 1-4** for future project planning (ideation, risk, optimization, parameters)\n- **Skills 5-7** for current project navigation (decision trees, adversity, inversion)\n- **Skill 8** for communication and synthesis\n- **Skill 9** for comprehensive workflow orchestration\n\nSee the complete reference materials in the `references/` folder.\n\n---\n\n## Core Framework Concepts\n\n### The Central Insight\n**Problem Choice >> Execution Quality**\n\nEven brilliant execution of a mediocre problem yields incremental impact. Good execution of an important problem yields substantial impact.\n\n### The Time Paradox\nScientists typically spend:\n- **Days** choosing a problem\n- **Years** solving it\n\nThis imbalance limits impact. These skills help invest more time choosing wisely.\n\n### Evaluation Axes\n**For Evaluating Ideas:**\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nSkills help move ideas rightward (more feasible) and upward (more impactful).\n\n### The Risk Paradox\n- Don't avoid risk—befriend it\n- No risk = incremental work\n- But: Multiple miracles = avoid or refine\n- **Balance:** Understood, quantified, manageable risk\n\n### The Parameter Paradox\n- Too many fixed = brittleness\n- Too few fixed = paralysis\n- **Sweet spot:** Fix ONE meaningful constraint\n\n### The Adversity Principle\n- Crises are inevitable (don't be surprised)\n- Crises are opportune (don't waste them)\n- **Strategy:** Fix problem AND upgrade project simultaneously\n\n---\n\n## The 9 Skills Overview\n\n| Skill | Purpose | Output | Time |\n|-------|---------|--------|------|\n| 1. Intuition Pumps | Generate high-quality research ideas | Problem Ideation Document | ~1 week |\n| 2. Risk Assessment | Identify and manage project risks | Risk Assessment Matrix | 3-5 days |\n| 3. Optimization Function | Define success metrics | Impact Assessment Document | 2-3 days |\n| 4. Parameter Strategy | Decide what to fix vs. keep flexible | Parameter Strategy Document | 2-3 days |\n| 5. Decision Tree Navigation | Plan decision points and altitude dance | Decision Tree Map | 2 days |\n| 6. Adversity Response | Prepare for crises as opportunities | Adversity Playbook | 2 days |\n| 7. Problem Inversion | Navigate around obstacles | Problem Inversion Analysis | 1 day |\n| 8. Integration & Synthesis | Synthesize into coherent plan | Project Communication Package | 3-5 days |\n| 9. Meta-Framework | Orchestrate complete workflow | Complete Project Package | 1-6 weeks |\n\n---\n\n## Skill Workflow\n\n```\nSKILL 1: Intuition Pumps\n         | (generates idea)\n         v\nSKILL 2: Risk Assessment\n         | (evaluates feasibility)\n         v\nSKILL 3: Optimization Function\n         | (defines success metrics)\n         v\nSKILL 4: Parameter Strategy\n         | (determines flexibility)\n         v\nSKILL 5: Decision Tree\n         | (plans execution and evaluation)\n         v\nSKILL 6: Adversity Planning\n         | (prepares for failure modes)\n         v\nSKILL 7: Problem Inversion\n         | (provides pivot strategies)\n         v\nSKILL 8: Integration & Communication\n         | (synthesizes into coherent plan)\n         v\nSKILL 9: Meta-Skill\n         (orchestrates complete workflow)\n```\n\n---\n\n## Key Design Principles\n\n1. **Conversational Entry** - Meet users where they are with three clear starting points\n2. **Thoughtful Interaction** - Ask clarifying questions; low confidence prompts additional input\n3. **Literature Integration** - Use PubMed searches at strategic points for validation\n4. **Concrete Outputs** - Every skill produces tangible 1-2 page documents\n5. **Building Specificity** - Progressive detail emerges through targeted questions\n6. **Flexibility** - Skills work independently, sequentially, or iteratively\n7. **Scientific Rigor** - Claims about generality and feasibility should be evidence-based\n\n---\n\n## Who Should Use These Skills\n\n### Graduate Students (Primary Audience)\n- **When:** Choosing thesis projects, qualifying exams, committee meetings\n- **Focus:** Skills 1-3 (ideation, risk, impact) + Skill 9 (complete workflow)\n- **Timeline:** 2-4 weeks for comprehensive planning\n\n### Postdocs\n- **When:** Starting new position, planning independent projects, fellowship applications\n- **Focus:** All skills, emphasizing independence and risk management\n- **Timeline:** 1-2 weeks intensive planning\n\n### Principal Investigators\n- **When:** New lab, new direction, mentoring trainees, grant cycles\n- **Focus:** Skills 1, 3, 4, 6 (ideation, impact, parameters, adversity)\n- **Timeline:** Ongoing, integrate into lab culture\n\n### Startup Founders\n- **When:** Company inception, pivot decisions, investor pitches\n- **Focus:** Skills 1-4 (ideation through parameters) + Skill 8 (communication)\n- **Timeline:** 1-2 weeks for initial planning, revisit quarterly\n\n---\n\n## Reference Materials\n\nDetailed skill documentation is available in the `references/` folder:\n\n| File | Content | Search Patterns |\n|------|---------|-----------------|\n| `01-intuition-pumps.md` | Generate research ideas | `Intuition Pump #`, `Trap #`, `Phase [0-9]` |\n| `02-risk-assessment.md` | Risk identification | `Risk.*1-5`, `go/no-go`, `assumption` |\n| `03-optimization-function.md` | Success metrics | `Generality.*Learning`, `optimization`, `impact` |\n| `04-parameter-strategy.md` | Parameter fixation | `fixed.*float`, `constraint`, `parameter` |\n| `05-decision-tree.md` | Decision tree navigation | `altitude`, `Level [0-9]`, `decision` |\n| `06-adversity-planning.md` | Adversity response | `adversity`, `crisis`, `ensemble` |\n| `07-problem-inversion.md` | Problem inversion strategies | `Strategy [0-9]`, `inversion`, `goal` |\n| `08-integration-synthesis.md` | Integration and synthesis | `narrative`, `communication`, `story` |\n| `09-meta-framework.md` | Complete workflow | `Phase`, `workflow`, `orchestrat` |\n\n---\n\n## Expected Outcomes\n\n### Immediate (After Completing Workflow)\n- Clear project vision\n- Honest risk assessment\n- Contingency plans\n- Communication materials ready\n- Confidence in problem choice\n\n### 6-Month\n- Faster decisions (have framework)\n- Productive adversity handling\n- No existential crises (risks mitigated)\n\n### 2-Year\n- Published results or strong progress\n- Avoided dead-end projects\n- Career aligned with goals\n- **Time well-spent** (ultimate measure)\n\n---\n\n## Foundational Reference\n\n**Fischbach, M.A., & Walsh, C.T. (2024).** \"Problem choice and decision trees in science and engineering.\" *Cell*, 187, 1828-1833.\n\nBased on course BIOE 395 taught at Stanford University.\n","frontmatter":{"name":"scientific-problem-selection","description":"This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include \"I have an idea for a project\", \"I'm stuck on my research\", \"help me evaluate this project\", \"what should I work on\", or \"I need strategic advice about my research\"."},"isInternal":false,"tokens":2566,"sizeBytes":11184},{"name":"atac_peakvi.md","path":"bio-research/skills/scvi-tools/references/atac_peakvi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/atac_peakvi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# scATAC-seq Analysis with PeakVI\n\nThis reference covers single-cell ATAC-seq analysis using PeakVI for dimensionality reduction, batch correction, and differential accessibility.\n\n## Overview\n\nPeakVI is a deep generative model for scATAC-seq data that:\n- Models binary accessibility (peak open/closed)\n- Handles batch effects\n- Provides latent representation for clustering\n- Enables differential accessibility analysis\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\nimport anndata as ad\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load and Prepare ATAC Data\n\n### From 10x Genomics (Cell Ranger ATAC)\n\n```python\n# Peak-cell matrix from fragments\n# Usually in filtered_peak_bc_matrix format\n\nadata = sc.read_10x_h5(\"filtered_peak_bc_matrix.h5\")\n\n# Or from mtx format\nadata = sc.read_10x_mtx(\"filtered_peak_bc_matrix/\")\n\n# Check structure\nprint(f\"Cells: {adata.n_obs}, Peaks: {adata.n_vars}\")\nprint(f\"Sparsity: {1 - adata.X.nnz / (adata.n_obs * adata.n_vars):.2%}\")\n```\n\n### From ArchR/Signac\n\n```python\n# Export from ArchR (in R)\n# saveArchRProject(proj, outputDirectory=\"atac_export\", load=FALSE)\n# Then read the exported files in Python\n\n# From Signac:\n# Export peak matrix and metadata\n```\n\n## Step 2: Quality Control\n\n```python\n# Calculate QC metrics\nsc.pp.calculate_qc_metrics(adata, inplace=True)\n\n# Key metrics for ATAC:\n# - n_genes_by_counts: peaks per cell (should rename)\n# - total_counts: fragments per cell\nadata.obs['n_peaks'] = adata.obs['n_genes_by_counts']\nadata.obs['total_fragments'] = adata.obs['total_counts']\n\n# Filter cells\nadata = adata[adata.obs['n_peaks'] > 500].copy()\nadata = adata[adata.obs['n_peaks'] < 50000].copy()  # Remove potential doublets\n\n# Filter peaks (accessible in at least n cells)\nsc.pp.filter_genes(adata, min_cells=10)\n\nprint(f\"After QC: {adata.shape}\")\n```\n\n### Binarize Data\n\n```python\n# PeakVI works with binary accessibility\n# Binarize if not already binary\nadata.X = (adata.X > 0).astype(np.float32)\n\n# Verify\nprint(f\"Unique values: {np.unique(adata.X.data)}\")\n```\n\n## Step 3: Feature Selection\n\nUnlike RNA-seq, peak selection for ATAC is less established. Options:\n\n### Option A: Most Accessible Peaks\n\n```python\n# Select top peaks by accessibility frequency\npeak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\ntop_peaks = np.argsort(peak_accessibility)[-50000:]  # Top 50k peaks\n\nadata = adata[:, top_peaks].copy()\n```\n\n### Option B: Variable Peaks\n\n```python\n# Select peaks with high variance\n# (Most informative for clustering)\nfrom sklearn.feature_selection import VarianceThreshold\n\nselector = VarianceThreshold(threshold=0.05)\nselector.fit(adata.X)\nadata = adata[:, selector.get_support()].copy()\n```\n\n### Option C: Peaks Near Genes\n\n```python\n# Keep peaks within promoter regions or gene bodies\n# Requires peak annotation\n# gene_peaks = peaks with gene annotation\n# adata = adata[:, adata.var['near_gene']].copy()\n```\n\n## Step 4: Add Batch Information\n\n```python\n# Add batch annotation if multiple samples\nadata.obs['batch'] = adata.obs['sample_id']  # Or appropriate column\n\nprint(adata.obs['batch'].value_counts())\n```\n\n## Step 5: Setup and Train PeakVI\n\n```python\n# Setup AnnData\nscvi.model.PEAKVI.setup_anndata(\n    adata,\n    batch_key=\"batch\"  # Optional, omit for single batch\n)\n\n# Create model\nmodel = scvi.model.PEAKVI(\n    adata,\n    n_latent=20,      # Latent dimensions\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Latent Representation\n\n```python\n# Latent space for downstream analysis\nadata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_PeakVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Differential Accessibility\n\n```python\n# Differential accessibility between clusters\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n\n# Filter significant peaks\nda_sig = da_results[\n    (da_results['is_da_fdr_0.05']) &\n    (abs(da_results['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DA peaks: {len(da_sig)}\")\nprint(da_sig.head())\n```\n\n### DA Between Conditions\n\n```python\n# Compare conditions within cell type\nadata_subset = adata[adata.obs['cell_type'] == 'CD4 T cells'].copy()\n\nda_condition = model.differential_accessibility(\n    groupby='condition',\n    group1='treated',\n    group2='control'\n)\n```\n\n## Step 8: Peak Annotation\n\n```python\n# Annotate peaks with nearest genes\n# Using pybedtools or similar\n\n# Example peak name format: chr1:1000-2000\n# Parse into bed format for annotation\n\nimport pandas as pd\n\ndef parse_peak_names(peak_names):\n    \"\"\"Parse peak names into bed format.\"\"\"\n    records = []\n    for peak in peak_names:\n        chrom, coords = peak.split(':')\n        start, end = coords.split('-')\n        records.append({\n            'chrom': chrom,\n            'start': int(start),\n            'end': int(end),\n            'peak': peak\n        })\n    return pd.DataFrame(records)\n\npeak_bed = parse_peak_names(adata.var_names)\n```\n\n## Step 9: Motif Analysis\n\n```python\n# Export significant peaks for motif analysis\n# Use HOMER, MEME, or chromVAR\n\n# Export peak sequences\nsig_peaks = da_sig.index.tolist()\npeak_bed_sig = peak_bed[peak_bed['peak'].isin(sig_peaks)]\npeak_bed_sig.to_csv(\"significant_peaks.bed\", sep='\\t', index=False, header=False)\n\n# Then run HOMER:\n# findMotifsGenome.pl significant_peaks.bed hg38 motif_output/ -size 200\n```\n\n## Step 10: Gene Activity Scores\n\n```python\n# Compute gene activity from peak accessibility\n# (Requires peak-gene annotations)\n\ndef compute_gene_activity(adata, peak_gene_map):\n    \"\"\"\n    Compute gene activity scores from peak accessibility.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        ATAC data with peaks\n    peak_gene_map : dict\n        Mapping of peaks to genes\n        \n    Returns\n    -------\n    AnnData with gene activity scores\n    \"\"\"\n    from scipy.sparse import csr_matrix\n    \n    genes = list(set(peak_gene_map.values()))\n    gene_matrix = np.zeros((adata.n_obs, len(genes)))\n    \n    for i, gene in enumerate(genes):\n        gene_peaks = [p for p, g in peak_gene_map.items() if g == gene]\n        if gene_peaks:\n            peak_idx = [list(adata.var_names).index(p) for p in gene_peaks if p in adata.var_names]\n            if peak_idx:\n                gene_matrix[:, i] = np.array(adata.X[:, peak_idx].sum(axis=1)).flatten()\n    \n    adata_gene = ad.AnnData(\n        X=csr_matrix(gene_matrix),\n        obs=adata.obs.copy(),\n        var=pd.DataFrame(index=genes)\n    )\n    \n    return adata_gene\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_scatac(\n    adata,\n    batch_key=None,\n    n_top_peaks=50000,\n    n_latent=20,\n    resolution=0.5\n):\n    \"\"\"\n    Complete scATAC-seq analysis with PeakVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Raw peak-cell matrix\n    batch_key : str, optional\n        Batch annotation column\n    n_top_peaks : int\n        Number of top peaks to use\n    n_latent : int\n        Latent dimensions\n    resolution : float\n        Leiden clustering resolution\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import numpy as np\n    \n    adata = adata.copy()\n    \n    # QC\n    sc.pp.calculate_qc_metrics(adata, inplace=True)\n    adata = adata[adata.obs['n_genes_by_counts'] > 500].copy()\n    sc.pp.filter_genes(adata, min_cells=10)\n    \n    # Binarize\n    adata.X = (adata.X > 0).astype(np.float32)\n    \n    # Select top peaks\n    if adata.n_vars > n_top_peaks:\n        peak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\n        top_peaks = np.argsort(peak_accessibility)[-n_top_peaks:]\n        adata = adata[:, top_peaks].copy()\n    \n    # Setup PeakVI\n    scvi.model.PEAKVI.setup_anndata(adata, batch_key=batch_key)\n    \n    # Train\n    model = scvi.model.PEAKVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Latent representation\n    adata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_PeakVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata, resolution=resolution)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_scatac(\n    adata,\n    batch_key=\"sample\",\n    n_top_peaks=50000\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'sample'])\n\n# Differential accessibility\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n```\n\n## Integration with scRNA-seq\n\nFor multiome data or separate RNA/ATAC from same cells:\n\n```python\n# See MultiVI for joint RNA+ATAC analysis\n# Or use WNN (weighted nearest neighbors) approach\n\n# Transfer labels from RNA to ATAC using shared latent space\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Training slow | Too many peaks | Subset to top 50k peaks |\n| Poor clustering | Too few informative peaks | Use variable peaks |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n| Memory error | Large peak matrix | Use sparse format, reduce peaks |\n\n## Key References\n\n- Ashuach et al. (2022) \"PeakVI: A deep generative model for single-cell chromatin accessibility analysis\"\n","isInternal":false,"tokens":2504,"sizeBytes":9498},{"name":"batch_correction_sysvi.md","path":"bio-research/skills/scvi-tools/references/batch_correction_sysvi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/batch_correction_sysvi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Advanced Batch Correction with sysVI\n\nThis reference covers system-level batch correction using sysVI, designed for integrating data across major technological or study differences.\n\n## Overview\n\nsysVI (System Variational Inference) extends scVI for scenarios where:\n- Batch effects are very strong (different technologies)\n- Standard scVI over-corrects biological signal\n- You need to separate \"system\" effects from biological variation\n\n## When to Use sysVI vs scVI\n\n| Scenario | Recommended Model |\n|----------|-------------------|\n| Same technology, different samples | scVI |\n| 10x v2 vs 10x v3 | scVI (usually) |\n| 10x vs Smart-seq2 | sysVI |\n| Different sequencing depths | scVI with covariates |\n| Cross-study integration | sysVI |\n| Atlas-scale integration | sysVI |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Understanding sysVI Architecture\n\nsysVI separates variation into:\n1. **Biological variation**: Cell type, state, trajectory\n2. **System variation**: Technology, study, lab effects\n\n```\n                    ┌─────────────────┐\nInput counts ──────►│    Encoder      │\n                    │                 │\nSystem info ───────►│  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\n                    │   Latent z      │\n                    │  (biological)   │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\nSystem info ───────►│    Decoder      │\n                    │  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    Reconstructed counts\n```\n\n## Basic sysVI Workflow\n\n### Step 1: Prepare Data\n\n```python\n# Load datasets from different systems\nadata1 = sc.read_h5ad(\"10x_data.h5ad\")\nadata2 = sc.read_h5ad(\"smartseq_data.h5ad\")\n\n# Add system labels\nadata1.obs[\"system\"] = \"10x\"\nadata2.obs[\"system\"] = \"Smart-seq2\"\n\n# Add batch labels (within system)\n# e.g., different samples within each technology\n\n# Concatenate\nadata = sc.concat([adata1, adata2])\n\n# Store raw counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection\n\n```python\n# Select HVGs considering both batch and system\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # More genes for cross-system\n    flavor=\"seurat_v3\",\n    batch_key=\"system\",  # Consider system for HVG\n    layer=\"counts\"\n)\n\n# Optionally: ensure overlap between systems\n# Check HVGs are expressed in both systems\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train sysVI\n\n```python\n# Setup AnnData\n# Note: sysVI may be accessed differently depending on version\n# Check scvi-tools documentation for current API\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",           # Within-system batches\n    categorical_covariate_keys=[\"system\"]  # System-level covariate\n)\n\n# For true sysVI (if available in your version)\n# scvi.model.SysVI.setup_anndata(...)\n\n# Create model with system awareness\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,\n    n_layers=2,\n    gene_likelihood=\"nb\"\n)\n\n# Train\nmodel.train(max_epochs=300)\n```\n\n### Step 4: Extract Representations\n\n```python\n# Get latent representation\nadata.obsm[\"X_integrated\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_integrated\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata)\n\n# Check integration\nsc.pl.umap(adata, color=[\"system\", \"leiden\", \"cell_type\"])\n```\n\n## Alternative: Harmony + scVI\n\nFor cross-system integration, combining methods can work well:\n\n```python\nimport scanpy.external as sce\n\n# First run PCA\nsc.pp.pca(adata)\n\n# Apply Harmony for initial alignment\nsce.pp.harmony_integrate(adata, key=\"system\")\n\n# Then train scVI on Harmony-corrected embedding\n# Or use Harmony representation directly\n```\n\n## Alternative: Using Covariates in scVI\n\nFor moderate system effects:\n\n```python\n# Include system as categorical covariate\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    categorical_covariate_keys=[\"system\", \"technology_version\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Alternative: Separate Models + Integration\n\nFor very different systems:\n\n```python\n# Train separate models\nscvi.model.SCVI.setup_anndata(adata1, layer=\"counts\", batch_key=\"sample\")\nmodel1 = scvi.model.SCVI(adata1)\nmodel1.train()\n\nscvi.model.SCVI.setup_anndata(adata2, layer=\"counts\", batch_key=\"sample\")\nmodel2 = scvi.model.SCVI(adata2)\nmodel2.train()\n\n# Get latent spaces\nadata1.obsm[\"X_scVI\"] = model1.get_latent_representation()\nadata2.obsm[\"X_scVI\"] = model2.get_latent_representation()\n\n# Align with CCA or Harmony\n# ... additional alignment step\n```\n\n## Evaluating Cross-System Integration\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Color by system\nsc.pl.umap(adata, color=\"system\", ax=axes[0], show=False, title=\"By System\")\n\n# Color by cell type\nsc.pl.umap(adata, color=\"cell_type\", ax=axes[1], show=False, title=\"By Cell Type\")\n\n# Color by expression of marker\nsc.pl.umap(adata, color=\"CD3D\", ax=axes[2], show=False, title=\"CD3D Expression\")\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics\n\n```python\n# Using scib-metrics\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"system\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_integrated\"]\n)\n\nbm.benchmark()\n\n# Key metrics:\n# - Batch mixing (ASW_batch, Graph connectivity)\n# - Bio conservation (NMI, ARI, ASW_label)\n```\n\n### LISI Scores\n\n```python\n# Local Inverse Simpson's Index\nfrom scib_metrics import lisi\n\n# Batch LISI (higher = better mixing)\nbatch_lisi = lisi.ilisi_graph(\n    adata,\n    batch_key=\"system\",\n    use_rep=\"X_integrated\"\n)\n\n# Cell type LISI (lower = better preservation)\nct_lisi = lisi.clisi_graph(\n    adata,\n    label_key=\"cell_type\", \n    use_rep=\"X_integrated\"\n)\n\nprint(f\"Batch LISI: {batch_lisi.mean():.3f}\")\nprint(f\"Cell type LISI: {ct_lisi.mean():.3f}\")\n```\n\n## Handling Specific Challenges\n\n### Different Gene Sets\n\n```python\n# Find common genes\ncommon_genes = adata1.var_names.intersection(adata2.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# If too few, use gene mapping\n# Or impute missing genes\n```\n\n### Different Sequencing Depths\n\n```python\n# Add depth as continuous covariate\nadata.obs[\"log_counts\"] = np.log1p(adata.obs[\"total_counts\"])\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    continuous_covariate_keys=[\"log_counts\"]\n)\n```\n\n### Unbalanced Cell Types\n\n```python\n# Check cell type distribution per system\nimport pandas as pd\n\nct_dist = pd.crosstab(adata.obs[\"system\"], adata.obs[\"cell_type\"], normalize=\"index\")\nprint(ct_dist)\n\n# If very unbalanced, consider:\n# 1. Subsample to balance\n# 2. Use scANVI with labels to preserve rare types\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_cross_system(\n    adatas: dict,\n    system_key: str = \"system\",\n    batch_key: str = \"batch\",\n    cell_type_key: str = \"cell_type\",\n    n_top_genes: int = 4000,\n    n_latent: int = 30\n):\n    \"\"\"\n    Integrate datasets from different technological systems.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {system_name: AnnData}\n    system_key : str\n        Key for system annotation\n    batch_key : str\n        Key for within-system batch\n    cell_type_key : str\n        Key for cell type labels (optional)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Integrated AnnData with model\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add system labels and concatenate\n    for system_name, adata in adatas.items():\n        adata.obs[system_key] = system_name\n    \n    adata = sc.concat(list(adatas.values()))\n    \n    # Find common genes\n    for name, ad in adatas.items():\n        if name == list(adatas.keys())[0]:\n            common_genes = set(ad.var_names)\n        else:\n            common_genes = common_genes.intersection(ad.var_names)\n    \n    adata = adata[:, list(common_genes)].copy()\n    print(f\"Common genes: {len(common_genes)}\")\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=system_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup with system as covariate\n    scvi.model.SCVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        batch_key=batch_key if batch_key in adata.obs else None,\n        categorical_covariate_keys=[system_key]\n    )\n    \n    # Train\n    model = scvi.model.SCVI(adata, n_latent=n_latent, n_layers=2)\n    model.train(max_epochs=300, early_stopping=True)\n    \n    # Get representation\n    adata.obsm[\"X_integrated\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_integrated\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"10x_v3\": sc.read_h5ad(\"10x_v3_data.h5ad\"),\n    \"Smart-seq2\": sc.read_h5ad(\"smartseq_data.h5ad\"),\n    \"Drop-seq\": sc.read_h5ad(\"dropseq_data.h5ad\")\n}\n\nadata_integrated, model = integrate_cross_system(adatas)\n\n# Visualize\nsc.pl.umap(adata_integrated, color=[\"system\", \"leiden\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Systems don't mix | Effects too strong | Use more genes, increase n_latent |\n| Over-correction | Model too aggressive | Reduce n_layers, use scANVI |\n| Few common genes | Different platforms | Use gene name mapping |\n| One system dominates | Unbalanced sizes | Subsample larger dataset |\n\n## Key References\n\n- Lopez et al. (2018) \"Deep generative modeling for single-cell transcriptomics\"\n- Luecken et al. (2022) \"Benchmarking atlas-level data integration in single-cell genomics\"\n","isInternal":false,"tokens":2644,"sizeBytes":10456},{"name":"citeseq_totalvi.md","path":"bio-research/skills/scvi-tools/references/citeseq_totalvi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/citeseq_totalvi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# CITE-seq Analysis with totalVI\n\nThis reference covers multi-modal analysis of CITE-seq data (RNA + surface proteins) using totalVI.\n\n## Overview\n\nCITE-seq combines:\n- scRNA-seq (transcriptome)\n- Protein surface markers (antibody-derived tags, ADT)\n\ntotalVI jointly models both modalities to:\n- Integrate across batches\n- Denoise protein signal\n- Learn joint latent representation\n- Enable cross-modal imputation\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\nimport pandas as pd\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load CITE-seq Data\n\n### From 10x Genomics (Cell Ranger)\n\n```python\n# 10x outputs separate gene expression and feature barcoding\nadata_rna = sc.read_10x_h5(\"filtered_feature_bc_matrix.h5\", gex_only=False)\n\n# Separate RNA and protein\nadata_protein = adata_rna[:, adata_rna.var['feature_types'] == 'Antibody Capture'].copy()\nadata_rna = adata_rna[:, adata_rna.var['feature_types'] == 'Gene Expression'].copy()\n\nprint(f\"RNA: {adata_rna.shape}\")\nprint(f\"Protein: {adata_protein.shape}\")\n```\n\n### From MuData\n\n```python\n# If data is in MuData format\nmdata = md.read_h5mu(\"cite_seq.h5mu\")\n\nadata_rna = mdata['rna'].copy()\nadata_protein = mdata['protein'].copy()\n```\n\n### Combine into Single AnnData\n\n```python\n# totalVI expects protein data in obsm\nadata = adata_rna.copy()\n\n# Add protein expression to obsm\nadata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n\n# Store protein names\nadata.uns[\"protein_names\"] = list(adata_protein.var_names)\n```\n\n## Step 2: Quality Control\n\n### RNA QC\n\n```python\n# Standard RNA QC\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n\n# Filter cells\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n```\n\n### Protein QC\n\n```python\n# Protein QC\nprotein_counts = adata.obsm[\"protein_expression\"]\nprint(f\"Protein counts per cell: min={protein_counts.sum(1).min():.0f}, max={protein_counts.sum(1).max():.0f}\")\n\n# Check for isotype controls\n# Isotype controls should have low counts\nprotein_names = adata.uns[\"protein_names\"]\nfor i, name in enumerate(protein_names):\n    if 'isotype' in name.lower() or 'control' in name.lower():\n        print(f\"{name}: mean={protein_counts[:, i].mean():.1f}\")\n```\n\n## Step 3: Data Preparation\n\n### Store Raw Counts\n\n```python\n# Store RNA counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Protein must be raw ADT counts (NOT CLR-normalized)\n# WARNING: If importing from Seurat, ensure you use raw counts, not CLR-normalized data\n# Seurat's NormalizeData(normalization.method = \"CLR\") transforms counts - use the original assay\n```\n\n### HVG Selection for RNA\n\n```python\n# Select HVGs for RNA\n# Note: totalVI uses all proteins regardless of HVG\n\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # Use more for CITE-seq\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata.obs else None,\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n## Step 4: Setup and Train totalVI\n\n```python\n# Setup AnnData for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    protein_expression_obsm_key=\"protein_expression\",\n    batch_key=\"batch\"  # Optional\n)\n\n# Create model\nmodel = scvi.model.TOTALVI(\n    adata,\n    n_latent=20,\n    latent_distribution=\"normal\"  # or \"ln\" for log-normal\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 5: Get Latent Representation\n\n```python\n# Joint latent space\nadata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_totalVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Step 6: Denoised Protein Expression\n\n```python\n# Get denoised protein values\n# This removes background noise from protein measurements\n\n_, protein_denoised = model.get_normalized_expression(\n    return_mean=True,\n    transform_batch=\"batch1\"  # Optional: normalize to specific batch\n)\n\n# Add to adata\nadata.obsm[\"protein_denoised\"] = protein_denoised\n\n# Visualize denoised proteins\nprotein_names = adata.uns[\"protein_names\"]\nfor i, protein in enumerate(protein_names[:5]):\n    adata.obs[f\"denoised_{protein}\"] = protein_denoised[:, i]\n\nsc.pl.umap(adata, color=[f\"denoised_{p}\" for p in protein_names[:5]])\n```\n\n## Step 7: Normalized RNA Expression\n\n```python\n# Get normalized RNA expression\nrna_normalized, _ = model.get_normalized_expression(\n    return_mean=True\n)\n\n# Store\nadata.layers[\"totalVI_normalized\"] = rna_normalized\n```\n\n## Step 8: Differential Expression\n\n### RNA Differential Expression\n\n```python\n# DE between clusters\nde_rna = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Filter significant genes\nde_sig = de_rna[\n    (de_rna['is_de_fdr_0.05']) &\n    (abs(de_rna['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DE genes: {len(de_sig)}\")\n```\n\n### Protein Differential Expression\n\n```python\n# Protein DE\nde_protein = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\",\n    mode=\"protein\"\n)\n\nprint(de_protein.head(20))\n```\n\n## Step 9: Visualization\n\n### Protein Expression on UMAP\n\n```python\n# Denoised protein on UMAP\nimport matplotlib.pyplot as plt\n\nproteins_to_plot = [\"CD3\", \"CD4\", \"CD8\", \"CD19\", \"CD14\"]\n\nfig, axes = plt.subplots(1, len(proteins_to_plot), figsize=(4*len(proteins_to_plot), 4))\nfor ax, protein in zip(axes, proteins_to_plot):\n    idx = adata.uns[\"protein_names\"].index(protein)\n    sc.pl.umap(\n        adata,\n        color=adata.obsm[\"protein_denoised\"][:, idx],\n        ax=ax,\n        title=protein,\n        show=False\n    )\nplt.tight_layout()\n```\n\n### Joint Heatmap\n\n```python\n# Heatmap of top genes and proteins per cluster\nsc.pl.dotplot(\n    adata,\n    var_names=de_sig.index[:20].tolist(),\n    groupby=\"leiden\",\n    layer=\"totalVI_normalized\"\n)\n```\n\n## Step 10: Cell Type Annotation\n\n```python\n# Use both RNA and protein markers for annotation\n\n# RNA markers\nrna_markers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'CD4 T': ['CD4'],\n    'CD8 T': ['CD8A', 'CD8B'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\n# Check denoised protein expression\nfor i, protein in enumerate(adata.uns[\"protein_names\"]):\n    if any(m in protein for m in ['CD3', 'CD4', 'CD8', 'CD19', 'CD14']):\n        print(f\"{protein}: cluster means\")\n        for cluster in adata.obs['leiden'].unique():\n            mask = adata.obs['leiden'] == cluster\n            mean_expr = adata.obsm[\"protein_denoised\"][mask, i].mean()\n            print(f\"  Cluster {cluster}: {mean_expr:.2f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=None,\n    n_top_genes=4000,\n    n_latent=20\n):\n    \"\"\"\n    Complete CITE-seq analysis with totalVI.\n    \n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA expression (raw counts)\n    adata_protein : AnnData\n        Protein expression (raw counts)\n    batch_key : str, optional\n        Batch column in obs\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Ensure same cells\n    common_cells = adata_rna.obs_names.intersection(adata_protein.obs_names)\n    adata = adata_rna[common_cells].copy()\n    adata_protein = adata_protein[common_cells].copy()\n    \n    # Add protein to obsm\n    adata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n    adata.uns[\"protein_names\"] = list(adata_protein.var_names)\n    \n    # RNA QC\n    # Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\n    sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n    adata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n    sc.pp.filter_genes(adata, min_cells=3)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup totalVI\n    scvi.model.TOTALVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        protein_expression_obsm_key=\"protein_expression\",\n        batch_key=batch_key\n    )\n    \n    # Train\n    model = scvi.model.TOTALVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Get representations\n    adata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n    rna_norm, protein_denoised = model.get_normalized_expression(return_mean=True)\n    adata.layers[\"totalVI_normalized\"] = rna_norm\n    adata.obsm[\"protein_denoised\"] = protein_denoised\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_totalVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=\"batch\"\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Protein signal noisy | Background not removed | Use get_normalized_expression with denoising |\n| Batch effects persist | Need batch_key | Ensure batch_key is specified |\n| Memory error | Too many genes | Reduce n_top_genes |\n| Poor protein clustering | Few proteins | Normal - totalVI uses RNA for structure |\n\n## Key References\n\n- Gayoso et al. (2021) \"Joint probabilistic modeling of single-cell multi-omic data with totalVI\"\n","isInternal":false,"tokens":2863,"sizeBytes":10341},{"name":"data_preparation.md","path":"bio-research/skills/scvi-tools/references/data_preparation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/data_preparation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Data Preparation for scvi-tools\n\nThis reference covers how to properly prepare AnnData objects for use with scvi-tools models.\n\n## Overview\n\nProper data preparation is critical for scvi-tools. Key requirements:\n1. **Raw counts** (not normalized)\n2. **Highly variable gene selection**\n3. **Proper setup_anndata() call**\n\n## Step 1: Load and Inspect Data\n\n```python\nimport scanpy as sc\nimport scvi\nimport numpy as np\n\n# Load data\nadata = sc.read_h5ad(\"data.h5ad\")\n\n# Check what's in adata.X\nprint(f\"Shape: {adata.shape}\")\nprint(f\"X dtype: {adata.X.dtype}\")\nprint(f\"X contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\nprint(f\"X min: {adata.X.min()}, max: {adata.X.max()}\")\n```\n\n### Verify Raw Counts\n\n```python\n# scvi-tools needs INTEGER counts\n# If X appears normalized, check for raw counts\n\nif hasattr(adata, 'raw') and adata.raw is not None:\n    print(\"Found adata.raw\")\n    # Use raw counts\n    adata = adata.raw.to_adata()\n    \n# Or check layers\nif 'counts' in adata.layers:\n    print(\"Found counts layer\")\n    # Will specify layer in setup_anndata\n```\n\n## Step 2: Basic Filtering\n\n```python\n# Filter cells (standard QC)\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_cells(adata, max_genes=5000)\n\n# Calculate mito percent if not present\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\nadata.var['mt'] = (\n    adata.var_names.str.startswith('MT-') |\n    adata.var_names.str.startswith('mt-') |\n    adata.var_names.str.startswith('Mt-')\n)\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n\nprint(f\"After filtering: {adata.shape}\")\n```\n\n## Step 3: Store Raw Counts\n\n**Critical**: Always preserve raw counts before any normalization.\n\n```python\n# Store raw counts in a layer\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Now you can normalize for other purposes (HVG selection)\n# But scvi will use the counts layer\n```\n\n## Step 4: Highly Variable Gene Selection\n\nscvi-tools works best with 1,500-5,000 HVGs.\n\n### For Single-Batch Data\n\n```python\n# Normalize for HVG selection only\nadata_hvg = adata.copy()\nsc.pp.normalize_total(adata_hvg, target_sum=1e4)\nsc.pp.log1p(adata_hvg)\n\n# Select HVGs\nsc.pp.highly_variable_genes(\n    adata_hvg,\n    n_top_genes=2000,\n    flavor=\"seurat\"  # or \"cell_ranger\"\n)\n\n# Transfer HVG annotation\nadata.var['highly_variable'] = adata_hvg.var['highly_variable']\n```\n\n### For Multi-Batch Data (Recommended)\n\n```python\n# Use seurat_v3 flavor with batch_key\n# This selects genes variable across batches\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",  # Your batch column\n    layer=\"counts\"      # Use raw counts\n)\n```\n\n### Subset to HVGs\n\n```python\n# Subset to highly variable genes\nadata = adata[:, adata.var['highly_variable']].copy()\nprint(f\"After HVG selection: {adata.shape}\")\n```\n\n## Step 5: Setup AnnData\n\nThe `setup_anndata()` function registers data for the model.\n\n### Basic Setup\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\"  # Specify layer with raw counts\n)\n```\n\n### With Batch Information\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"  # Column in adata.obs\n)\n```\n\n### With Cell Type Labels (for scANVI)\n\n```python\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"  # Column with cell type labels\n)\n```\n\n### With Continuous Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    continuous_covariate_keys=[\"percent_mito\", \"n_genes\"]\n)\n```\n\n### With Categorical Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n```\n\n## Multi-Modal Data Setup\n\n### CITE-seq (for totalVI)\n\n```python\n# Protein data in adata.obsm\n# RNA in adata.X, protein in separate matrix\n\n# Add protein data\nadata.obsm[\"protein_expression\"] = protein_counts  # numpy array\n\n# Setup for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    protein_expression_obsm_key=\"protein_expression\"\n)\n```\n\n### Multiome RNA+ATAC (for MultiVI)\n\n```python\n# RNA and ATAC in separate AnnData objects or MuData\n\nimport mudata as md\n\n# If using MuData\nmdata = md.read(\"multiome.h5mu\")\n\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    protein_layer=None,\n    batch_key=\"batch\",\n    modalities={\"rna\": \"rna\", \"accessibility\": \"atac\"}\n)\n```\n\n## Complete Preparation Pipeline\n\nFor a complete preparation function, use `prepare_adata()` from `scripts/model_utils.py`:\n\n```python\nfrom model_utils import prepare_adata\n\n# Prepare data with QC, HVG selection, and layer setup\nadata = prepare_adata(\n    adata,\n    batch_key=\"batch\",\n    n_top_genes=2000,\n    min_genes=200,\n    max_mito_pct=20\n)\n\n# Then setup for your model\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n```\n\nThis function handles:\n- Mitochondrial QC filtering\n- Cell and gene filtering\n- Storing counts in layer\n- HVG selection (batch-aware if batch_key provided)\n- Subsetting to HVGs\n\n## Checking Setup\n\n```python\n# View registered data\nprint(adata.uns['_scvi_manager_uuid'])\nprint(adata.uns['_scvi_adata_minify_type'])\n\n# For scVI\nscvi.model.SCVI.view_anndata_setup(adata)\n```\n\n## Common Issues and Solutions\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| \"X should contain integers\" | Normalized data in X | Use layer=\"counts\" |\n| \"batch_key not found\" | Wrong column name | Check adata.obs.columns |\n| Sparse matrix errors | Incompatible format | Convert: adata.X = adata.X.toarray() |\n| Memory error | Too many genes | Subset to HVGs first |\n| NaN in data | Missing values | Filter or impute |\n\n## Data Format Reference\n\n### Required\n\n- `adata.X` or `adata.layers[\"counts\"]`: Raw integer counts (sparse OK)\n- `adata.obs`: Cell metadata DataFrame\n- `adata.var`: Gene metadata DataFrame\n\n### Recommended\n\n- `adata.obs[\"batch\"]`: Batch/sample identifiers\n- `adata.var[\"highly_variable\"]`: HVG boolean mask\n\n### For scANVI\n\n- `adata.obs[\"labels\"]`: Cell type annotations\n- Can include \"Unknown\" for unlabeled cells\n","isInternal":false,"tokens":1725,"sizeBytes":6335},{"name":"environment_setup.md","path":"bio-research/skills/scvi-tools/references/environment_setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/environment_setup.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Environment Setup for scvi-tools\n\nThis reference covers installation and environment configuration for scvi-tools.\n\n## Installation Options\n\n### Option 1: Conda Environment (Recommended)\n\n```bash\n# Create environment with GPU support\nconda create -n scvi-env python=3.10\nconda activate scvi-env\n\n# Install scvi-tools\npip install scvi-tools\n\n# For GPU acceleration (recommended for large datasets)\npip install torch --index-url https://download.pytorch.org/whl/cu118\n\n# Common dependencies\npip install scanpy leidenalg\n```\n\n### Option 2: Pip Only\n\n```bash\n# Create virtual environment\npython -m venv scvi-env\nsource scvi-env/bin/activate  # Linux/Mac\n# scvi-env\\Scripts\\activate   # Windows\n\n# Install\npip install scvi-tools scanpy\n```\n\n### Option 3: With Spatial Analysis Support\n\n```bash\nconda create -n scvi-spatial python=3.10\nconda activate scvi-spatial\n\npip install scvi-tools scanpy squidpy\n```\n\n### Option 4: With MuData Support (Multiome)\n\n```bash\npip install scvi-tools mudata muon\n```\n\n## Verify Installation\n\n```python\nimport scvi\nimport torch\nimport scanpy as sc\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scanpy version: {sc.__version__}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"GPU available: {torch.cuda.is_available()}\")\n\nif torch.cuda.is_available():\n    print(f\"GPU device: {torch.cuda.get_device_name(0)}\")\n    print(f\"GPU memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB\")\n```\n\n## GPU Configuration\n\n### Check CUDA Version\n\n```bash\nnvidia-smi\nnvcc --version\n```\n\n### PyTorch CUDA Versions\n\n| CUDA Version | PyTorch Install Command |\n|--------------|------------------------|\n| CUDA 11.8 | `pip install torch --index-url https://download.pytorch.org/whl/cu118` |\n| CUDA 12.1 | `pip install torch --index-url https://download.pytorch.org/whl/cu121` |\n| CPU only | `pip install torch --index-url https://download.pytorch.org/whl/cpu` |\n\n### Memory Management\n\n```python\nimport torch\n\n# Clear GPU cache between models\ntorch.cuda.empty_cache()\n\n# Monitor memory usage\nprint(f\"Allocated: {torch.cuda.memory_allocated() / 1e9:.2f} GB\")\nprint(f\"Cached: {torch.cuda.memory_reserved() / 1e9:.2f} GB\")\n```\n\n## Common Issues\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| `CUDA out of memory` | GPU memory exhausted | Reduce batch_size, use smaller model |\n| `No GPU detected` | CUDA not installed | Install CUDA toolkit matching PyTorch |\n| `Version mismatch` | PyTorch/CUDA incompatibility | Reinstall PyTorch with correct CUDA version |\n| `Import error scvi` | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Jupyter Setup\n\n```bash\n# Install Jupyter kernel\npip install ipykernel\npython -m ipykernel install --user --name scvi-env --display-name \"scvi-tools\"\n\n# For interactive plots\npip install matplotlib seaborn\n```\n\n## Recommended Package Versions\n\nFor reproducibility, pin versions:\n\n```bash\npip install \\\n    scvi-tools>=1.0.0 \\\n    scanpy>=1.9.0 \\\n    anndata>=0.9.0 \\\n    torch>=2.0.0\n```\n\n## Version Compatibility Guide\n\n### scvi-tools 1.x vs 0.x API Changes\n\nThe 1.x release introduced breaking changes. Key differences:\n\n| Operation | 0.x API (deprecated) | 1.x API (current) |\n|-----------|---------------------|-------------------|\n| Setup data | `scvi.data.setup_anndata(adata, ...)` | `scvi.model.SCVI.setup_anndata(adata, ...)` |\n| Register data | `scvi.data.register_tensor_from_anndata(...)` | Built into `setup_anndata` |\n| View setup | `scvi.data.view_anndata_setup(adata)` | `scvi.model.SCVI.view_anndata_setup(adata)` |\n\n### Migration from 0.x to 1.x\n\n```python\n# OLD (0.x) - DEPRECATED\nimport scvi\nscvi.data.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n\n# NEW (1.x) - CURRENT\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nmodel = scvi.model.SCVI(adata)\n```\n\n### Model-Specific Setup (1.x)\n\nEach model has its own setup method:\n\n```python\n# scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n\n# scANVI\nscvi.model.SCANVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\", labels_key=\"cell_type\")\n\n# totalVI\nscvi.model.TOTALVI.setup_anndata(adata, layer=\"counts\", protein_expression_obsm_key=\"protein\")\n\n# MultiVI (uses MuData)\nscvi.model.MULTIVI.setup_mudata(mdata, rna_layer=\"counts\", atac_layer=\"counts\")\n\n# PeakVI\nscvi.model.PEAKVI.setup_anndata(adata, batch_key=\"batch\")\n\n# veloVI\nscvi.external.VELOVI.setup_anndata(adata, spliced_layer=\"spliced\", unspliced_layer=\"unspliced\")\n```\n\n### Minimum Version Requirements\n\n| Package | Minimum Version | Notes |\n|---------|-----------------|-------|\n| scvi-tools | 1.0.0 | Required for current API |\n| scanpy | 1.9.0 | HVG selection improvements |\n| anndata | 0.9.0 | Improved MuData support |\n| torch | 2.0.0 | Performance improvements |\n| mudata | 0.2.0 | Required for MultiVI |\n| scvelo | 0.2.5 | Required for veloVI |\n\n### Check Your Versions\n\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n\n# Check if using 1.x API\nif hasattr(scvi.model.SCVI, 'setup_anndata'):\n    print(\"Using scvi-tools 1.x API\")\nelse:\n    print(\"WARNING: Using deprecated 0.x API - please upgrade\")\n```\n\n### Known Compatibility Issues\n\n| Issue | Affected Versions | Solution |\n|-------|-------------------|----------|\n| `setup_anndata` not found | scvi-tools < 1.0 | Upgrade to 1.0+ |\n| MuData errors | mudata < 0.2 | `pip install mudata>=0.2.0` |\n| CUDA version mismatch | Any | Reinstall PyTorch for your CUDA |\n| numpy 2.0 issues | Early 2024 builds | `pip install numpy<2.0` |\n\n### Upgrading scvi-tools\n\n```bash\n# Upgrade to latest\npip install --upgrade scvi-tools\n\n# Upgrade all dependencies\npip install --upgrade scvi-tools scanpy anndata torch\n\n# If you have issues, clean install\npip uninstall scvi-tools\npip cache purge\npip install scvi-tools\n```\n\n## Testing Installation\n\n```python\n# Quick test with sample data\nimport scvi\nimport scanpy as sc\n\n# Load test dataset\nadata = scvi.data.heart_cell_atlas_subsampled()\nprint(f\"Loaded test data: {adata.shape}\")\n\n# Setup and create model (quick test)\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"cell_source\")\nmodel = scvi.model.SCVI(adata, n_latent=10)\nprint(\"Model created successfully\")\n\n# Quick training test (1 epoch)\nmodel.train(max_epochs=1)\nprint(\"Training works!\")\n```\n","isInternal":false,"tokens":1808,"sizeBytes":6473},{"name":"label_transfer.md","path":"bio-research/skills/scvi-tools/references/label_transfer.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/label_transfer.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Label Transfer and Reference Mapping with scANVI\n\nThis reference covers using scANVI for transferring cell type annotations from a reference atlas to query data.\n\n## Overview\n\nReference mapping (also called \"label transfer\") uses a pre-trained model on annotated reference data to predict cell types in new, unannotated query data. This is faster than re-clustering and more consistent across studies.\n\nscANVI excels at this because it:\n- Jointly embeds reference and query in shared space\n- Transfers labels probabilistically\n- Handles batch effects between reference and query\n\n## When to Use Reference Mapping\n\n- Annotating new dataset using existing atlas\n- Consistent annotation across multiple studies\n- Speed: no need to re-cluster and manually annotate\n- Quality: leverage expert-curated reference annotations\n\n## Workflow Options\n\n1. **Train new model**: Train scANVI on reference, then map query\n2. **Use pre-trained model**: Load existing model (e.g., from Model Hub)\n3. **scArches**: Extend existing model with query data (preserves reference)\n\n## Option 1: Train scANVI on Reference\n\n### Step 1: Prepare Reference Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load reference atlas\nadata_ref = sc.read_h5ad(\"reference_atlas.h5ad\")\n\n# Check annotations\nprint(f\"Reference cells: {adata_ref.n_obs}\")\nprint(f\"Cell types: {adata_ref.obs['cell_type'].nunique()}\")\nprint(adata_ref.obs['cell_type'].value_counts())\n\n# Ensure raw counts\nadata_ref.layers[\"counts\"] = adata_ref.raw.X.copy() if adata_ref.raw else adata_ref.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_ref,\n    n_top_genes=3000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata_ref.obs else None,\n    layer=\"counts\"\n)\nadata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n```\n\n### Step 2: Train scANVI on Reference\n\n```python\n# First train scVI (unlabeled)\nscvi.model.SCVI.setup_anndata(\n    adata_ref,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\nscvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\nscvi_ref.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_ref = scvi.model.SCANVI.from_scvi_model(\n    scvi_ref,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"\n)\n\n# Train scANVI\nscanvi_ref.train(max_epochs=50)\n\n# Save for later use\nscanvi_ref.save(\"scanvi_reference_model/\")\n```\n\n### Step 3: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Use same genes as reference\ncommon_genes = adata_ref.var_names.intersection(adata_query.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, adata_ref.var_names].copy()\n\n# Handle missing genes (set to 0)\nmissing_genes = set(adata_ref.var_names) - set(adata_query.var_names)\nif missing_genes:\n    # Add missing genes with zero expression\n    import numpy as np\n    from scipy.sparse import csr_matrix\n    \n    zero_matrix = csr_matrix((adata_query.n_obs, len(missing_genes)))\n    # ... concat and reorder to match reference\n    \n# Store counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n```\n\n### Step 4: Map Query to Reference\n\n```python\n# Prepare query data for mapping\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n\n# Create query model from reference\nscanvi_query = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    scanvi_ref\n)\n\n# Fine-tune on query (optional but recommended)\nscanvi_query.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n\n# Get predictions\nadata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n\n# Get prediction probabilities\nsoft_predictions = scanvi_query.predict(soft=True)\nadata_query.obs[\"prediction_score\"] = soft_predictions.max(axis=1)\n```\n\n### Step 5: Evaluate Predictions\n\n```python\n# Confidence scores\nprint(f\"Mean prediction confidence: {adata_query.obs['prediction_score'].mean():.3f}\")\n\n# Low confidence predictions\nlow_conf = adata_query.obs['prediction_score'] < 0.5\nprint(f\"Low confidence cells: {low_conf.sum()} ({low_conf.mean()*100:.1f}%)\")\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Option 2: Use Pre-Trained Models\n\n### From Model Hub\n\n```python\n# scvi-tools maintains models on HuggingFace\n# Check: https://huggingface.co/scvi-tools\n\n# Example: Load pre-trained model\nfrom huggingface_hub import hf_hub_download\n\nmodel_path = hf_hub_download(\n    repo_id=\"scvi-tools/example-model\",\n    filename=\"model.pt\"\n)\n\n# Load model\nmodel = scvi.model.SCANVI.load(model_path, adata=adata_query)\n```\n\n### From Published Atlas\n\n```python\n# Many atlases provide pre-trained models\n# Example workflow with CellTypist-style model\n\n# Download reference model\n# model = scvi.model.SCANVI.load(\"atlas_model/\", adata=adata_query)\n```\n\n## Option 3: scArches for Incremental Updates\n\nscArches extends a reference model without retraining from scratch:\n\n```python\n# Load existing reference model\nscanvi_ref = scvi.model.SCANVI.load(\"reference_model/\")\n\n# Surgery: prepare for query integration\nscanvi_ref.freeze_layers()\n\n# Map query data\nscvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\nscanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n\n# Train only query-specific parameters\nscanvi_query.train(\n    max_epochs=200,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n## Visualize Reference and Query Together\n\n```python\n# Concatenate for joint visualization\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Get latent representations\nadata_ref.obsm[\"X_scANVI\"] = scanvi_ref.get_latent_representation()\nadata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute combined UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_combined)\n\n# Plot\nsc.pl.umap(\n    adata_combined,\n    color=[\"dataset\", \"cell_type\", \"predicted_cell_type\"],\n    ncols=2\n)\n```\n\n## Quality Control for Predictions\n\n### Confidence Filtering\n\n```python\n# Filter predictions by confidence\nconfidence_threshold = 0.7\n\nhigh_conf = adata_query[adata_query.obs['prediction_score'] >= confidence_threshold].copy()\nlow_conf = adata_query[adata_query.obs['prediction_score'] < confidence_threshold].copy()\n\nprint(f\"High confidence: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\nprint(f\"Low confidence: {len(low_conf)} ({len(low_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n### Marker Validation\n\n```python\n# Validate predictions with known markers\nmarkers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\nfor ct, genes in markers.items():\n    ct_cells = adata_query[adata_query.obs['predicted_cell_type'] == ct]\n    if len(ct_cells) > 0:\n        for gene in genes:\n            if gene in adata_query.var_names:\n                expr = ct_cells[:, gene].X.mean()\n                print(f\"{ct} - {gene}: {expr:.3f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\",\n    batch_key=None,\n    n_top_genes=3000,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Transfer cell type labels from reference to query.\n    \n    Parameters\n    ----------\n    adata_ref : AnnData\n        Annotated reference data\n    adata_query : AnnData\n        Unannotated query data\n    cell_type_key : str\n        Column with cell type annotations in reference\n    batch_key : str, optional\n        Batch column\n    n_top_genes : int\n        Number of HVGs\n    confidence_threshold : float\n        Minimum confidence for predictions\n        \n    Returns\n    -------\n    AnnData with predictions\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Prepare reference\n    adata_ref = adata_ref.copy()\n    adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    \n    sc.pp.highly_variable_genes(\n        adata_ref,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata_ref = adata_ref[:, adata_ref.var[\"highly_variable\"]].copy()\n    \n    # Train reference model\n    scvi.model.SCVI.setup_anndata(adata_ref, layer=\"counts\", batch_key=batch_key)\n    scvi_ref = scvi.model.SCVI(adata_ref, n_latent=30)\n    scvi_ref.train(max_epochs=200)\n    \n    scanvi_ref = scvi.model.SCANVI.from_scvi_model(\n        scvi_ref,\n        labels_key=cell_type_key,\n        unlabeled_category=\"Unknown\"\n    )\n    scanvi_ref.train(max_epochs=50)\n    \n    # Prepare query\n    adata_query = adata_query[:, adata_ref.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n    \n    # Map query\n    scvi.model.SCANVI.prepare_query_anndata(adata_query, scanvi_ref)\n    scanvi_query = scvi.model.SCANVI.load_query_data(adata_query, scanvi_ref)\n    scanvi_query.train(max_epochs=100, plan_kwargs={\"weight_decay\": 0.0})\n    \n    # Get predictions\n    adata_query.obs[\"predicted_cell_type\"] = scanvi_query.predict()\n    soft = scanvi_query.predict(soft=True)\n    adata_query.obs[\"prediction_score\"] = soft.max(axis=1)\n    \n    # Mark low confidence\n    adata_query.obs[\"confident_prediction\"] = adata_query.obs[\"prediction_score\"] >= confidence_threshold\n    \n    # Add latent representation\n    adata_query.obsm[\"X_scANVI\"] = scanvi_query.get_latent_representation()\n    \n    return adata_query, scanvi_ref, scanvi_query\n\n# Usage\nadata_annotated, ref_model, query_model = transfer_labels(\n    adata_ref,\n    adata_query,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsc.pp.neighbors(adata_annotated, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_annotated)\nsc.pl.umap(adata_annotated, color=['predicted_cell_type', 'prediction_score'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Many low-confidence predictions | Query has novel cell types | Manually annotate low-confidence cells |\n| Wrong predictions | Reference doesn't match tissue | Use tissue-appropriate reference |\n| Gene mismatch | Different gene naming | Convert gene IDs |\n| All same prediction | Query too different | Check data quality, try different reference |\n\n## Key References\n\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n","isInternal":false,"tokens":2645,"sizeBytes":10431},{"name":"multiome_multivi.md","path":"bio-research/skills/scvi-tools/references/multiome_multivi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/multiome_multivi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Multiome Analysis with MultiVI\n\nThis reference covers joint RNA and ATAC-seq analysis from multiome experiments using MultiVI.\n\n## Overview\n\nMultiVI is a deep generative model for analyzing multiome data (simultaneous RNA-seq and ATAC-seq from the same cells). It:\n- Learns a joint latent representation across modalities\n- Handles missing modalities (RNA-only or ATAC-only cells)\n- Enables batch correction across experiments\n- Supports imputation of missing modalities\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Data Formats\n\n### Option 1: MuData (Recommended)\n\n```python\n# Load multiome data as MuData\nmdata = md.read(\"multiome.h5mu\")\n\n# Structure:\n# mdata.mod['rna']  - AnnData with RNA counts\n# mdata.mod['atac'] - AnnData with ATAC counts\n\nprint(f\"RNA: {mdata.mod['rna'].shape}\")\nprint(f\"ATAC: {mdata.mod['atac'].shape}\")\n```\n\n### Option 2: Separate AnnData Objects\n\n```python\n# Load separately\nadata_rna = sc.read_h5ad(\"rna.h5ad\")\nadata_atac = sc.read_h5ad(\"atac.h5ad\")\n\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n## Step 1: Prepare RNA Data\n\n```python\n# RNA preprocessing (standard scvi-tools pipeline)\nadata_rna = mdata.mod['rna'].copy()\n\n# Filter\nsc.pp.filter_cells(adata_rna, min_genes=200)\nsc.pp.filter_genes(adata_rna, min_cells=3)\n\n# Store counts\nadata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata_rna,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\",\n    batch_key=\"batch\"  # If multiple batches\n)\n\n# Subset to HVGs\nadata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n```\n\n## Step 2: Prepare ATAC Data\n\n```python\n# ATAC preprocessing\nadata_atac = mdata.mod['atac'].copy()\n\n# Filter peaks\nsc.pp.filter_genes(adata_atac, min_cells=10)\n\n# Binarize accessibility\nadata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n# Select top accessible peaks (if too many)\nif adata_atac.n_vars > 50000:\n    peak_accessibility = np.array(adata_atac.X.sum(axis=0)).flatten()\n    top_peaks = np.argsort(peak_accessibility)[-50000:]\n    adata_atac = adata_atac[:, top_peaks].copy()\n\n# Store in layer\nadata_atac.layers[\"counts\"] = adata_atac.X.copy()\n```\n\n## Step 3: Create Combined MuData\n\n```python\n# Ensure matching cells\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n\n# Create MuData\nmdata = md.MuData({\n    \"rna\": adata_rna,\n    \"atac\": adata_atac\n})\n\nprint(f\"Combined multiome: {mdata.n_obs} cells\")\nprint(f\"RNA features: {mdata.mod['rna'].n_vars}\")\nprint(f\"ATAC features: {mdata.mod['atac'].n_vars}\")\n```\n\n## Step 4: Setup MultiVI\n\n```python\n# Setup MuData for MultiVI\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    atac_layer=\"counts\",\n    batch_key=\"batch\",  # Optional\n    modalities={\n        \"rna_layer\": \"rna\",\n        \"batch_key\": \"rna\",\n        \"atac_layer\": \"atac\"\n    }\n)\n```\n\n## Step 5: Train MultiVI\n\n```python\n# Create model\nmodel = scvi.model.MULTIVI(\n    mdata,\n    n_latent=20,\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=300,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Joint Representation\n\n```python\n# Latent representation\nlatent = model.get_latent_representation()\n\n# Add to MuData\nmdata.obsm[\"X_MultiVI\"] = latent\n\n# Clustering on joint space\nsc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\nsc.tl.umap(mdata)\nsc.tl.leiden(mdata, resolution=1.0)\n\n# Visualize\nsc.pl.umap(mdata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Modality-Specific Analysis\n\n### Impute Missing Modality\n\n```python\n# Impute RNA expression for ATAC-only cells\n# (Useful when integrating with ATAC-only datasets)\nimputed_rna = model.get_normalized_expression(\n    modality=\"rna\"\n)\n\n# Impute accessibility for RNA-only cells\nimputed_atac = model.get_accessibility_estimates()\n```\n\n### Differential Analysis\n\n```python\n# Differential expression (RNA)\nde_results = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Differential accessibility (ATAC)\nda_results = model.differential_accessibility(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n```\n\n## Handling Partial Data\n\nMultiVI can integrate datasets with only one modality:\n\n```python\n# Dataset 1: Full multiome\n# Dataset 2: RNA only\n# Dataset 3: ATAC only\n\n# Mark missing modalities\nmdata.obs['modality'] = 'paired'  # For cells with both\n# For RNA-only cells, ATAC data should be missing/NaN\n# For ATAC-only cells, RNA data should be missing/NaN\n\n# MultiVI handles this automatically during training\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=None,\n    n_top_genes=4000,\n    n_top_peaks=50000,\n    n_latent=20,\n    max_epochs=300\n):\n    \"\"\"\n    Complete multiome analysis with MultiVI.\n\n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA count data\n    adata_atac : AnnData\n        ATAC peak data\n    batch_key : str, optional\n        Batch column name\n    n_top_genes : int\n        Number of HVGs for RNA\n    n_top_peaks : int\n        Number of top peaks for ATAC\n    n_latent : int\n        Latent dimensions\n    max_epochs : int\n        Maximum training epochs\n\n    Returns\n    -------\n    MuData with joint representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import mudata as md\n    import numpy as np\n\n    # Get common cells\n    common_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\n    adata_rna = adata_rna[common_cells].copy()\n    adata_atac = adata_atac[common_cells].copy()\n\n    # RNA preprocessing\n    sc.pp.filter_genes(adata_rna, min_cells=3)\n    adata_rna.layers[\"counts\"] = adata_rna.X.copy()\n\n    if batch_key:\n        sc.pp.highly_variable_genes(\n            adata_rna, n_top_genes=n_top_genes,\n            flavor=\"seurat_v3\", layer=\"counts\", batch_key=batch_key\n        )\n    else:\n        sc.pp.normalize_total(adata_rna, target_sum=1e4)\n        sc.pp.log1p(adata_rna)\n        sc.pp.highly_variable_genes(adata_rna, n_top_genes=n_top_genes)\n        adata_rna.X = adata_rna.layers[\"counts\"].copy()\n\n    adata_rna = adata_rna[:, adata_rna.var['highly_variable']].copy()\n\n    # ATAC preprocessing\n    sc.pp.filter_genes(adata_atac, min_cells=10)\n    adata_atac.X = (adata_atac.X > 0).astype(np.float32)\n\n    if adata_atac.n_vars > n_top_peaks:\n        peak_acc = np.array(adata_atac.X.sum(axis=0)).flatten()\n        top_idx = np.argsort(peak_acc)[-n_top_peaks:]\n        adata_atac = adata_atac[:, top_idx].copy()\n\n    adata_atac.layers[\"counts\"] = adata_atac.X.copy()\n\n    # Create MuData\n    mdata = md.MuData({\"rna\": adata_rna, \"atac\": adata_atac})\n\n    # Setup and train\n    scvi.model.MULTIVI.setup_mudata(\n        mdata,\n        rna_layer=\"counts\",\n        atac_layer=\"counts\",\n        batch_key=batch_key,\n        modalities={\"rna_layer\": \"rna\", \"batch_key\": \"rna\", \"atac_layer\": \"atac\"}\n    )\n\n    model = scvi.model.MULTIVI(mdata, n_latent=n_latent)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n\n    # Add representation\n    mdata.obsm[\"X_MultiVI\"] = model.get_latent_representation()\n\n    # Cluster\n    sc.pp.neighbors(mdata, use_rep=\"X_MultiVI\")\n    sc.tl.umap(mdata)\n    sc.tl.leiden(mdata)\n\n    return mdata, model\n\n\n# Usage\nmdata, model = analyze_multiome(\n    adata_rna,\n    adata_atac,\n    batch_key=\"sample\"\n)\n\nsc.pl.umap(mdata, color=['leiden', 'sample'])\n```\n\n## Peak-to-Gene Linking\n\n```python\n# Link ATAC peaks to genes based on correlation in latent space\n# This identifies regulatory relationships\n\ndef link_peaks_to_genes(model, mdata, distance_threshold=100000):\n    \"\"\"\n    Link peaks to nearby genes based on correlation.\n\n    Parameters\n    ----------\n    model : MULTIVI\n        Trained model\n    mdata : MuData\n        Multiome data\n    distance_threshold : int\n        Maximum distance (bp) to link peak to gene\n\n    Returns\n    -------\n    DataFrame of peak-gene links\n    \"\"\"\n    # Get imputed values\n    rna_imputed = model.get_normalized_expression()\n    atac_imputed = model.get_accessibility_estimates()\n\n    # Correlate peak accessibility with gene expression\n    # for peaks near gene promoters\n    # ... (requires genomic coordinates)\n\n    return peak_gene_links\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Different cell counts | Cells missing in one modality | Use common cells only |\n| Training instability | Imbalanced modalities | Normalize feature counts |\n| Poor clustering | Too few features | Increase n_top_genes/peaks |\n| Memory error | Large ATAC matrix | Reduce peak count, use sparse |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n\n## Key References\n\n- Ashuach et al. (2023) \"MultiVI: deep generative model for the integration of multimodal data\"\n","isInternal":false,"tokens":2576,"sizeBytes":9145},{"name":"rna_velocity_velovi.md","path":"bio-research/skills/scvi-tools/references/rna_velocity_velovi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/rna_velocity_velovi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# RNA Velocity with veloVI\n\nThis reference covers RNA velocity analysis using veloVI, a deep learning approach that improves upon traditional velocity methods.\n\n## Overview\n\nRNA velocity estimates the future state of cells by modeling:\n- **Unspliced RNA**: Newly transcribed, contains introns\n- **Spliced RNA**: Mature mRNA, introns removed\n\nThe ratio of unspliced to spliced indicates whether a gene is being upregulated or downregulated.\n\n## Why veloVI?\n\nTraditional methods (velocyto, scVelo) have limitations:\n- Assume steady-state or dynamical model\n- Sensitive to noise\n- Don't handle batch effects\n\nveloVI addresses these with:\n- Probabilistic modeling\n- Better uncertainty quantification\n- Integration with scVI framework\n\n## Prerequisites\n\n```python\nimport scvi\nimport scvelo as scv\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\nprint(f\"scvelo version: {scv.__version__}\")\n```\n\n## Step 1: Generate Spliced/Unspliced Counts\n\n### From BAM Files (velocyto)\n\n```bash\n# Run velocyto on Cell Ranger output\nvelocyto run10x /path/to/cellranger_output /path/to/genes.gtf\n\n# Output: velocyto.loom file with spliced/unspliced layers\n```\n\n### From kb-python (kallisto|bustools)\n\n```bash\n# Faster alternative using kallisto\nkb count \\\n    --workflow lamanno \\\n    -i index.idx \\\n    -g t2g.txt \\\n    -c1 spliced_t2c.txt \\\n    -c2 unspliced_t2c.txt \\\n    -x 10xv3 \\\n    -o output \\\n    R1.fastq.gz R2.fastq.gz\n```\n\n## Step 2: Load Velocity Data\n\n```python\n# Load loom file from velocyto\nadata = scv.read(\"velocyto_output.loom\")\n\n# Or load from kb-python\nadata = sc.read_h5ad(\"adata.h5ad\")\n# Spliced in adata.layers[\"spliced\"]\n# Unspliced in adata.layers[\"unspliced\"]\n\n# Check layers\nprint(\"Available layers:\", list(adata.layers.keys()))\nprint(f\"Spliced shape: {adata.layers['spliced'].shape}\")\nprint(f\"Unspliced shape: {adata.layers['unspliced'].shape}\")\n```\n\n### Merge with Existing AnnData\n\n```python\n# If you have separate loom and h5ad\nldata = scv.read(\"velocyto.loom\")\nadata = sc.read_h5ad(\"processed.h5ad\")\n\n# Merge velocity data into processed adata\nadata = scv.utils.merge(adata, ldata)\n```\n\n## Step 3: Preprocessing for Velocity\n\n```python\n# Filter and normalize\nscv.pp.filter_and_normalize(\n    adata,\n    min_shared_counts=20,\n    n_top_genes=2000\n)\n\n# Compute moments (for scVelo comparison)\nscv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n```\n\n## Step 4: Run veloVI\n\n### Setup AnnData\n\n```python\n# Setup for veloVI\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\"\n)\n```\n\n### Train Model\n\n```python\n# Create and train veloVI model\nvae = scvi.model.VELOVI(adata)\n\nvae.train(\n    max_epochs=500,\n    early_stopping=True,\n    batch_size=256\n)\n\n# Check training\nvae.history[\"elbo_train\"].plot()\n```\n\n### Get Velocity Estimates\n\n```python\n# Get latent time\nlatent_time = vae.get_latent_time(n_samples=25)\nadata.obs[\"veloVI_latent_time\"] = latent_time\n\n# Get velocity\nvelocities = vae.get_velocity(n_samples=25)\nadata.layers[\"veloVI_velocity\"] = velocities\n\n# Get expression states\nadata.layers[\"veloVI_expression\"] = vae.get_expression_fit(n_samples=25)\n```\n\n## Step 5: Visualize Velocity\n\n### Velocity Streamlines\n\n```python\n# Compute velocity graph\nscv.tl.velocity_graph(adata, vkey=\"veloVI_velocity\")\n\n# Plot streamlines on UMAP\nscv.pl.velocity_embedding_stream(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    color=\"cell_type\"\n)\n```\n\n### Velocity Arrows\n\n```python\n# Individual cell arrows\nscv.pl.velocity_embedding(\n    adata,\n    basis=\"umap\",\n    vkey=\"veloVI_velocity\",\n    arrow_length=3,\n    arrow_size=2,\n    color=\"cell_type\"\n)\n```\n\n### Latent Time\n\n```python\n# Plot latent time (pseudotime from velocity)\nsc.pl.umap(adata, color=\"veloVI_latent_time\", cmap=\"viridis\")\n```\n\n## Step 6: Compare with scVelo\n\n```python\n# Run standard scVelo for comparison\nscv.tl.velocity(adata, mode=\"dynamical\")\nscv.tl.velocity_graph(adata)\n\n# Compare velocity fields\nfig, axes = plt.subplots(1, 2, figsize=(12, 5))\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", ax=axes[0], \n    title=\"scVelo\", show=False\n)\n\nscv.pl.velocity_embedding_stream(\n    adata, basis=\"umap\", vkey=\"veloVI_velocity\",\n    ax=axes[1], title=\"veloVI\", show=False\n)\n\nplt.tight_layout()\n```\n\n## Step 7: Gene-Level Analysis\n\n### Velocity Phase Portraits\n\n```python\n# Plot phase portrait for specific genes\ngenes = [\"SOX2\", \"PAX6\", \"DCX\", \"NEUROD1\"]\n\nscv.pl.velocity(\n    adata,\n    var_names=genes,\n    vkey=\"veloVI_velocity\",\n    colorbar=True\n)\n```\n\n### Gene Dynamics\n\n```python\n# Plot expression over latent time\nfor gene in genes:\n    fig, ax = plt.subplots(figsize=(6, 4))\n    \n    sc.pl.scatter(\n        adata,\n        x=\"veloVI_latent_time\",\n        y=gene,\n        color=\"cell_type\",\n        ax=ax,\n        show=False\n    )\n    ax.set_xlabel(\"Latent Time\")\n    ax.set_ylabel(f\"{gene} Expression\")\n```\n\n### Driver Genes\n\n```python\n# Find genes driving velocity\nscv.tl.rank_velocity_genes(\n    adata,\n    vkey=\"veloVI_velocity\",\n    groupby=\"cell_type\"\n)\n\n# Get top genes per cluster\ndf = scv.get_df(adata, \"rank_velocity_genes/names\")\nprint(df.head(10))\n```\n\n## Step 8: Uncertainty Quantification\n\nveloVI provides uncertainty estimates:\n\n```python\n# Get velocity with uncertainty\nvelocity_mean, velocity_std = vae.get_velocity(\n    n_samples=100,\n    return_mean=True,\n    return_numpy=True\n)\n\n# Store uncertainty\nadata.layers[\"velocity_uncertainty\"] = velocity_std\n\n# Visualize uncertainty\nadata.obs[\"mean_velocity_uncertainty\"] = velocity_std.mean(axis=1)\nsc.pl.umap(adata, color=\"mean_velocity_uncertainty\")\n```\n\n## Complete Pipeline\n\n```python\ndef run_velocity_analysis(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    n_top_genes=2000,\n    max_epochs=500\n):\n    \"\"\"\n    Complete RNA velocity analysis with veloVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Data with spliced/unspliced layers\n    spliced_layer : str\n        Layer name for spliced counts\n    unspliced_layer : str\n        Layer name for unspliced counts\n    n_top_genes : int\n        Number of velocity genes\n    max_epochs : int\n        Training epochs\n        \n    Returns\n    -------\n    AnnData with velocity and model\n    \"\"\"\n    import scvi\n    import scvelo as scv\n    import scanpy as sc\n    \n    adata = adata.copy()\n    \n    # Preprocessing\n    scv.pp.filter_and_normalize(\n        adata,\n        min_shared_counts=20,\n        n_top_genes=n_top_genes\n    )\n    \n    # Compute moments (needed for some visualizations)\n    scv.pp.moments(adata, n_pcs=30, n_neighbors=30)\n    \n    # Setup veloVI\n    scvi.model.VELOVI.setup_anndata(\n        adata,\n        spliced_layer=spliced_layer,\n        unspliced_layer=unspliced_layer\n    )\n    \n    # Train\n    model = scvi.model.VELOVI(adata)\n    model.train(max_epochs=max_epochs, early_stopping=True)\n    \n    # Get results\n    adata.obs[\"latent_time\"] = model.get_latent_time(n_samples=25)\n    adata.layers[\"velocity\"] = model.get_velocity(n_samples=25)\n    \n    # Compute velocity graph for visualization\n    scv.tl.velocity_graph(adata, vkey=\"velocity\")\n    \n    # Compute UMAP if not present\n    if \"X_umap\" not in adata.obsm:\n        sc.pp.neighbors(adata)\n        sc.tl.umap(adata)\n    \n    return adata, model\n\n# Usage\nadata_velocity, model = run_velocity_analysis(adata)\n\n# Visualize\nscv.pl.velocity_embedding_stream(\n    adata_velocity,\n    basis=\"umap\",\n    vkey=\"velocity\",\n    color=\"cell_type\"\n)\n\nsc.pl.umap(adata_velocity, color=\"latent_time\")\n```\n\n## Advanced: Batch-Aware Velocity\n\n```python\n# For multi-batch data, include batch in model\nscvi.model.VELOVI.setup_anndata(\n    adata,\n    spliced_layer=\"spliced\",\n    unspliced_layer=\"unspliced\",\n    batch_key=\"batch\"\n)\n\nmodel = scvi.model.VELOVI(adata)\nmodel.train()\n```\n\n## Interpreting Results\n\n### Good Velocity Signal\n\n- Streamlines follow expected differentiation\n- Latent time correlates with known biology\n- Phase portraits show clear dynamics\n\n### Poor Velocity Signal\n\n- Random/chaotic streamlines\n- No correlation with known markers\n- May indicate:\n  - Insufficient unspliced reads\n  - Cells at steady state\n  - Technical issues\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| No velocity signal | Low unspliced counts | Check sequencing depth, use kb-python |\n| Reversed direction | Wrong root assignment | Manually set root cells |\n| Noisy streamlines | Too many genes | Reduce n_top_genes |\n| Memory error | Large dataset | Reduce batch_size |\n\n## Key References\n\n- Gayoso et al. (2023) \"Deep generative modeling of transcriptional dynamics for RNA velocity analysis in single cells\"\n- La Manno et al. (2018) \"RNA velocity of single cells\"\n- Bergen et al. (2020) \"Generalizing RNA velocity to transient cell states through dynamical modeling\"\n","isInternal":false,"tokens":2394,"sizeBytes":8824},{"name":"scarches_mapping.md","path":"bio-research/skills/scvi-tools/references/scarches_mapping.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/scarches_mapping.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Reference Mapping with scArches\n\nThis reference covers using scArches for mapping query data to pre-trained reference models without retraining from scratch.\n\n## Overview\n\nscArches (single-cell architecture surgery) enables:\n- Mapping new data to existing reference atlases\n- Extending models with new batches/studies\n- Transfer learning without full retraining\n- Preserving reference structure while integrating query\n\n## When to Use scArches\n\n| Scenario | Approach |\n|----------|----------|\n| Map query to existing atlas | scArches query mapping |\n| Extend atlas with new data | scArches model surgery |\n| No pre-trained model available | Train scANVI from scratch |\n| Query very different from reference | Consider retraining |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Workflow 1: Map Query to Pre-Trained Reference\n\n### Step 1: Load Pre-Trained Reference Model\n\n```python\n# Load saved reference model\n# The model must have been trained with scvi-tools\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Or load scANVI for label transfer\nreference_model = scvi.model.SCANVI.load(\"reference_scanvi_model/\")\n\n# Check model info\nprint(f\"Model type: {type(reference_model)}\")\nprint(f\"Training data shape: {reference_model.adata.shape}\")\n```\n\n### Step 2: Prepare Query Data\n\n```python\n# Load query data\nadata_query = sc.read_h5ad(\"query_data.h5ad\")\n\n# CRITICAL: Match genes to reference\nreference_genes = reference_model.adata.var_names\nquery_genes = adata_query.var_names\n\n# Check overlap\ncommon_genes = reference_genes.intersection(query_genes)\nprint(f\"Reference genes: {len(reference_genes)}\")\nprint(f\"Query genes: {len(query_genes)}\")\nprint(f\"Overlap: {len(common_genes)}\")\n\n# Subset query to reference genes\nadata_query = adata_query[:, reference_genes].copy()\n\n# Handle missing genes (filled with zeros automatically by prepare_query_anndata)\n```\n\n### Step 3: Prepare Query AnnData\n\n```python\n# Store raw counts\nadata_query.layers[\"counts\"] = adata_query.X.copy()\n\n# Prepare query for mapping\n# This aligns the query data structure to match the reference\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\n```\n\n### Step 4: Create Query Model\n\n```python\n# Create query model from reference\n# This initializes with reference weights\nquery_model = scvi.model.SCVI.load_query_data(\n    adata_query,\n    reference_model\n)\n\n# The query model inherits:\n# - Reference architecture\n# - Reference encoder weights (frozen by default)\n# - Decoder is fine-tuned for query\n```\n\n### Step 5: Fine-Tune on Query\n\n```python\n# Fine-tune the query model\n# This adjusts decoder weights for query-specific effects\nquery_model.train(\n    max_epochs=200,\n    plan_kwargs={\n        \"weight_decay\": 0.0  # Less regularization for fine-tuning\n    }\n)\n\n# Check training\nquery_model.history['elbo_train'].plot()\n```\n\n### Step 6: Get Query Representation\n\n```python\n# Get latent representation\n# Query cells are embedded in same space as reference\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Visualize\nsc.pp.neighbors(adata_query, use_rep=\"X_scVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['cell_type', 'batch'])\n```\n\n## Workflow 2: scANVI Query Mapping with Label Transfer\n\nFor transferring cell type labels from reference to query:\n\n### Step 1: Load scANVI Reference\n\n```python\n# Reference must be scANVI model (trained with labels)\nreference_scanvi = scvi.model.SCANVI.load(\"scanvi_reference/\")\n\n# Check available labels\nprint(\"Reference cell types:\")\nprint(reference_scanvi.adata.obs['cell_type'].value_counts())\n```\n\n### Step 2: Prepare and Map Query\n\n```python\n# Prepare query\nadata_query.layers[\"counts\"] = adata_query.X.copy()\nadata_query = adata_query[:, reference_scanvi.adata.var_names].copy()\n\nscvi.model.SCANVI.prepare_query_anndata(adata_query, reference_scanvi)\n\n# Create query model\nquery_scanvi = scvi.model.SCANVI.load_query_data(\n    adata_query,\n    reference_scanvi\n)\n\n# Fine-tune\nquery_scanvi.train(\n    max_epochs=100,\n    plan_kwargs={\"weight_decay\": 0.0}\n)\n```\n\n### Step 3: Get Predictions\n\n```python\n# Predict cell types\npredictions = query_scanvi.predict()\nadata_query.obs[\"predicted_cell_type\"] = predictions\n\n# Get prediction probabilities\nsoft_predictions = query_scanvi.predict(soft=True)\nadata_query.obs[\"prediction_confidence\"] = soft_predictions.max(axis=1)\n\n# Latent representation\nadata_query.obsm[\"X_scANVI\"] = query_scanvi.get_latent_representation()\n\n# Visualize predictions\nsc.pp.neighbors(adata_query, use_rep=\"X_scANVI\")\nsc.tl.umap(adata_query)\nsc.pl.umap(adata_query, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n### Step 4: Evaluate Predictions\n\n```python\n# Distribution of predictions\nprint(adata_query.obs['predicted_cell_type'].value_counts())\n\n# Confidence statistics\nprint(f\"Mean confidence: {adata_query.obs['prediction_confidence'].mean():.3f}\")\nprint(f\"Low confidence (<0.5): {(adata_query.obs['prediction_confidence'] < 0.5).sum()}\")\n\n# Filter low-confidence predictions\nhigh_conf = adata_query[adata_query.obs['prediction_confidence'] >= 0.7].copy()\nprint(f\"High confidence cells: {len(high_conf)} ({len(high_conf)/len(adata_query)*100:.1f}%)\")\n```\n\n## Workflow 3: Model Surgery (Extending Reference)\n\nExtend an existing reference model with new data:\n\n### Step 1: Freeze Reference Layers\n\n```python\n# Load reference model\nreference_model = scvi.model.SCVI.load(\"reference_model/\")\n\n# Get reference representation (before surgery)\nadata_ref = reference_model.adata\nadata_ref.obsm[\"X_scVI_before\"] = reference_model.get_latent_representation()\n```\n\n### Step 2: Prepare Combined Data\n\n```python\n# Add batch information\nadata_ref.obs[\"dataset\"] = \"reference\"\nadata_query.obs[\"dataset\"] = \"query\"\n\n# Combine\nadata_combined = sc.concat([adata_ref, adata_query])\nadata_combined.layers[\"counts\"] = adata_combined.X.copy()\n```\n\n### Step 3: Surgery Approach\n\n```python\n# Option A: Use load_query_data (recommended)\nscvi.model.SCVI.prepare_query_anndata(adata_query, reference_model)\nextended_model = scvi.model.SCVI.load_query_data(adata_query, reference_model)\nextended_model.train(max_epochs=200)\n\n# Option B: Retrain with combined data (if query is large)\n# This doesn't preserve reference exactly but may give better results\nscvi.model.SCVI.setup_anndata(\n    adata_combined,\n    layer=\"counts\",\n    batch_key=\"dataset\"\n)\nnew_model = scvi.model.SCVI(adata_combined, n_latent=30)\nnew_model.train(max_epochs=200)\n```\n\n## Joint Visualization\n\nVisualize reference and query together:\n\n```python\n# Get latent representations\nadata_ref.obsm[\"X_scVI\"] = reference_model.get_latent_representation()\nadata_query.obsm[\"X_scVI\"] = query_model.get_latent_representation()\n\n# Combine for visualization\nadata_ref.obs[\"source\"] = \"reference\"\nadata_query.obs[\"source\"] = \"query\"\nadata_combined = sc.concat([adata_ref, adata_query])\n\n# Compute joint UMAP\nsc.pp.neighbors(adata_combined, use_rep=\"X_scVI\")\nsc.tl.umap(adata_combined)\n\n# Visualize\nimport matplotlib.pyplot as plt\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\nsc.pl.umap(adata_combined, color=\"source\", ax=axes[0], show=False, title=\"Source\")\nsc.pl.umap(adata_combined, color=\"cell_type\", ax=axes[1], show=False, title=\"Cell Type\")\nsc.pl.umap(adata_combined, color=\"batch\", ax=axes[2], show=False, title=\"Batch\")\n\nplt.tight_layout()\n```\n\n## Using Public Atlas Models\n\n### From HuggingFace Model Hub\n\n```python\nfrom huggingface_hub import hf_hub_download\n\n# Download model files\nmodel_dir = hf_hub_download(\n    repo_id=\"scvi-tools/model-name\",  # Replace with actual repo\n    filename=\"model.pt\",\n    local_dir=\"./downloaded_model/\"\n)\n\n# Load model\natlas_model = scvi.model.SCANVI.load(model_dir)\n```\n\n### From CellxGene\n\n```python\n# Many CellxGene datasets provide pre-trained models\n# Check dataset documentation for model availability\n# https://cellxgene.cziscience.com/\n\n# Example workflow:\n# 1. Download reference dataset and model\n# 2. Load model: model = scvi.model.SCANVI.load(\"cellxgene_model/\")\n# 3. Map your query data using steps above\n```\n\n## Complete Pipeline\n\n```python\ndef map_query_to_reference(\n    adata_query,\n    reference_model_path,\n    model_type=\"scanvi\",\n    max_epochs=100,\n    confidence_threshold=0.5\n):\n    \"\"\"\n    Map query data to pre-trained reference model.\n\n    Parameters\n    ----------\n    adata_query : AnnData\n        Query data with raw counts\n    reference_model_path : str\n        Path to saved reference model\n    model_type : str\n        \"scvi\" or \"scanvi\"\n    max_epochs : int\n        Fine-tuning epochs\n    confidence_threshold : float\n        Minimum prediction confidence (for scANVI)\n\n    Returns\n    -------\n    Mapped AnnData with predictions (if scANVI)\n    \"\"\"\n    import scvi\n\n    # Load reference\n    if model_type == \"scanvi\":\n        reference_model = scvi.model.SCANVI.load(reference_model_path)\n        ModelClass = scvi.model.SCANVI\n    else:\n        reference_model = scvi.model.SCVI.load(reference_model_path)\n        ModelClass = scvi.model.SCVI\n\n    # Prepare query\n    adata_query = adata_query.copy()\n    adata_query = adata_query[:, reference_model.adata.var_names].copy()\n    adata_query.layers[\"counts\"] = adata_query.X.copy()\n\n    # Map query\n    ModelClass.prepare_query_anndata(adata_query, reference_model)\n    query_model = ModelClass.load_query_data(adata_query, reference_model)\n\n    # Fine-tune\n    query_model.train(\n        max_epochs=max_epochs,\n        plan_kwargs={\"weight_decay\": 0.0}\n    )\n\n    # Get results\n    rep_key = \"X_scANVI\" if model_type == \"scanvi\" else \"X_scVI\"\n    adata_query.obsm[rep_key] = query_model.get_latent_representation()\n\n    if model_type == \"scanvi\":\n        adata_query.obs[\"predicted_cell_type\"] = query_model.predict()\n        soft = query_model.predict(soft=True)\n        adata_query.obs[\"prediction_confidence\"] = soft.max(axis=1)\n        adata_query.obs[\"confident\"] = adata_query.obs[\"prediction_confidence\"] >= confidence_threshold\n\n    # Compute UMAP\n    sc.pp.neighbors(adata_query, use_rep=rep_key)\n    sc.tl.umap(adata_query)\n\n    return adata_query, query_model\n\n\n# Usage\nadata_mapped, model = map_query_to_reference(\n    adata_query,\n    \"reference_scanvi_model/\",\n    model_type=\"scanvi\"\n)\n\n# Visualize\nsc.pl.umap(adata_mapped, color=['predicted_cell_type', 'prediction_confidence'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Gene mismatch | Different gene naming | Convert gene IDs (Ensembl ↔ Symbol) |\n| Many low-confidence | Query has novel types | Manually annotate low-confidence cells |\n| Poor mapping | Query too different | Consider retraining with combined data |\n| Memory error | Large query | Process in batches |\n| Version mismatch | Different scvi-tools version | Use same version as reference training |\n\n## Key References\n\n- Lotfollahi et al. (2022) \"Mapping single-cell data to reference atlases by transfer learning\"\n- Xu et al. (2021) \"Probabilistic harmonization and annotation of single-cell transcriptomics data with deep generative models\"\n","isInternal":false,"tokens":2719,"sizeBytes":11090},{"name":"scrna_integration.md","path":"bio-research/skills/scvi-tools/references/scrna_integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/scrna_integration.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# scRNA-seq Integration with scVI and scANVI\n\nThis reference covers batch correction and dataset integration using scVI (unsupervised) and scANVI (semi-supervised with cell type labels).\n\n## Overview\n\nSingle-cell datasets often have batch effects from:\n- Different donors/patients\n- Different experimental batches\n- Different technologies (10x v2 vs v3)\n- Different studies\n\nscVI and scANVI learn a shared latent space where batch effects are removed while biological variation is preserved.\n\n## When to Use Which Model\n\n| Model | Use When | Labels Needed |\n|-------|----------|---------------|\n| **scVI** | No labels available, exploratory analysis | No |\n| **scANVI** | Have partial/full labels, want better preservation | Yes (partial OK) |\n\n## scVI Integration Workflow\n\n### Step 1: Prepare Data\n\n```python\nimport scvi\nimport scanpy as sc\n\n# Load datasets\nadata1 = sc.read_h5ad(\"dataset1.h5ad\")\nadata2 = sc.read_h5ad(\"dataset2.h5ad\")\n\n# Add batch annotation\nadata1.obs[\"batch\"] = \"batch1\"\nadata2.obs[\"batch\"] = \"batch2\"\n\n# Concatenate\nadata = sc.concat([adata1, adata2], label=\"batch\")\n\n# Ensure we have raw counts\n# If data is normalized, recover from .raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection Across Batches\n\n```python\n# Select HVGs considering batch\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train scVI\n\n```python\n# Register data with scVI\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"\n)\n\n# Create model\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,          # Latent dimensions\n    n_layers=2,           # Encoder/decoder depth\n    gene_likelihood=\"nb\"  # negative binomial (or \"zinb\")\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    early_stopping_patience=10,\n    batch_size=128\n)\n\n# Plot training history\nmodel.history[\"elbo_train\"].plot()\n```\n\n### Step 4: Get Integrated Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_scVI\"] = model.get_latent_representation()\n\n# Use for clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_scVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\n# Visualize integration\nsc.pl.umap(adata, color=[\"batch\", \"leiden\"], ncols=2)\n```\n\n### Step 5: Save Model\n\n```python\n# Save model for later use\nmodel.save(\"scvi_model/\")\n\n# Load model\nmodel = scvi.model.SCVI.load(\"scvi_model/\", adata=adata)\n```\n\n## scANVI Integration Workflow\n\nscANVI extends scVI with cell type labels for better biological preservation.\n\n### Step 1: Prepare Data with Labels\n\n```python\n# Labels should be in adata.obs\n# Use \"Unknown\" for unlabeled cells\nprint(adata.obs[\"cell_type\"].value_counts())\n\n# For partially labeled data\n# Mark unlabeled cells\nadata.obs[\"cell_type_scanvi\"] = adata.obs[\"cell_type\"].copy()\n# adata.obs.loc[unlabeled_mask, \"cell_type_scanvi\"] = \"Unknown\"\n```\n\n### Step 2: Option A - Train scANVI from Scratch\n\n```python\n# Setup for scANVI\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"\n)\n\n# Create model\nscanvi_model = scvi.model.SCANVI(\n    adata,\n    n_latent=30,\n    n_layers=2\n)\n\n# Train\nscanvi_model.train(max_epochs=200)\n```\n\n### Step 2: Option B - Initialize scANVI from scVI (Recommended)\n\n```python\n# First train scVI\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\nscvi_model = scvi.model.SCVI(adata, n_latent=30)\nscvi_model.train(max_epochs=200)\n\n# Initialize scANVI from scVI\nscanvi_model = scvi.model.SCANVI.from_scvi_model(\n    scvi_model,\n    labels_key=\"cell_type\",\n    unlabeled_category=\"Unknown\"  # For partially labeled data\n)\n\n# Fine-tune scANVI (fewer epochs needed)\nscanvi_model.train(max_epochs=50)\n```\n\n### Step 3: Get Results\n\n```python\n# Latent representation\nadata.obsm[\"X_scANVI\"] = scanvi_model.get_latent_representation()\n\n# Predicted labels for unlabeled cells\npredictions = scanvi_model.predict()\nadata.obs[\"predicted_cell_type\"] = predictions\n\n# Prediction probabilities\nsoft_predictions = scanvi_model.predict(soft=True)\n\n# Visualization\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=[\"batch\", \"cell_type\", \"predicted_cell_type\"])\n```\n\n## Comparing Integration Quality\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Before integration (on PCA)\nsc.pp.pca(adata)\nsc.pl.pca(adata, color=\"batch\", ax=axes[0], title=\"Before (PCA)\", show=False)\n\n# After scVI\nsc.pp.neighbors(adata, use_rep=\"X_scVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[1], title=\"After scVI\", show=False)\n\n# After scANVI\nsc.pp.neighbors(adata, use_rep=\"X_scANVI\")\nsc.tl.umap(adata)\nsc.pl.umap(adata, color=\"batch\", ax=axes[2], title=\"After scANVI\", show=False)\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics (scib)\n\n```python\n# pip install scib-metrics\n\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"batch\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_pca\", \"X_scVI\", \"X_scANVI\"]\n)\n\nbm.benchmark()\nbm.plot_results_table()\n```\n\n## Differential Expression\n\nscVI provides differential expression that accounts for batch effects:\n\n```python\n# DE between groups\nde_results = model.differential_expression(\n    groupby=\"cell_type\",\n    group1=\"T cells\",\n    group2=\"B cells\"\n)\n\n# Filter significant\nde_sig = de_results[\n    (de_results[\"is_de_fdr_0.05\"] == True) &\n    (abs(de_results[\"lfc_mean\"]) > 1)\n]\n\nprint(de_sig.head(20))\n```\n\n## Advanced: Multiple Categorical Covariates\n\n```python\n# Include additional covariates beyond batch\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Training Tips\n\n### For Large Datasets (>100k cells)\n\n```python\nmodel.train(\n    max_epochs=100,      # Fewer epochs needed\n    batch_size=256,      # Larger batches\n    train_size=0.9,      # Less validation\n    early_stopping=True\n)\n```\n\n### For Small Datasets (<10k cells)\n\n```python\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,         # Smaller latent space\n    n_layers=1,          # Simpler model\n    dropout_rate=0.2     # More regularization\n)\n\nmodel.train(\n    max_epochs=400,\n    batch_size=64\n)\n```\n\n### Monitoring Training\n\n```python\n# Check training curves\nimport matplotlib.pyplot as plt\n\nfig, ax = plt.subplots()\nax.plot(model.history[\"elbo_train\"], label=\"Train\")\nax.plot(model.history[\"elbo_validation\"], label=\"Validation\")\nax.set_xlabel(\"Epoch\")\nax.set_ylabel(\"ELBO\")\nax.legend()\n\n# Should see convergence without overfitting\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_datasets(\n    adatas,\n    batch_key=\"batch\",\n    labels_key=None,\n    n_top_genes=2000,\n    n_latent=30\n):\n    \"\"\"\n    Integrate multiple scRNA-seq datasets.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {batch_name: AnnData}\n    batch_key : str\n        Key for batch annotation\n    labels_key : str, optional\n        Key for cell type labels (uses scANVI if provided)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    AnnData with integrated representation\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add batch labels and concatenate\n    for batch_name, adata in adatas.items():\n        adata.obs[batch_key] = batch_name\n    \n    adata = sc.concat(list(adatas.values()), label=batch_key)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Train model\n    if labels_key and labels_key in adata.obs.columns:\n        # Use scANVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        scvi_model = scvi.model.SCVI(adata, n_latent=n_latent)\n        scvi_model.train(max_epochs=200)\n        \n        model = scvi.model.SCANVI.from_scvi_model(\n            scvi_model,\n            labels_key=labels_key,\n            unlabeled_category=\"Unknown\"\n        )\n        model.train(max_epochs=50)\n        rep_key = \"X_scANVI\"\n    else:\n        # Use scVI\n        scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=batch_key)\n        model = scvi.model.SCVI(adata, n_latent=n_latent)\n        model.train(max_epochs=200)\n        rep_key = \"X_scVI\"\n    \n    # Add representation\n    adata.obsm[rep_key] = model.get_latent_representation()\n    \n    # Compute neighbors and UMAP\n    sc.pp.neighbors(adata, use_rep=rep_key)\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"study1\": sc.read_h5ad(\"study1.h5ad\"),\n    \"study2\": sc.read_h5ad(\"study2.h5ad\"),\n    \"study3\": sc.read_h5ad(\"study3.h5ad\")\n}\n\nadata_integrated, model = integrate_datasets(\n    adatas,\n    labels_key=\"cell_type\"\n)\n\nsc.pl.umap(adata_integrated, color=[\"batch\", \"leiden\", \"cell_type\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Batches not mixing | Too few shared genes | Use more HVGs, check gene overlap |\n| Over-correction | Biological variation removed | Use scANVI with labels |\n| Training diverges | Learning rate too high | Reduce lr, increase batch_size |\n| NaN loss | Bad data | Check for all-zero cells/genes |\n| Memory error | Too many cells | Reduce batch_size, use GPU |\n","isInternal":false,"tokens":2692,"sizeBytes":9877},{"name":"spatial_deconvolution.md","path":"bio-research/skills/scvi-tools/references/spatial_deconvolution.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/spatial_deconvolution.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Spatial Transcriptomics Analysis\n\nThis reference covers spatial transcriptomics analysis using scvi-tools methods: DestVI for deconvolution and resolVI for building spatial models.\n\n## Overview\n\nSpatial transcriptomics technologies like Visium capture gene expression at defined spatial locations, but many platforms have multi-cellular resolution. scvi-tools provides two main approaches:\n\n- **DestVI**: Deconvolution - estimates cell type proportions at each spot using a single-cell reference\n- **resolVI**: Builds a spatial model that learns gene expression patterns accounting for spatial context\n\n## Available Methods in scvi-tools\n\n| Method | Description | Use Case |\n|--------|-------------|----------|\n| **DestVI** | Variational inference for deconvolution | Estimate cell type proportions per spot |\n| **resolVI** | Spatial gene expression model | Learn spatially-aware representations |\n| **CondSCVI** | Reference model for DestVI | Required for DestVI workflow |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport squidpy as sq\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n---\n\n## Part 1: DestVI Deconvolution\n\n### Step 1: Load Spatial Data\n\n```python\n# Load Visium data\nadata_spatial = sc.read_visium(\"spaceranger_output/\")\n\n# Check structure\nprint(f\"Spots: {adata_spatial.n_obs}\")\nprint(f\"Genes: {adata_spatial.n_vars}\")\nprint(f\"Spatial coordinates: {adata_spatial.obsm['spatial'].shape}\")\n\n# Basic QC\nsc.pp.calculate_qc_metrics(adata_spatial, inplace=True)\nadata_spatial = adata_spatial[adata_spatial.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n```\n\n### Step 2: Load Single-Cell Reference\n\n```python\n# Load reference single-cell data\nadata_sc = sc.read_h5ad(\"reference_scrna.h5ad\")\n\n# Requirements:\n# - Raw counts\n# - Cell type annotations\nprint(f\"Reference cells: {adata_sc.n_obs}\")\nprint(f\"Cell types: {adata_sc.obs['cell_type'].nunique()}\")\nprint(adata_sc.obs['cell_type'].value_counts())\n\n# Store counts\nadata_sc.layers[\"counts\"] = adata_sc.X.copy()\n```\n\n### Step 3: Prepare Data\n\n```python\n# DestVI requires gene overlap between reference and spatial\ncommon_genes = adata_sc.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\nadata_sc = adata_sc[:, common_genes].copy()\nadata_spatial = adata_spatial[:, common_genes].copy()\n```\n\n### Step 4: Train Reference Model (CondSCVI)\n\n```python\n# Train conditional scVI on reference data\nscvi.model.CondSCVI.setup_anndata(\n    adata_sc,\n    layer=\"counts\",\n    labels_key=\"cell_type\"\n)\n\nsc_model = scvi.model.CondSCVI(\n    adata_sc,\n    n_latent=20\n)\n\nsc_model.train(max_epochs=200)\nsc_model.history['elbo_train'].plot()\n```\n\n### Step 5: Train DestVI\n\n```python\n# Setup spatial data\nscvi.model.DestVI.setup_anndata(\n    adata_spatial,\n    layer=\"counts\"\n)\n\n# Train DestVI using reference model\nspatial_model = scvi.model.DestVI.from_rna_model(\n    adata_spatial,\n    sc_model\n)\n\nspatial_model.train(max_epochs=500)\n```\n\n### Step 6: Get Cell Type Proportions\n\n```python\n# Infer cell type proportions at each spot\nproportions = spatial_model.get_proportions()\n\n# Add to adata\nfor ct in adata_sc.obs['cell_type'].unique():\n    adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=[f'prop_{ct}' for ct in adata_sc.obs['cell_type'].unique()[:6]],\n    ncols=3\n)\n```\n\n---\n\n## Part 2: resolVI Spatial Model\n\nresolVI is a semi-supervised method that learns cell type assignments and spatially-aware representations directly from spatial data, optionally using initial cell type predictions.\n\n**Note**: resolVI is in `scvi.external` (not `scvi.model`).\n\n### Step 1: Prepare Spatial Data\n\n```python\n# Load and preprocess\nadata = sc.read_visium(\"spaceranger_output/\")\n\n# QC\nsc.pp.calculate_qc_metrics(adata, inplace=True)\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\n\n# Store counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# HVG selection\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,\n    flavor=\"seurat_v3\",\n    layer=\"counts\"\n)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# Optional: Get initial cell type predictions (e.g., from a reference)\n# adata.obs[\"predicted_celltype\"] = ...\n```\n\n### Step 2: Setup and Train resolVI\n\n```python\n# Setup for resolVI (note: scvi.external, not scvi.model)\nscvi.external.RESOLVI.setup_anndata(\n    adata,\n    labels_key=\"predicted_celltype\",  # Initial cell type predictions\n    layer=\"counts\"\n)\n\n# Create model (semisupervised=True uses the labels)\nmodel = scvi.external.RESOLVI(adata, semisupervised=True)\n\n# Train\nmodel.train(max_epochs=50)\n```\n\n### Step 3: Get Cell Type Predictions\n\n```python\n# Get refined cell type predictions\n# soft=True returns probabilities, soft=False returns labels\ncell_type_probs = model.predict(adata, num_samples=3, soft=True)\ncell_type_labels = model.predict(adata, num_samples=3, soft=False)\n\nadata.obs[\"resolvi_celltype\"] = cell_type_labels\n\n# Visualize\nsq.pl.spatial_scatter(adata, color=\"resolvi_celltype\")\n```\n\n### Step 4: Get Latent Representation\n\n```python\n# Get latent representation\nadata.obsm[\"X_resolVI\"] = model.get_latent_representation(adata)\n\n# Cluster based on spatial representation\nsc.pp.neighbors(adata, use_rep=\"X_resolVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize clusters spatially\nsq.pl.spatial_scatter(adata, color=\"leiden\")\n```\n\n### Step 5: Differential Expression\n\n```python\n# DE between cell types using resolVI\nde_results = model.differential_expression(\n    adata,\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\"\n)\n\nprint(de_results.head(20))\n```\n\n### Step 6: Niche Abundance Analysis\n\n```python\n# Analyze how cell type neighborhoods differ between conditions\n# Requires spatial neighbor graph\nsq.gr.spatial_neighbors(adata, coord_type=\"generic\")\n\nniche_results = model.differential_niche_abundance(\n    groupby=\"resolvi_celltype\",\n    group1=\"T_cell\",\n    group2=\"Tumor\",\n    neighbor_key=\"spatial_neighbors\"\n)\n```\n\n### Step 7: Query Mapping (Transfer to New Data)\n\n```python\n# Map new spatial data to trained model\nquery_adata = sc.read_visium(\"new_sample/\")\nquery_adata.layers[\"counts\"] = query_adata.X.copy()\n\n# Prepare and load query\nmodel.prepare_query_anndata(query_adata, reference_model=model)\nquery_model = model.load_query_data(query_adata, reference_model=model)\n\n# Fine-tune on query\nquery_model.train(max_epochs=20)\n\n# Get predictions for query\nquery_labels = query_model.predict(query_adata, num_samples=3, soft=False)\n```\n\n---\n\n## Visualization\n\n### Spatial Proportions\n\n```python\nimport matplotlib.pyplot as plt\n\n# Plot multiple cell type proportions\ncell_types = ['T_cell', 'Tumor', 'Fibroblast', 'Macrophage']\nfig, axes = plt.subplots(2, 2, figsize=(12, 12))\n\nfor ax, ct in zip(axes.flat, cell_types):\n    sq.pl.spatial_scatter(\n        adata_spatial,\n        color=f'prop_{ct}',\n        ax=ax,\n        title=ct,\n        show=False\n    )\n\nplt.tight_layout()\n```\n\n### Enrichment by Region\n\n```python\n# Cluster spatial data\nsc.pp.neighbors(adata_spatial)\nsc.tl.leiden(adata_spatial, resolution=0.5)\n\n# Compare proportions across regions\nimport pandas as pd\n\ncell_types = adata_sc.obs['cell_type'].unique()\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nregion_props = adata_spatial.obs.groupby('leiden')[prop_cols].mean()\nprint(region_props)\n\n# Heatmap\nimport seaborn as sns\nplt.figure(figsize=(10, 6))\nsns.heatmap(region_props.T, annot=True, cmap='viridis')\nplt.title('Cell Type Proportions by Region')\n```\n\n### Spatial Cell Type Interactions\n\n```python\n# Neighborhood enrichment using cell type assignments\nsq.gr.spatial_neighbors(adata_spatial)\n\n# Create \"dominant cell type\" annotation\nprop_cols = [f'prop_{ct}' for ct in cell_types]\nadata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\nadata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n# Co-occurrence analysis\nsq.gr.co_occurrence(adata_spatial, cluster_key='dominant_type')\nsq.pl.co_occurrence(adata_spatial, cluster_key='dominant_type')\n```\n\n---\n\n## Complete DestVI Pipeline\n\n```python\ndef deconvolve_spatial(\n    adata_spatial,\n    adata_ref,\n    cell_type_key=\"cell_type\",\n    n_latent=20,\n    max_epochs_ref=200,\n    max_epochs_spatial=500\n):\n    \"\"\"\n    Perform spatial deconvolution using DestVI.\n\n    Parameters\n    ----------\n    adata_spatial : AnnData\n        Spatial transcriptomics data\n    adata_ref : AnnData\n        Single-cell reference with cell type annotations\n    cell_type_key : str\n        Column in adata_ref.obs with cell type labels\n    n_latent : int\n        Latent dimensions\n    max_epochs_ref : int\n        Training epochs for reference model\n    max_epochs_spatial : int\n        Training epochs for spatial model\n\n    Returns\n    -------\n    AnnData with cell type proportions in obs\n    \"\"\"\n    import scvi\n\n    # Get common genes\n    common_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\n    adata_ref = adata_ref[:, common_genes].copy()\n    adata_spatial = adata_spatial[:, common_genes].copy()\n\n    # Ensure counts are stored\n    if \"counts\" not in adata_ref.layers:\n        adata_ref.layers[\"counts\"] = adata_ref.X.copy()\n    if \"counts\" not in adata_spatial.layers:\n        adata_spatial.layers[\"counts\"] = adata_spatial.X.copy()\n\n    # Train reference model\n    scvi.model.CondSCVI.setup_anndata(\n        adata_ref,\n        layer=\"counts\",\n        labels_key=cell_type_key\n    )\n\n    ref_model = scvi.model.CondSCVI(adata_ref, n_latent=n_latent)\n    ref_model.train(max_epochs=max_epochs_ref)\n\n    # Train spatial model\n    scvi.model.DestVI.setup_anndata(adata_spatial, layer=\"counts\")\n\n    spatial_model = scvi.model.DestVI.from_rna_model(\n        adata_spatial,\n        ref_model\n    )\n    spatial_model.train(max_epochs=max_epochs_spatial)\n\n    # Get proportions\n    proportions = spatial_model.get_proportions()\n\n    cell_types = adata_ref.obs[cell_type_key].unique()\n    for ct in cell_types:\n        adata_spatial.obs[f'prop_{ct}'] = proportions[ct]\n\n    # Add dominant type\n    prop_cols = [f'prop_{ct}' for ct in cell_types]\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs[prop_cols].idxmax(axis=1)\n    adata_spatial.obs['dominant_type'] = adata_spatial.obs['dominant_type'].str.replace('prop_', '')\n\n    return adata_spatial, ref_model, spatial_model\n\n# Usage\nadata_spatial, ref_model, spatial_model = deconvolve_spatial(\n    adata_spatial,\n    adata_sc,\n    cell_type_key=\"cell_type\"\n)\n\n# Visualize\nsq.pl.spatial_scatter(\n    adata_spatial,\n    color=['dominant_type', 'prop_T_cell', 'prop_Tumor'],\n    ncols=3\n)\n```\n\n---\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Few common genes | Different gene naming | Convert gene names (Ensembl ↔ Symbol) |\n| Poor deconvolution | Reference doesn't match | Use tissue-matched reference |\n| All spots same type | Over-smoothing | Adjust model parameters, check reference diversity |\n| NaN proportions | Missing cell types | Ensure all expected types in reference |\n| Training slow | Large spatial dataset | Reduce max_epochs, increase batch_size |\n\n## Key References\n\n- Lopez et al. (2022) \"DestVI identifies continuums of cell types in spatial transcriptomics data\"\n- [scvi-tools spatial tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n","isInternal":false,"tokens":2937,"sizeBytes":11428},{"name":"troubleshooting.md","path":"bio-research/skills/scvi-tools/references/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/references/troubleshooting.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Troubleshooting Guide for scvi-tools\n\nThis reference provides a consolidated guide for diagnosing and resolving common issues across all scvi-tools models.\n\n## Quick Diagnosis\n\n| Symptom | Likely Cause | Quick Fix |\n|---------|--------------|-----------|\n| \"X should contain integers\" | Normalized data in X | Use `layer=\"counts\"` in setup |\n| CUDA out of memory | GPU memory exhausted | Reduce `batch_size`, use smaller model |\n| Training loss is NaN | Bad data or learning rate | Check for all-zero cells/genes |\n| Batches not mixing | Too few shared features | Increase HVGs, check gene overlap |\n| Over-correction | Too aggressive integration | Use scANVI with labels |\n| Import error | Missing dependencies | `pip install scvi-tools[all]` |\n\n## Data Format Issues\n\n### Issue: CITE-seq protein data from Seurat is CLR-normalized\n\n**Cause**: Seurat's `NormalizeData(normalization.method = \"CLR\")` transforms raw ADT counts. totalVI requires raw integer counts for protein data.\n\n**Symptoms**:\n- Protein values are not integers\n- Protein values contain negative numbers\n- Model training produces poor results\n\n**Solution**:\n```python\n# Check if protein data is normalized\nprotein = adata.obsm[\"protein_expression\"]\nprint(f\"Min value: {protein.min()}\")  # Should be 0 if raw counts\nprint(f\"Contains integers: {np.allclose(protein, protein.astype(int))}\")\n\n# If importing from Seurat, use the raw counts assay, not the normalized one\n# In R/Seurat, export the RNA assay's counts slot, not the data slot\n# GetAssayData(seurat_obj, assay = \"ADT\", slot = \"counts\")\n```\n\n### Issue: \"layer not found\" or \"X should contain integers\"\n\n**Cause**: scvi-tools requires raw integer counts, not normalized data.\n\n**Solution**:\n```python\n# Check if X contains integers\nimport numpy as np\nprint(f\"X max: {adata.X.max()}\")\nprint(f\"Contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\n\n# If normalized, recover from raw\nif hasattr(adata, 'raw') and adata.raw is not None:\n    adata = adata.raw.to_adata()\n\n# Or use existing counts layer\nadata.layers[\"counts\"] = adata.X.copy()\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n```\n\n### Issue: Sparse matrix errors\n\n**Cause**: Incompatible sparse format or dense array expected.\n\n**Solution**:\n```python\nfrom scipy.sparse import csr_matrix\n\n# Convert to CSR format (most compatible)\nif hasattr(adata.X, 'toarray'):\n    adata.X = csr_matrix(adata.X)\n\n# Or convert to dense if small enough\nif adata.n_obs * adata.n_vars < 1e8:\n    adata.X = adata.X.toarray()\n```\n\n### Issue: NaN or Inf values in data\n\n**Cause**: Missing values or corrupted data.\n\n**Solution**:\n```python\nimport numpy as np\n\n# Check for issues\nX = adata.X.toarray() if hasattr(adata.X, 'toarray') else adata.X\nprint(f\"NaN count: {np.isnan(X).sum()}\")\nprint(f\"Inf count: {np.isinf(X).sum()}\")\nprint(f\"Negative count: {(X < 0).sum()}\")\n\n# Replace NaN/Inf with 0\nX = np.nan_to_num(X, nan=0, posinf=0, neginf=0)\nX = np.clip(X, 0, None)  # Ensure non-negative\nadata.X = csr_matrix(X)\n```\n\n### Issue: batch_key or labels_key not found\n\n**Cause**: Column name mismatch in adata.obs.\n\n**Solution**:\n```python\n# List available columns\nprint(adata.obs.columns.tolist())\n\n# Check for similar names\nfor col in adata.obs.columns:\n    if 'batch' in col.lower() or 'sample' in col.lower():\n        print(f\"Potential batch column: {col}\")\n```\n\n## GPU and Memory Issues\n\n### Issue: CUDA out of memory\n\n**Cause**: Model or batch doesn't fit in GPU memory.\n\n**Solutions** (try in order):\n\n```python\n# 1. Reduce batch size\nmodel.train(batch_size=64)  # Default is 128\n\n# 2. Use smaller model architecture\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=10,   # Default is 10-30\n    n_layers=1     # Default is 1-2\n)\n\n# 3. Subset to fewer genes\nsc.pp.highly_variable_genes(adata, n_top_genes=1500)\nadata = adata[:, adata.var['highly_variable']].copy()\n\n# 4. Clear GPU cache between models\nimport torch\ntorch.cuda.empty_cache()\n\n# 5. Use CPU if GPU is too small\nmodel.train(accelerator=\"cpu\")\n```\n\n### Issue: No GPU detected\n\n**Cause**: CUDA not installed or version mismatch.\n\n**Diagnosis**:\n```python\nimport torch\nprint(f\"CUDA available: {torch.cuda.is_available()}\")\nprint(f\"PyTorch version: {torch.__version__}\")\nprint(f\"CUDA version: {torch.version.cuda}\")\n```\n\n**Solution**:\n```bash\n# Check system CUDA\nnvidia-smi\nnvcc --version\n\n# Reinstall PyTorch with matching CUDA\npip install torch --index-url https://download.pytorch.org/whl/cu118  # For CUDA 11.8\n# Or\npip install torch --index-url https://download.pytorch.org/whl/cu121  # For CUDA 12.1\n```\n\n### Issue: Memory error with large datasets\n\n**Cause**: Dataset too large for system RAM.\n\n**Solutions**:\n```python\n# 1. Process in chunks (for very large data)\n# Subsample for initial exploration\nadata_sample = adata[np.random.choice(adata.n_obs, 50000, replace=False)].copy()\n\n# 2. Use backed mode for AnnData\nadata = sc.read_h5ad(\"large_data.h5ad\", backed='r')\n\n# 3. Reduce gene count aggressively\nadata = adata[:, adata.var['highly_variable']].copy()\n```\n\n## Training Issues\n\n### Issue: Training loss is NaN\n\n**Cause**: Numerical instability, bad data, or learning rate issues.\n\n**Solutions**:\n```python\n# 1. Check for problematic cells/genes\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_genes(adata, min_cells=3)\n\n# 2. Remove cells with zero counts\nadata = adata[adata.X.sum(axis=1) > 0].copy()\n\n# 3. Use gradient clipping (built into scvi-tools)\nmodel.train(max_epochs=200, early_stopping=True)\n```\n\n### Issue: Training doesn't converge\n\n**Cause**: Insufficient epochs, poor hyperparameters, or data issues.\n\n**Solutions**:\n```python\n# 1. Train longer\nmodel.train(max_epochs=400)\n\n# 2. Check training curves\nimport matplotlib.pyplot as plt\nplt.plot(model.history['elbo_train'])\nplt.plot(model.history['elbo_validation'])\nplt.xlabel('Epoch')\nplt.ylabel('ELBO')\nplt.legend(['Train', 'Validation'])\n\n# 3. Adjust model size for data size\n# Small data (<10k cells): smaller model\nmodel = scvi.model.SCVI(adata, n_latent=10, n_layers=1, dropout_rate=0.2)\n\n# Large data (>100k cells): can use larger model\nmodel = scvi.model.SCVI(adata, n_latent=30, n_layers=2)\n```\n\n### Issue: Overfitting (validation loss increases)\n\n**Cause**: Model too complex or trained too long.\n\n**Solutions**:\n```python\n# 1. Enable early stopping\nmodel.train(early_stopping=True, early_stopping_patience=10)\n\n# 2. Add regularization\nmodel = scvi.model.SCVI(adata, dropout_rate=0.2)\n\n# 3. Reduce model complexity\nmodel = scvi.model.SCVI(adata, n_layers=1)\n```\n\n## Integration Issues\n\n### Issue: Batches don't mix\n\n**Cause**: Too few shared features, strong biological differences, or technical issues.\n\n**Solutions**:\n```python\n# 1. Check gene overlap between batches\nfor batch in adata.obs['batch'].unique():\n    batch_genes = adata[adata.obs['batch'] == batch].var_names\n    print(f\"{batch}: {len(batch_genes)} genes\")\n\n# 2. Use more HVGs\nsc.pp.highly_variable_genes(adata, n_top_genes=4000, batch_key=\"batch\")\n\n# 3. Train longer\nmodel.train(max_epochs=400)\n\n# 4. Increase latent dimensions\nmodel = scvi.model.SCVI(adata, n_latent=50)\n```\n\n### Issue: Over-correction (biological signal lost)\n\n**Cause**: Model removes too much variation.\n\n**Solutions**:\n```python\n# 1. Use scANVI with cell type labels\nscvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\n\n# 2. Reduce model capacity\nmodel = scvi.model.SCVI(adata, n_latent=10)\n\n# 3. Use categorical covariates instead of batch_key\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    categorical_covariate_keys=[\"batch\"]  # Less aggressive than batch_key\n)\n```\n\n### Issue: One batch dominates clusters\n\n**Cause**: Unbalanced batch sizes or incomplete integration.\n\n**Solutions**:\n```python\n# 1. Check batch distribution\nprint(adata.obs['batch'].value_counts())\n\n# 2. Subsample to balance\nfrom sklearn.utils import resample\nbalanced = []\nmin_size = adata.obs['batch'].value_counts().min()\nfor batch in adata.obs['batch'].unique():\n    batch_data = adata[adata.obs['batch'] == batch]\n    balanced.append(batch_data[np.random.choice(len(batch_data), min_size, replace=False)])\nadata_balanced = sc.concat(balanced)\n```\n\n## Model-Specific Issues\n\n### scANVI: Poor label transfer\n\n**Solutions**:\n```python\n# 1. Check label distribution\nprint(adata.obs['cell_type'].value_counts())\n\n# 2. Use Unknown for low-confidence cells\nadata.obs.loc[adata.obs['prediction_score'] < 0.5, 'cell_type'] = 'Unknown'\n\n# 3. Train scVI longer before scANVI\nscvi_model.train(max_epochs=300)\nscanvi_model = scvi.model.SCANVI.from_scvi_model(scvi_model, labels_key=\"cell_type\")\nscanvi_model.train(max_epochs=100)\n```\n\n### totalVI: Noisy protein signal\n\n**Solutions**:\n```python\n# 1. Use denoised protein values\n_, protein_denoised = model.get_normalized_expression(return_mean=True)\n\n# 2. Check isotype controls\n# Isotype controls should have low expression\nfor i, name in enumerate(adata.uns[\"protein_names\"]):\n    if 'isotype' in name.lower():\n        print(f\"{name}: mean={adata.obsm['protein_expression'][:, i].mean():.1f}\")\n```\n\n### PeakVI: Poor clustering\n\n**Solutions**:\n```python\n# 1. Use more variable peaks\nfrom sklearn.feature_selection import VarianceThreshold\nselector = VarianceThreshold(threshold=0.05)\nadata = adata[:, selector.fit(adata.X).get_support()].copy()\n\n# 2. Binarize data\nadata.X = (adata.X > 0).astype(np.float32)\n```\n\n### MultiVI: Different cell counts between modalities\n\n**Solutions**:\n```python\n# Ensure same cells in same order\ncommon_cells = adata_rna.obs_names.intersection(adata_atac.obs_names)\nadata_rna = adata_rna[common_cells].copy()\nadata_atac = adata_atac[common_cells].copy()\n```\n\n### DestVI: Poor deconvolution\n\n**Solutions**:\n```python\n# 1. Check gene overlap\ncommon_genes = adata_ref.var_names.intersection(adata_spatial.var_names)\nprint(f\"Common genes: {len(common_genes)}\")  # Should be >1000\n\n# 2. Use tissue-matched reference\n# Reference should contain all cell types expected in spatial data\n\n# 3. Check reference quality\nprint(adata_ref.obs['cell_type'].value_counts())\n```\n\n## Version Compatibility\n\n### scvi-tools 1.x vs 0.x API changes\n\nKey differences:\n```python\n# 0.x API\nscvi.data.setup_anndata(adata, ...)\n\n# 1.x API (current)\nscvi.model.SCVI.setup_anndata(adata, ...)\n```\n\n### Check versions\n```python\nimport scvi\nimport scanpy as sc\nimport anndata\nimport torch\n\nprint(f\"scvi-tools: {scvi.__version__}\")\nprint(f\"scanpy: {sc.__version__}\")\nprint(f\"anndata: {anndata.__version__}\")\nprint(f\"torch: {torch.__version__}\")\n```\n\n### Recommended versions (as of late 2024)\n```\nscvi-tools>=1.0.0\nscanpy>=1.9.0\nanndata>=0.9.0\ntorch>=2.0.0\n```\n\n## Getting Help\n\n1. **Check documentation**: https://docs.scvi-tools.org/\n2. **GitHub issues**: https://github.com/scverse/scvi-tools/issues\n3. **Discourse forum**: https://discourse.scverse.org/\n4. **Tutorials**: https://docs.scvi-tools.org/en/stable/tutorials/index.html\n\nWhen reporting issues, include:\n- scvi-tools version (`scvi.__version__`)\n- Python version\n- Full error traceback\n- Minimal reproducible example\n","isInternal":false,"tokens":3009,"sizeBytes":11010},{"name":"SKILL.md","path":"bio-research/skills/scvi-tools/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/scvi-tools/SKILL.md","title":"scvi-tools","category":"anthropic-skill","format":"markdown","content":"---\nname: scvi-tools\ndescription: Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI, (2) ATAC-seq analysis with PeakVI, (3) CITE-seq multi-modal analysis with totalVI, (4) multiome RNA+ATAC analysis with MultiVI, (5) spatial transcriptomics deconvolution with DestVI, (6) label transfer and reference mapping with scANVI/scArches, (7) RNA velocity with veloVI, or (8) any deep learning-based single-cell method. Triggers include mentions of scVI, scANVI, totalVI, PeakVI, MultiVI, DestVI, veloVI, sysVI, scArches, variational autoencoder, VAE, batch correction, data integration, multi-modal, CITE-seq, multiome, reference mapping, latent space.\n---\n\n# scvi-tools Deep Learning Skill\n\nThis skill provides guidance for deep learning-based single-cell analysis using scvi-tools, the leading framework for probabilistic models in single-cell genomics.\n\n## How to Use This Skill\n\n1. Identify the appropriate workflow from the model/workflow tables below\n2. Read the corresponding reference file for detailed steps and code\n3. Use scripts in `scripts/` to avoid rewriting common code\n4. For installation or GPU issues, consult `references/environment_setup.md`\n5. For debugging, consult `references/troubleshooting.md`\n\n## When to Use This Skill\n\n- When scvi-tools, scVI, scANVI, or related models are mentioned\n- When deep learning-based batch correction or integration is needed\n- When working with multi-modal data (CITE-seq, multiome)\n- When reference mapping or label transfer is required\n- When analyzing ATAC-seq or spatial transcriptomics data\n- When learning latent representations of single-cell data\n\n## Model Selection Guide\n\n| Data Type | Model | Primary Use Case |\n|-----------|-------|------------------|\n| scRNA-seq | **scVI** | Unsupervised integration, DE, imputation |\n| scRNA-seq + labels | **scANVI** | Label transfer, semi-supervised integration |\n| CITE-seq (RNA+protein) | **totalVI** | Multi-modal integration, protein denoising |\n| scATAC-seq | **PeakVI** | Chromatin accessibility analysis |\n| Multiome (RNA+ATAC) | **MultiVI** | Joint modality analysis |\n| Spatial + scRNA reference | **DestVI** | Cell type deconvolution |\n| RNA velocity | **veloVI** | Transcriptional dynamics |\n| Cross-technology | **sysVI** | System-level batch correction |\n\n## Workflow Reference Files\n\n| Workflow | Reference File | Description |\n|----------|---------------|-------------|\n| Environment Setup | `references/environment_setup.md` | Installation, GPU, version info |\n| Data Preparation | `references/data_preparation.md` | Formatting data for any model |\n| scRNA Integration | `references/scrna_integration.md` | scVI/scANVI batch correction |\n| ATAC-seq Analysis | `references/atac_peakvi.md` | PeakVI for accessibility |\n| CITE-seq Analysis | `references/citeseq_totalvi.md` | totalVI for protein+RNA |\n| Multiome Analysis | `references/multiome_multivi.md` | MultiVI for RNA+ATAC |\n| Spatial Deconvolution | `references/spatial_deconvolution.md` | DestVI spatial analysis |\n| Label Transfer | `references/label_transfer.md` | scANVI reference mapping |\n| scArches Mapping | `references/scarches_mapping.md` | Query-to-reference mapping |\n| Batch Correction | `references/batch_correction_sysvi.md` | Advanced batch methods |\n| RNA Velocity | `references/rna_velocity_velovi.md` | veloVI dynamics |\n| Troubleshooting | `references/troubleshooting.md` | Common issues and solutions |\n\n## CLI Scripts\n\nModular scripts for common workflows. Chain together or modify as needed.\n\n### Pipeline Scripts\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `prepare_data.py` | QC, filter, HVG selection | `python scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch` |\n| `train_model.py` | Train any scvi-tools model | `python scripts/train_model.py prepared.h5ad results/ --model scvi` |\n| `cluster_embed.py` | Neighbors, UMAP, Leiden | `python scripts/cluster_embed.py adata.h5ad results/` |\n| `differential_expression.py` | DE analysis | `python scripts/differential_expression.py model/ adata.h5ad de.csv --groupby leiden` |\n| `transfer_labels.py` | Label transfer with scANVI | `python scripts/transfer_labels.py ref_model/ query.h5ad results/` |\n| `integrate_datasets.py` | Multi-dataset integration | `python scripts/integrate_datasets.py results/ data1.h5ad data2.h5ad` |\n| `validate_adata.py` | Check data compatibility | `python scripts/validate_adata.py data.h5ad --batch-key batch` |\n\n### Example Workflow\n\n```bash\n# 1. Validate input data\npython scripts/validate_adata.py raw.h5ad --batch-key batch --suggest\n\n# 2. Prepare data (QC, HVG selection)\npython scripts/prepare_data.py raw.h5ad prepared.h5ad --batch-key batch --n-hvgs 2000\n\n# 3. Train model\npython scripts/train_model.py prepared.h5ad results/ --model scvi --batch-key batch\n\n# 4. Cluster and visualize\npython scripts/cluster_embed.py results/adata_trained.h5ad results/ --resolution 0.8\n\n# 5. Differential expression\npython scripts/differential_expression.py results/model results/adata_clustered.h5ad results/de.csv --groupby leiden\n```\n\n### Python Utilities\n\nThe `scripts/model_utils.py` provides importable functions for custom workflows:\n\n| Function | Purpose |\n|----------|---------|\n| `prepare_adata()` | Data preparation (QC, HVG, layer setup) |\n| `train_scvi()` | Train scVI or scANVI |\n| `evaluate_integration()` | Compute integration metrics |\n| `get_marker_genes()` | Extract DE markers |\n| `save_results()` | Save model, data, plots |\n| `auto_select_model()` | Suggest best model |\n| `quick_clustering()` | Neighbors + UMAP + Leiden |\n\n## Critical Requirements\n\n1. **Raw counts required**: scvi-tools models require integer count data\n   ```python\n   adata.layers[\"counts\"] = adata.X.copy()  # Before normalization\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\")\n   ```\n\n2. **HVG selection**: Use 2000-4000 highly variable genes\n   ```python\n   sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key=\"batch\", layer=\"counts\", flavor=\"seurat_v3\")\n   adata = adata[:, adata.var['highly_variable']].copy()\n   ```\n\n3. **Batch information**: Specify batch_key for integration\n   ```python\n   scvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n   ```\n\n## Quick Decision Tree\n\n```\nNeed to integrate scRNA-seq data?\n├── Have cell type labels? → scANVI (references/label_transfer.md)\n└── No labels? → scVI (references/scrna_integration.md)\n\nHave multi-modal data?\n├── CITE-seq (RNA + protein)? → totalVI (references/citeseq_totalvi.md)\n├── Multiome (RNA + ATAC)? → MultiVI (references/multiome_multivi.md)\n└── scATAC-seq only? → PeakVI (references/atac_peakvi.md)\n\nHave spatial data?\n└── Need cell type deconvolution? → DestVI (references/spatial_deconvolution.md)\n\nHave pre-trained reference model?\n└── Map query to reference? → scArches (references/scarches_mapping.md)\n\nNeed RNA velocity?\n└── veloVI (references/rna_velocity_velovi.md)\n\nStrong cross-technology batch effects?\n└── sysVI (references/batch_correction_sysvi.md)\n```\n\n## Key Resources\n\n- [scvi-tools Documentation](https://docs.scvi-tools.org/)\n- [scvi-tools Tutorials](https://docs.scvi-tools.org/en/stable/tutorials/index.html)\n- [Model Hub](https://huggingface.co/scvi-tools)\n- [GitHub Issues](https://github.com/scverse/scvi-tools/issues)\n","frontmatter":{"name":"scvi-tools","description":"Deep learning for single-cell analysis using scvi-tools. This skill should be used when users need (1) data integration and batch correction with scVI/scANVI, (2) ATAC-seq analysis with PeakVI, (3) CITE-seq multi-modal analysis with totalVI, (4) multiome RNA+ATAC analysis with MultiVI, (5) spatial transcriptomics deconvolution with DestVI, (6) label transfer and reference mapping with scANVI/scArches, (7) RNA velocity with veloVI, or (8) any deep learning-based single-cell method. Triggers include mentions of scVI, scANVI, totalVI, PeakVI, MultiVI, DestVI, veloVI, sysVI, scArches, variational autoencoder, VAE, batch correction, data integration, multi-modal, CITE-seq, multiome, reference mapping, latent space."},"isInternal":false,"tokens":1868,"sizeBytes":7423},{"name":"scverse_qc_guidelines.md","path":"bio-research/skills/single-cell-rna-qc/references/scverse_qc_guidelines.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/single-cell-rna-qc/references/scverse_qc_guidelines.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# scverse Quality Control Guidelines\n\nThis document provides detailed information about quality control best practices for single-cell RNA-seq data, following the scverse ecosystem recommendations.\n\n## Quality Control Metrics\n\n### Count Depth (Total Counts)\n- **What it measures**: Total number of UMI/reads per cell\n- **Why it matters**: Low count cells may be empty droplets, debris, or poorly captured cells\n- **Typical range**: 500-50,000 counts per cell (varies by protocol)\n- **Red flags**: Bimodal distributions may indicate mixing of high and low-quality cells\n\n### Gene Detection (Genes per Cell)\n- **What it measures**: Number of genes with at least 1 count\n- **Why it matters**: Strongly correlates with count depth; low values indicate poor capture\n- **Typical range**: 200-5,000 genes per cell\n- **Red flags**: Very low values (<200) suggest technical failures\n\n### Mitochondrial Content\n- **What it measures**: Percentage of counts from mitochondrial genes\n- **Why it matters**: High MT% indicates cell stress, apoptosis, or lysed cells\n- **Typical range**: <5% for most tissues, up to 10-15% for metabolically active cells\n- **Species-specific patterns**:\n  - Mouse: Genes start with 'mt-' (e.g., mt-Nd1, mt-Co1)\n  - Human: Genes start with 'MT-' (e.g., MT-ND1, MT-CO1)\n- **Context matters**: Some cell types (cardiomyocytes, neurons) naturally have higher MT content\n\n### Ribosomal Content\n- **What it measures**: Percentage of counts from ribosomal protein genes\n- **Why it matters**: Can indicate cell state or contamination\n- **Patterns**: Genes start with 'Rpl'/'RPL' (large subunit) or 'Rps'/'RPS' (small subunit)\n- **Note**: High ribosomal content isn't always bad - metabolically active cells have more ribosomes\n\n### Hemoglobin Content\n- **What it measures**: Percentage of counts from hemoglobin genes\n- **Why it matters**: Indicates blood contamination in non-blood tissues\n- **Patterns**: Genes matching '^Hb[^(p)]' or '^HB[^(P)]' (excludes Hbp1/HBP1)\n- **When to use**: Particularly important for tissue samples (brain, liver, etc.)\n\n## MAD-Based Filtering Rationale\n\n### Why MAD Instead of Fixed Thresholds?\n\nFixed thresholds (e.g., \"remove cells with <500 genes\") fail because:\n- Different protocols yield different ranges\n- Different tissues have different characteristics\n- Different species have different gene counts\n- Fixed thresholds are arbitrary and not data-driven\n\nMAD (Median Absolute Deviation) is robust to outliers and adapts to your dataset:\n```\nMAD = median(|X - median(X)|)\nOutlier bounds = median ± n_MADs × MAD\n```\n\n### Recommended MAD Thresholds\n\nFollowing scverse best practices (deliberately permissive):\n\n**5 MADs for count depth (log-transformed)**\n- Very permissive to retain rare cell populations\n- Catches extreme outliers (empty droplets, debris)\n- Log transformation handles the typical right-skewed distribution\n\n**5 MADs for gene counts (log-transformed)**\n- Parallels count depth filtering\n- Most informative when combined with count filtering\n- Log transformation normalizes the distribution\n\n**3 MADs for mitochondrial percentage**\n- More stringent because high MT% strongly indicates dying cells\n- Uses raw percentages (not log-transformed)\n- Combined with hard threshold for extra stringency\n\n**Hard threshold: 8% mitochondrial content**\n- Additional filter beyond MAD-based detection\n- Conservative cutoff that works across most tissues\n- Adjust higher (10-15%) for metabolically active cell types\n\n### Why Be Permissive?\n\nThe default thresholds intentionally err on the side of keeping cells because:\n1. **Rare populations**: Stringent filtering may remove rare but viable cell types\n2. **Biological variation**: Some healthy cells naturally have extreme values\n3. **Reversibility**: Easier to filter more later than to recover lost cells\n4. **Downstream robustness**: Modern normalization methods handle moderate quality variation\n\n## Interpreting QC Visualizations\n\n### Histograms\n- **Bimodal distributions**: May indicate mixing of cell types or quality issues\n- **Long tails**: Common for count depth; MAD filtering handles this\n- **Sharp cutoffs**: May indicate prior filtering or technical artifacts\n\n### Violin Plots\n- Shows distribution shape and density\n- Median (line) and mean (diamond) should be similar for symmetric distributions\n- Wide distributions suggest high heterogeneity\n\n### Scatter Plots\n\n**Counts vs Genes (colored by MT%)**\n- Should show strong positive correlation (R² > 0.8 typical)\n- Points deviating from trend may be outliers\n- High MT% cells often cluster at low counts/genes\n\n**Counts vs MT%**\n- Negative correlation expected (dying cells have fewer counts)\n- Vertical stratification may indicate batch effects\n- Cells with high counts + high MT% are suspicious\n\n**Genes vs MT%**\n- Similar to counts vs MT%, but often weaker correlation\n- Useful for identifying cells with gene detection issues\n\n## Gene Filtering\n\nAfter filtering cells, remove genes detected in fewer than 20 cells:\n- **Why 20?**: Balances noise reduction with information retention\n- **Benefits**: Reduces dataset size, speeds up computation, removes noisy genes\n- **Trade-offs**: May lose very rare markers; adjust to 10 if studying rare populations\n\n## Species-Specific Considerations\n\n### Mouse (Mus musculus)\n- Mitochondrial genes: mt-* (lowercase)\n- Ribosomal genes: Rpl*, Rps* (capitalized first letter)\n- Hemoglobin genes: Hb* (but not Hbp1)\n\n### Human (Homo sapiens)\n- Mitochondrial genes: MT-* (uppercase)\n- Ribosomal genes: RPL*, RPS* (all uppercase)\n- Hemoglobin genes: HB* (but not HBP1)\n\n### Other Species\nAdjust gene name patterns in the script to match your organism's gene nomenclature. Consult Ensembl or your reference annotation for correct prefixes.\n\n## When to Adjust Parameters\n\nConsider adjusting filtering thresholds when:\n\n**More stringent (lower MADs)**\n- High ambient RNA contamination suspected\n- Many low-quality cells observed in visualizations\n- Downstream analysis shows quality-driven clustering\n\n**More permissive (higher MADs)**\n- Studying rare cell populations\n- Dataset has high technical quality\n- Cell types naturally have extreme values (e.g., neurons with high MT%)\n\n**Tissue-specific adjustments**\n- Brain/neurons: May need higher MT% threshold (10-15%)\n- Blood: Can be more stringent with MT% (5-8%)\n- Tumor samples: Often need more permissive thresholds due to biological variation\n\n## Advanced QC Considerations\n\n### Not Included in This Workflow\n\n**Ambient RNA correction**\n- Tool: SoupX, CellBender, DecontX\n- When: High background RNA in droplet-based data\n- Effect: Removes contamination from lysed cells\n\n**Doublet detection**\n- Tool: scDblFinder, scrublet, DoubletFinder\n- When: Always recommended for droplet-based data\n- Effect: Identifies and removes multiplets (2+ cells in one droplet)\n\n**Cell cycle scoring**\n- Tool: scanpy's score_genes_cell_cycle\n- When: Cell cycle effects confound biological signal\n- Effect: Allows regressing out or accounting for cell cycle phase\n\n**Batch correction**\n- Tool: Harmony, scVI, ComBat\n- When: Integrating data from multiple batches/experiments\n- Effect: Removes technical batch effects while preserving biology\n\n## References\n\n- scverse Best Practices: https://www.sc-best-practices.org/preprocessing_visualization/quality_control.html\n- Luecken & Theis (2019): Current best practices in single-cell RNA-seq analysis\n- Osorio & Cai (2021): Systematic determination of the mitochondrial proportion in human and mouse genomes\n- Germain et al. (2020): Doublet identification in single-cell sequencing data using scDblFinder\n","isInternal":false,"tokens":1744,"sizeBytes":7587},{"name":"SKILL.md","path":"bio-research/skills/single-cell-rna-qc/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/single-cell-rna-qc/SKILL.md","title":"single-cell-rna-qc","category":"anthropic-skill","format":"markdown","content":"---\nname: single-cell-rna-qc\ndescription: Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations. Use when users request QC analysis, filtering low-quality cells, assessing data quality, or following scverse/scanpy best practices for single-cell analysis.\n---\n\n# Single-Cell RNA-seq Quality Control\n\nAutomated QC workflow for single-cell RNA-seq data following scverse best practices.\n\n## When to Use This Skill\n\nUse when users:\n- Request quality control or QC on single-cell RNA-seq data\n- Want to filter low-quality cells or assess data quality\n- Need QC visualizations or metrics\n- Ask to follow scverse/scanpy best practices\n- Request MAD-based filtering or outlier detection\n\n**Supported input formats:**\n- `.h5ad` files (AnnData format from scanpy/Python workflows)\n- `.h5` files (10X Genomics Cell Ranger output)\n\n**Default recommendation**: Use Approach 1 (complete pipeline) unless the user has specific custom requirements or explicitly requests non-standard filtering logic.\n\n## Approach 1: Complete QC Pipeline (Recommended for Standard Workflows)\n\nFor standard QC following scverse best practices, use the convenience script `scripts/qc_analysis.py`:\n\n```bash\npython3 scripts/qc_analysis.py input.h5ad\n# or for 10X Genomics .h5 files:\npython3 scripts/qc_analysis.py raw_feature_bc_matrix.h5\n```\n\nThe script automatically detects the file format and loads it appropriately.\n\n**When to use this approach:**\n- Standard QC workflow with adjustable thresholds (all cells filtered the same way)\n- Batch processing multiple datasets\n- Quick exploratory analysis\n- User wants the \"just works\" solution\n\n**Requirements:** anndata, scanpy, scipy, matplotlib, seaborn, numpy\n\n**Parameters:**\n\nCustomize filtering thresholds and gene patterns using command-line parameters:\n- `--output-dir` - Output directory\n- `--mad-counts`, `--mad-genes`, `--mad-mt` - MAD thresholds for counts/genes/MT%\n- `--mt-threshold` - Hard mitochondrial % cutoff\n- `--min-cells` - Gene filtering threshold\n- `--mt-pattern`, `--ribo-pattern`, `--hb-pattern` - Gene name patterns for different species\n\nUse `--help` to see current default values.\n\n**Outputs:**\n\nAll files are saved to `<input_basename>_qc_results/` directory by default (or to the directory specified by `--output-dir`):\n- `qc_metrics_before_filtering.png` - Pre-filtering visualizations\n- `qc_filtering_thresholds.png` - MAD-based threshold overlays\n- `qc_metrics_after_filtering.png` - Post-filtering quality metrics\n- `<input_basename>_filtered.h5ad` - Clean, filtered dataset ready for downstream analysis\n- `<input_basename>_with_qc.h5ad` - Original data with QC annotations preserved\n\nIf copying outputs for user access, copy individual files (not the entire directory) so users can preview them directly.\n\n### Workflow Steps\n\nThe script performs the following steps:\n\n1. **Calculate QC metrics** - Count depth, gene detection, mitochondrial/ribosomal/hemoglobin content\n2. **Apply MAD-based filtering** - Permissive outlier detection using MAD thresholds for counts/genes/MT%\n3. **Filter genes** - Remove genes detected in few cells\n4. **Generate visualizations** - Comprehensive before/after plots with threshold overlays\n\n## Approach 2: Modular Building Blocks (For Custom Workflows)\n\nFor custom analysis workflows or non-standard requirements, use the modular utility functions from `scripts/qc_core.py` and `scripts/qc_plotting.py`:\n\n```python\n# Run from scripts/ directory, or add scripts/ to sys.path if needed\nimport anndata as ad\nfrom qc_core import calculate_qc_metrics, detect_outliers_mad, filter_cells\nfrom qc_plotting import plot_qc_distributions  # Only if visualization needed\n\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n# ... custom analysis logic here\n```\n\n**When to use this approach:**\n- Different workflow needed (skip steps, change order, apply different thresholds to subsets)\n- Conditional logic (e.g., filter neurons differently than other cells)\n- Partial execution (only metrics/visualization, no filtering)\n- Integration with other analysis steps in a larger pipeline\n- Custom filtering criteria beyond what command-line params support\n\n**Available utility functions:**\n\nFrom `qc_core.py` (core QC operations):\n- `calculate_qc_metrics(adata, mt_pattern, ribo_pattern, hb_pattern, inplace=True)` - Calculate QC metrics and annotate adata\n- `detect_outliers_mad(adata, metric, n_mads, verbose=True)` - MAD-based outlier detection, returns boolean mask\n- `apply_hard_threshold(adata, metric, threshold, operator='>', verbose=True)` - Apply hard cutoffs, returns boolean mask\n- `filter_cells(adata, mask, inplace=False)` - Apply boolean mask to filter cells\n- `filter_genes(adata, min_cells=20, min_counts=None, inplace=True)` - Filter genes by detection\n- `print_qc_summary(adata, label='')` - Print summary statistics\n\nFrom `qc_plotting.py` (visualization):\n- `plot_qc_distributions(adata, output_path, title)` - Generate comprehensive QC plots\n- `plot_filtering_thresholds(adata, outlier_masks, thresholds, output_path)` - Visualize filtering thresholds\n- `plot_qc_after_filtering(adata, output_path)` - Generate post-filtering plots\n\n**Example custom workflows:**\n\n**Example 1: Only calculate metrics and visualize, don't filter yet**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\nplot_qc_distributions(adata, 'qc_before.png', title='Initial QC')\nprint_qc_summary(adata, label='Before filtering')\n```\n\n**Example 2: Apply only MT% filtering, keep other metrics permissive**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Only filter high MT% cells\nhigh_mt = apply_hard_threshold(adata, 'pct_counts_mt', 10, operator='>')\nadata_filtered = filter_cells(adata, ~high_mt)\nadata_filtered.write('filtered.h5ad')\n```\n\n**Example 3: Different thresholds for different subsets**\n```python\nadata = ad.read_h5ad('input.h5ad')\ncalculate_qc_metrics(adata, inplace=True)\n\n# Apply type-specific QC (assumes cell_type metadata exists)\nneurons = adata.obs['cell_type'] == 'neuron'\nother_cells = ~neurons\n\n# Neurons tolerate higher MT%, other cells use stricter threshold\nneuron_qc = apply_hard_threshold(adata[neurons], 'pct_counts_mt', 15, operator='>')\nother_qc = apply_hard_threshold(adata[other_cells], 'pct_counts_mt', 8, operator='>')\n```\n\n## Best Practices\n\n1. **Be permissive with filtering** - Default thresholds intentionally retain most cells to avoid losing rare populations\n2. **Inspect visualizations** - Always review before/after plots to ensure filtering makes biological sense\n3. **Consider dataset-specific factors** - Some tissues naturally have higher mitochondrial content (e.g., neurons, cardiomyocytes)\n4. **Check gene annotations** - Mitochondrial gene prefixes vary by species (mt- for mouse, MT- for human)\n5. **Iterate if needed** - QC parameters may need adjustment based on the specific experiment or tissue type\n\n## Reference Materials\n\nFor detailed QC methodology, parameter rationale, and troubleshooting guidance, see `references/scverse_qc_guidelines.md`. This reference provides:\n- Detailed explanations of each QC metric and why it matters\n- Rationale for MAD-based thresholds and why they're better than fixed cutoffs\n- Guidelines for interpreting QC visualizations (histograms, violin plots, scatter plots)\n- Species-specific considerations for gene annotations\n- When and how to adjust filtering parameters\n- Advanced QC considerations (ambient RNA correction, doublet detection)\n\nLoad this reference when users need deeper understanding of the methodology or when troubleshooting QC issues.\n\n## Next Steps After QC\n\nTypical downstream analysis steps:\n- Ambient RNA correction (SoupX, CellBender)\n- Doublet detection (scDblFinder)\n- Normalization (log-normalize, scran)\n- Feature selection and dimensionality reduction\n- Clustering and cell type annotation\n","frontmatter":{"name":"single-cell-rna-qc","description":"Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations. Use when users request QC analysis, filtering low-quality cells, assessing data quality, or following scverse/scanpy best practices for single-cell analysis."},"isInternal":false,"tokens":1813,"sizeBytes":7980},{"name":"SKILL.md","path":"bio-research/skills/start/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/skills/start/SKILL.md","title":"start","category":"anthropic-skill","format":"markdown","content":"---\nname: start\ndescription: Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which literature, drug-discovery, or visualization MCP servers are connected, or surveying available analysis skills before starting a new project.\n---\n\n# Bio-Research Start\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nYou are helping a biological researcher get oriented with the bio-research plugin. Walk through the following steps in order.\n\n## Step 1: Welcome\n\nDisplay this welcome message:\n\n```\nBio-Research Plugin\n\nYour AI-powered research assistant for the life sciences. This plugin brings\ntogether literature search, data analysis pipelines,\nand scientific strategy — all in one place.\n```\n\n## Step 2: Check Available MCP Servers\n\nTest which MCP servers are connected by listing available tools. Group the results:\n\n**Literature & Data Sources:**\n- ~~literature database — biomedical literature search\n- ~~literature database — preprint access (biology and medicine)\n- ~~journal access — academic publications\n- ~~data repository — collaborative research data (Sage Bionetworks)\n\n**Drug Discovery & Clinical:**\n- ~~chemical database — bioactive compound database\n- ~~drug target database — drug target discovery platform\n- ClinicalTrials.gov — clinical trial registry\n- ~~clinical data platform — clinical trial site ranking and platform help\n\n**Visualization & AI:**\n- ~~scientific illustration — create scientific figures and diagrams\n- ~~AI research platform — AI for biology (histopathology, drug discovery)\n\nReport which servers are connected and which are not yet set up.\n\n## Step 3: Survey Available Skills\n\nList the analysis skills available in this plugin:\n\n| Skill | What It Does |\n|-------|-------------|\n| **Single-Cell RNA QC** | Quality control for scRNA-seq data with MAD-based filtering |\n| **scvi-tools** | Deep learning for single-cell omics (scVI, scANVI, totalVI, PeakVI, etc.) |\n| **Nextflow Pipelines** | Run nf-core pipelines (RNA-seq, WGS/WES, ATAC-seq) |\n| **Instrument Data Converter** | Convert lab instrument output to Allotrope ASM format |\n| **Scientific Problem Selection** | Systematic framework for choosing research problems |\n\n## Step 4: Optional Setup — Binary MCP Servers\n\nMention that two additional MCP servers are available as separate installations:\n\n- **~~genomics platform** — Access cloud analysis data and workflows\n  Install: Download `txg-node.mcpb` from https://github.com/10XGenomics/txg-mcp/releases\n- **~~tool database** (Harvard MIMS) — AI tools for scientific discovery\n  Install: Download `tooluniverse.mcpb` from https://github.com/mims-harvard/ToolUniverse/releases\n\nThese require downloading binary files and are optional.\n\n## Step 5: Ask How to Help\n\nAsk the researcher what they're working on today. Suggest starting points based on common workflows:\n\n1. **Literature review** — \"Search ~~literature database for recent papers on [topic]\"\n2. **Analyze sequencing data** — \"Run QC on my single-cell data\" or \"Set up an RNA-seq pipeline\"\n3. **Drug discovery** — \"Search ~~chemical database for compounds targeting [protein]\" or \"Find drug targets for [disease]\"\n4. **Data standardization** — \"Convert my instrument data to Allotrope format\"\n5. **Research strategy** — \"Help me evaluate a new project idea\"\n\nWait for the user's response and guide them to the appropriate tools and skills.\n","frontmatter":{"name":"start","description":"Set up your bio-research environment and explore available tools. Use when first getting oriented with the plugin, checking which literature, drug-discovery, or visualization MCP servers are connected, or surveying available analysis skills before starting a new project."},"isInternal":false,"tokens":773,"sizeBytes":3526},{"name":"customized-mcp.json","path":"cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/cowork-plugin-customizer/examples/customized-mcp.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${GITHUB_TOKEN}\"\n      }\n    },\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    },\n    \"figma\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.figma.com/mcp\"\n    },\n    \"datadog\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.datadoghq.com/mcp\",\n      \"headers\": {\n        \"DD-API-KEY\": \"${DATADOG_API_KEY}\",\n        \"DD-APPLICATION-KEY\": \"${DATADOG_APP_KEY}\"\n      }\n    }\n  },\n  \"recommendedCategories\": [\n    \"source-control\",\n    \"project-management\",\n    \"chat\",\n    \"documents\",\n    \"wiki-knowledge-base\",\n    \"design-graphics\",\n    \"analytics-bi\"\n  ]\n}\n","frontmatter":{"mcpServers":{"github":{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer ${GITHUB_TOKEN}"}},"asana":{"type":"sse","url":"https://mcp.asana.com/sse"},"slack":{"type":"http","url":"https://slack.mcp.claude.com/mcp"},"figma":{"type":"http","url":"https://mcp.figma.com/mcp"},"datadog":{"type":"http","url":"https://api.datadoghq.com/mcp","headers":{"DD-API-KEY":"${DATADOG_API_KEY}","DD-APPLICATION-KEY":"${DATADOG_APP_KEY}"}}},"recommendedCategories":["source-control","project-management","chat","documents","wiki-knowledge-base","design-graphics","analytics-bi"]},"isInternal":false,"tokens":262,"sizeBytes":853},{"name":"mcp-servers.md","path":"cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/cowork-plugin-customizer/references/mcp-servers.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# MCP Discovery and Connection\n\nHow to find and connect MCPs during plugin customization.\n\n## Available Tools\n\n### `search_mcp_registry`\nSearch the MCP directory for available connectors.\n\n**Input:** `{ \"keywords\": [\"array\", \"of\", \"search\", \"terms\"] }`\n\n**Output:** Up to 10 results, each with:\n- `name`: MCP display name\n- `description`: One-liner description\n- `tools`: List of tool names the MCP provides\n- `url`: MCP endpoint URL (use this in `.mcp.json`)\n- `directoryUuid`: UUID for use with suggest_connectors\n- `connected`: Boolean - whether user has this MCP connected\n\n### `suggest_connectors`\nDisplay Connect buttons to let users install/connect MCPs.\n\n**Input:** `{ \"directoryUuids\": [\"uuid1\", \"uuid2\"] }`\n\n**Output:** Renders UI with Connect buttons for each MCP\n\n## Category-to-Keywords Mapping\n\n| Category | Search Keywords |\n|----------|-----------------|\n| `project-management` | `[\"asana\", \"jira\", \"linear\", \"monday\", \"tasks\"]` |\n| `software-coding` | `[\"github\", \"gitlab\", \"bitbucket\", \"code\"]` |\n| `chat` | `[\"slack\", \"teams\", \"discord\"]` |\n| `documents` | `[\"google docs\", \"notion\", \"confluence\"]` |\n| `calendar` | `[\"google calendar\", \"calendar\"]` |\n| `email` | `[\"gmail\", \"outlook\", \"email\"]` |\n| `design-graphics` | `[\"figma\", \"sketch\", \"design\"]` |\n| `analytics-bi` | `[\"datadog\", \"grafana\", \"analytics\"]` |\n| `crm` | `[\"salesforce\", \"hubspot\", \"crm\"]` |\n| `wiki-knowledge-base` | `[\"notion\", \"confluence\", \"outline\", \"wiki\"]` |\n| `data-warehouse` | `[\"bigquery\", \"snowflake\", \"redshift\"]` |\n| `conversation-intelligence` | `[\"gong\", \"chorus\", \"call recording\"]` |\n\n## Workflow\n\n1. **Find customization point**: Look for `~~`-prefixed values (e.g., `~~Jira`)\n2. **Check earlier phase findings**: Did you already learn which tool they use?\n   - **Yes**: Search for that specific tool to get its `url`, skip to step 5\n   - **No**: Continue to step 3\n3. **Search**: Call `search_mcp_registry` with mapped keywords\n4. **Present choices and ask user**: Show all results, ask which they use\n5. **Connect if needed**: If not connected, call `suggest_connectors`\n6. **Update MCP config**: Add config using the `url` from search results\n\n## Updating Plugin MCP Configuration\n\n### Finding the Config File\n\n1. **Check `plugin.json`** for an `mcpServers` field:\n   ```json\n   {\n     \"name\": \"my-plugin\",\n     \"mcpServers\": \"./config/servers.json\"\n   }\n   ```\n   If present, edit the file at that path.\n\n2. **If no `mcpServers` field**, use `.mcp.json` at the plugin root (default).\n\n3. **If `mcpServers` points only to `.mcpb` files** (bundled servers), create a new `.mcp.json` at the plugin root.\n\n### Config File Format\n\nBoth wrapped and unwrapped formats are supported:\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\nUse the `url` field from `search_mcp_registry` results.\n\n### Directory Entries Without a URL\n\nSome directory entries have no `url` because the endpoint is dynamic — the admin provides it when connecting the server. These servers can still be referenced in the plugin's MCP config by **name**: if the MCP server name in the config matches the directory entry name, it is treated the same as a URL match.","isInternal":false,"tokens":884,"sizeBytes":3224},{"name":"search-strategies.md","path":"cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/cowork-plugin-customizer/references/search-strategies.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Knowledge MCP Search Strategies\n\nQuery patterns for gathering organizational context during plugin customization.\n\n## Finding Tool Names\n\n**Source control:**\n- Search: \"GitHub\" OR \"GitLab\" OR \"Bitbucket\"\n- Search: \"pull request\" OR \"merge request\"\n- Look for: repository links, CI/CD mentions\n\n**Project management:**\n- Search: \"Asana\" OR \"Jira\" OR \"Linear\" OR \"Monday\"\n- Search: \"sprint\" AND \"tickets\"\n- Look for: task links, project board mentions\n\n**Chat:**\n- Search: \"Slack\" OR \"Teams\" OR \"Discord\"\n- Look for: channel mentions, integration discussions\n\n**Analytics:**\n- Search: \"Datadog\" OR \"Grafana\" OR \"Mixpanel\"\n- Search: \"monitoring\" OR \"observability\"\n- Look for: dashboard links, alert configurations\n\n**Design:**\n- Search: \"Figma\" OR \"Sketch\" OR \"Adobe XD\"\n- Look for: design file links, handoff discussions\n\n**CRM:**\n- Search: \"Salesforce\" OR \"HubSpot\"\n- Look for: deal mentions, customer record links\n\n## Finding Organization Values\n\n**Workspace/project IDs:**\n- Search for existing integrations or bookmarked links\n- Look for admin/setup documentation\n\n**Team conventions:**\n- Search: \"story points\" OR \"estimation\"\n- Search: \"workflow\" OR \"ticket status\"\n- Look for engineering process docs\n\n**Channel/team names:**\n- Search: \"standup\" OR \"engineering\" OR \"releases\"\n- Look for channel naming patterns\n\n## When Knowledge MCPs Are Unavailable\n\nIf no knowledge MCPs are configured, skip automatic discovery and proceed directly to AskUserQuestion for all categories. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n","isInternal":false,"tokens":405,"sizeBytes":1629},{"name":"SKILL.md","path":"cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md","title":"cowork-plugin-customizer","category":"anthropic-skill","format":"markdown","content":"---\nname: cowork-plugin-customizer\ndescription: >\n  Customize a Claude Code plugin for a specific organization's tools and workflows.\n  Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings,\n  customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration.\ncompatibility: Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins).\n---\n\n# Cowork Plugin Customization\n\nCustomize a plugin for a specific organization — either by setting up a generic plugin template for the first time, or by tweaking and refining an already-configured plugin.\n\n> **Finding the plugin**: To find the plugin's source files, run `find mnt/.local-plugins mnt/.plugins -type d -name \"*<plugin-name>*\"` to locate the plugin directory, then read its files to understand its structure before making changes. If you cannot find the plugin directory, the user is likely running this conversation in a remote container. Abort and let them know: \"Customizing plugins is currently only available in the desktop app's Cowork mode.\"\n\n## Determining the Customization Mode\n\nAfter locating the plugin, check for `~~`-prefixed placeholders: `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'`\n\n> **Default rule**: If `~~` placeholders exist, default to **Generic plugin setup** unless the user explicitly asks to customize a specific part of the plugin.\n\n**1. Generic plugin setup** — The plugin contains `~~`-prefixed placeholders. These are customization points in a template that need to be replaced with real values (e.g., `~~Jira` → `Asana`, `~~your-team-channel` → `#engineering`).\n\n**2. Scoped customization** — No `~~` placeholders exist, and the user asked to customize a specific part of the plugin (e.g., \"customize the connectors\", \"update the standup skill\", \"change the ticket tool\"). Read the plugin files to find the relevant section(s) and focus only on those. Do not scan the entire plugin or present unrelated customization items.\n\n> **Legacy `commands/` directories**: Some plugins include a `commands/` directory. The Cowork UI now presents these alongside skills as a single \"Skills\" concept, so treat `commands/*.md` files the same way you would `skills/*/SKILL.md` files when customizing.\n\n**3. General customization** — No `~~` placeholders exist, and the user wants to modify the plugin broadly. Read the plugin's files to understand its current configuration, then ask the user what they'd like to change.\n\n> **Important**: Never change the name of the plugin or skill being customized. Do not rename directories, files, or the plugin/skill name fields.\n\n> **Nontechnical output**: All user-facing output (todo list items, questions, summaries) must be written in plain, nontechnical language. Never mention `~~` prefixes, placeholders, or customization points to the user. Frame everything in terms of the plugin's capabilities and the organization's tools.\n\n## Customization Workflow\n\n### Phase 0: Gather User Intent (scoped and general customization only)\n\nFor **scoped customization** and **general customization** (not generic plugin setup), check whether the user provided free-form context alongside their request (e.g., \"customize the standup skill — we do async standups in #eng-updates every morning\").\n\n- **If the user provided context**: Record it and use it to pre-fill answers in Phase 3 — skip asking questions that the user already answered here.\n- **If the user did not provide context**: Ask a single open-ended question using AskUserQuestion before proceeding. Tailor the question to what they asked to customize — e.g., \"What changes do you have in mind for the brief skill?\" or \"What would you like to change about how this plugin works?\" Keep it short and specific to their request.\n\n  Use their response (if any) as additional context throughout the remaining phases.\n\n### Phase 1: Gather Context from Knowledge MCPs\n\nUse company-internal knowledge MCPs to collect information relevant to the customization scope. See `references/search-strategies.md` for detailed query patterns by category.\n\n**What to gather** (scope to what's relevant):\n\n- Tool names and services the organization uses\n- Organizational processes and workflows\n- Team conventions (naming, statuses, estimation scales)\n- Configuration values (workspace IDs, project names, team identifiers)\n\n**Sources to search:**\n\n1. **Chat/Slack MCPs** — tool mentions, integrations, workflow discussions\n2. **Document MCPs** — onboarding docs, tool guides, setup instructions\n3. **Email MCPs** — license notifications, admin emails, setup invitations\n\nRecord all findings for use in Phase 3.\n\n### Phase 2: Create Todo List\n\nBuild a todo list of changes to make, scoped appropriately:\n\n- **For scoped customization**: Only include items related to the specific section the user asked about.\n- **For generic plugin setup**: Run `grep -rn '~~\\w' /path/to/plugin --include='*.md' --include='*.json'` to find all placeholder customization points. Group them by theme.\n- **For general customization**: Read the plugin files, understand the current config, and based on the user's request, identify what needs to change.\n\nUse user-friendly descriptions that focus on the plugin's purpose:\n\n- **Good**: \"Learn how standup prep works at Company\"\n- **Bad**: \"Replace placeholders in skills/standup-prep/SKILL.md\"\n\n### Phase 3: Complete Todo Items\n\nWork through each item using context from Phase 0 and Phase 1.\n\n**If the user's free-form input (Phase 0) or knowledge MCPs (Phase 1) provided a clear answer**: Apply directly without confirmation.\n\n**Otherwise**: Use AskUserQuestion. Don't assume \"industry standard\" defaults are correct — if neither the user's input nor knowledge MCPs provided a specific answer, ask. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n**Types of changes:**\n\n1. **Placeholder replacements** (generic setup): `~~Jira` → `Asana`, `~~your-org-channel` → `#engineering`\n2. **Content updates**: Modifying instructions, skills, workflows, or references to match the organization\n3. **URL pattern updates**: `tickets.example.com/your-team/123` → `app.asana.com/0/PROJECT_ID/TASK_ID`\n4. **Configuration values**: Workspace IDs, project names, team identifiers\n\nIf user doesn't know or skips, leave the value unchanged (or the `~~`-prefixed placeholder, for generic setup).\n\n### Phase 4: Search for Useful MCPs\n\nAfter customization items have been resolved, connect MCPs for any tools that were identified or changed. See `references/mcp-servers.md` for the full workflow, category-to-keywords mapping, and config file format.\n\nFor each tool identified during customization:\n\n1. Search the registry: `search_mcp_registry(keywords=[...])` using category keywords from `references/mcp-servers.md`, or search for the specific tool name if already known\n2. If unconnected: `suggest_connectors(directoryUuids=[\"chosen-uuid\"])` — user completes auth\n3. Update the plugin's MCP config file (check `plugin.json` for custom location, otherwise `.mcp.json` at root)\n\nCollect all MCP results and present them together in the summary output (see below) — don't present MCPs one at a time during this phase.\n\n## Packaging the Plugin\n\nAfter all customizations are applied, package the plugin as a `.plugin` file for the user:\n\n1. **Zip the plugin directory** (excluding `setup/` since it's no longer needed):\n   ```bash\n   cd /path/to/plugin && zip -r /tmp/plugin-name.plugin . -x \"setup/*\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n   ```\n2. **Present the file to the user** with the `.plugin` extension so they can install it directly. (Presenting the .plugin file will show to the user as a rich preview where they can look through the plugin files, and they can accept the customization by pressing a button.)\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions and leave behind temporary files.\n\n> **Naming**: Use the original plugin directory name for the `.plugin` file (e.g., if the plugin directory is `coder`, the output file should be `coder.plugin`). Do not rename the plugin or its files during customization — only replace placeholder values and update content.\n\n## Summary Output\n\nAfter customization, present the user with a summary of what was learned grouped by source. Always include the MCPs sections showing which MCPs were connected during setup and which ones the user should still connect:\n\n```markdown\n## From searching Slack\n\n- You use Asana for project management\n- Sprint cycles are 2 weeks\n\n## From searching documents\n\n- Story points use T-shirt sizes\n\n## From your answers\n\n- Ticket statuses are: Backlog, In Progress, In Review, Done\n```\n\nThen present the MCPs that were connected during setup and any that the user should still connect, with instructions on how to connect them.\n\nIf no knowledge MCPs were available in Phase 1, and the user had to answer at least one question manually, include a note at the end:\n\n> By the way, connecting sources like Slack or Microsoft Teams would let me find answers automatically next time you customize a plugin.\n\n## Additional Resources\n\n- **`references/mcp-servers.md`** — MCP discovery workflow, category-to-keywords mapping, config file locations\n- **`references/search-strategies.md`** — Knowledge MCP query patterns for finding tool names and org values\n- **`examples/customized-mcp.json`** — Example fully configured `.mcp.json`\n","frontmatter":{"name":"cowork-plugin-customizer","description":"Customize a Claude Code plugin for a specific organization's tools and workflows. Use when: customize plugin, set up plugin, configure plugin, tailor plugin, adjust plugin settings, customize plugin connectors, customize plugin skill, tweak plugin, modify plugin configuration.\n","compatibility":"Requires Cowork desktop app environment with access to mounted plugin directories (mnt/.local-plugins, mnt/.plugins)."},"isInternal":false,"tokens":2116,"sizeBytes":9702},{"name":"component-schemas.md","path":"cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/create-cowork-plugin/references/component-schemas.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Component Schemas\n\nDetailed format specifications for every plugin component type. Reference this when implementing components in Phase 4.\n\n## Skills\n\n**Location**: `skills/skill-name/SKILL.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                             |\n| ------------- | -------- | ------ | ------------------------------------------------------- |\n| `name`        | Yes      | String | Skill identifier (lowercase, hyphens; matches dir name) |\n| `description` | Yes      | String | Third-person description with trigger phrases           |\n| `metadata`    | No       | Map    | Arbitrary key-value pairs (e.g., `version`, `author`)   |\n\n### Example Skill\n\n```yaml\n---\nname: api-design\ndescription: >\n  This skill should be used when the user asks to \"design an API\",\n  \"create API endpoints\", \"review API structure\", or needs guidance\n  on REST API best practices, endpoint naming, or request/response design.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n### Writing Style Rules\n\n- **Frontmatter description**: Third-person (\"This skill should be used when...\"), with specific trigger phrases in quotes.\n- **Body**: Imperative/infinitive form (\"Parse the config file,\" not \"You should parse the config file\").\n- **Length**: Keep SKILL.md body under 3,000 words (ideally 1,500-2,000). Move detailed content to `references/`.\n\n### Skill Directory Structure\n\n```\nskill-name/\n├── SKILL.md              # Core knowledge (required)\n├── references/           # Detailed docs loaded on demand\n│   ├── patterns.md\n│   └── advanced.md\n├── examples/             # Working code examples\n│   └── sample-config.json\n└── scripts/              # Utility scripts\n    └── validate.sh\n```\n\n### Progressive Disclosure Levels\n\n1. **Metadata** (always in context): name + description (~100 words)\n2. **SKILL.md body** (when skill triggers): core knowledge (<5k words)\n3. **Bundled resources** (as needed): references, examples, scripts (unlimited)\n\n## Agents\n\n**Location**: `agents/agent-name.md`\n**Format**: Markdown with YAML frontmatter\n\n### Frontmatter Fields\n\n| Field         | Required | Type   | Description                                         |\n| ------------- | -------- | ------ | --------------------------------------------------- |\n| `name`        | Yes      | String | Lowercase, hyphens, 3-50 chars                      |\n| `description` | Yes      | String | Triggering conditions with `<example>` blocks       |\n| `model`       | Yes      | String | `inherit`, `sonnet`, `opus`, or `haiku`             |\n| `color`       | Yes      | String | `blue`, `cyan`, `green`, `yellow`, `magenta`, `red` |\n| `tools`       | No       | Array  | Restrict to specific tools                          |\n\n### Example Agent\n\n```markdown\n---\nname: code-reviewer\ndescription: Use this agent when the user asks for a thorough code review or wants detailed analysis of code quality, security, and best practices.\n\n<example>\nContext: User has just written a new module\nuser: \"Can you do a deep review of this code?\"\nassistant: \"I'll use the code-reviewer agent to provide a thorough analysis.\"\n<commentary>\nUser explicitly requested a detailed review, which matches this agent's specialty.\n</commentary>\n</example>\n\n<example>\nContext: User is about to merge a PR\nuser: \"Review this before I merge\"\nassistant: \"Let me run a comprehensive review using the code-reviewer agent.\"\n<commentary>\nPre-merge review benefits from the agent's structured analysis process.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: blue\ntools: [\"Read\", \"Grep\", \"Glob\"]\n---\n\nYou are a code review specialist focused on identifying issues across security, performance, maintainability, and correctness.\n\n**Your Core Responsibilities:**\n\n1. Analyze code structure and organization\n2. Identify security vulnerabilities\n3. Flag performance concerns\n4. Check adherence to best practices\n\n**Analysis Process:**\n\n1. Read all files in scope\n2. Identify patterns and anti-patterns\n3. Categorize findings by severity\n4. Provide specific remediation suggestions\n\n**Output Format:**\nPresent findings grouped by severity (Critical, Warning, Info) with:\n\n- File path and line number\n- Description of the issue\n- Suggested fix\n```\n\n### Agent Naming Rules\n\n- 3-50 characters\n- Lowercase letters, numbers, hyphens only\n- Must start and end with alphanumeric\n- No underscores, spaces, or special characters\n\n### Color Guidelines\n\n- Blue/Cyan: Analysis, review\n- Green: Success-oriented tasks\n- Yellow: Caution, validation\n- Red: Critical, security\n- Magenta: Creative, generation\n\n## Hooks\n\n**Location**: `hooks/hooks.json`\n**Format**: JSON\n\n### Available Events\n\n| Event              | When it fires                   |\n| ------------------ | ------------------------------- |\n| `PreToolUse`       | Before a tool call executes     |\n| `PostToolUse`      | After a tool call completes     |\n| `Stop`             | When Claude finishes a response |\n| `SubagentStop`     | When a subagent finishes        |\n| `SessionStart`     | When a session begins           |\n| `SessionEnd`       | When a session ends             |\n| `UserPromptSubmit` | When the user sends a message   |\n| `PreCompact`       | Before context compaction       |\n| `Notification`     | When a notification fires       |\n\n### Hook Types\n\n**Prompt-based** (recommended for complex logic):\n\n```json\n{\n  \"type\": \"prompt\",\n  \"prompt\": \"Evaluate whether this file write follows project conventions: $TOOL_INPUT\",\n  \"timeout\": 30\n}\n```\n\nSupported events: Stop, SubagentStop, UserPromptSubmit, PreToolUse.\n\n**Command-based** (deterministic checks):\n\n```json\n{\n  \"type\": \"command\",\n  \"command\": \"bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate.sh\",\n  \"timeout\": 60\n}\n```\n\n### Example hooks.json\n\n```json\n{\n  \"PreToolUse\": [\n    {\n      \"matcher\": \"Write|Edit\",\n      \"hooks\": [\n        {\n          \"type\": \"prompt\",\n          \"prompt\": \"Check that this file write follows project coding standards. If it violates standards, explain why and block.\",\n          \"timeout\": 30\n        }\n      ]\n    }\n  ],\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"cat ${CLAUDE_PLUGIN_ROOT}/context/project-context.md\",\n          \"timeout\": 10\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Hook Output Format (Command Hooks)\n\nCommand hooks return JSON to stdout:\n\n```json\n{\n  \"decision\": \"block\",\n  \"reason\": \"File write violates naming convention\"\n}\n```\n\nDecisions: `approve`, `block`, `ask_user` (ask for confirmation).\n\n## MCP Servers\n\n**Location**: `.mcp.json` at plugin root\n**Format**: JSON\n\n### Server Types\n\n**stdio** (local process):\n\n```json\n{\n  \"mcpServers\": {\n    \"my-server\": {\n      \"command\": \"node\",\n      \"args\": [\"${CLAUDE_PLUGIN_ROOT}/servers/server.js\"],\n      \"env\": {\n        \"API_KEY\": \"${API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n**SSE** (remote server, server-sent events transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"asana\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.asana.com/sse\"\n    }\n  }\n}\n```\n\n**HTTP** (remote server, streamable HTTP transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"api-service\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.example.com/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${API_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n### Environment Variable Expansion\n\nAll MCP configs support `${VAR_NAME}` substitution:\n\n- `${CLAUDE_PLUGIN_ROOT}` — plugin directory (always use for portability)\n- `${ANY_ENV_VAR}` — user environment variables\n\nDocument all required environment variables in the plugin README.\n\n### Directory Servers Without a URL\n\nSome MCP directory entries have no `url` because the endpoint is dynamic. Plugins can reference these servers by **name** instead — if the server name in the plugin's MCP config matches the directory entry name, it is treated the same as a URL match.\n\n## Commands (Legacy)\n\n> **Prefer `skills/*/SKILL.md` for new plugins.** The Cowork UI now presents commands and skills as a single \"Skills\" concept. The `commands/` format still works, but only use it if you specifically need the single-file format with `$ARGUMENTS`/`$1` substitution and inline bash execution.\n\n**Location**: `commands/command-name.md`\n**Format**: Markdown with optional YAML frontmatter\n\n### Frontmatter Fields\n\n| Field           | Required | Type            | Description                                         |\n| --------------- | -------- | --------------- | --------------------------------------------------- |\n| `description`   | No       | String          | Brief description shown in `/help` (under 60 chars) |\n| `allowed-tools` | No       | String or Array | Tools the command can use                           |\n| `model`         | No       | String          | Model override: `sonnet`, `opus`, `haiku`           |\n| `argument-hint` | No       | String          | Documents expected arguments for autocomplete       |\n\n### Example Command\n\n```markdown\n---\ndescription: Review code for security issues\nallowed-tools: Read, Grep, Bash(git:*)\nargument-hint: [file-path]\n---\n\nReview @$1 for security vulnerabilities including:\n\n- SQL injection\n- XSS attacks\n- Authentication bypass\n- Insecure data handling\n\nProvide specific line numbers, severity ratings, and remediation suggestions.\n```\n\n### Key Rules\n\n- Commands are instructions FOR Claude, not messages for the user. Write them as directives.\n- `$ARGUMENTS` captures all arguments as a single string; `$1`, `$2`, `$3` capture positional arguments.\n- `@path` syntax includes file contents in the command context.\n- `!` backtick syntax executes bash inline for dynamic context (e.g., `` !`git diff --name-only` ``).\n- Use `${CLAUDE_PLUGIN_ROOT}` to reference plugin files portably.\n\n### allowed-tools Patterns\n\n```yaml\n# Specific tools\nallowed-tools: Read, Write, Edit, Bash(git:*)\n\n# Bash with specific commands only\nallowed-tools: Bash(npm:*), Read\n\n# MCP tools (specific)\nallowed-tools: [\"mcp__plugin_name_server__tool_name\"]\n```\n\n## CONNECTORS.md\n\n**Location**: Plugin root\n**When to create**: When the plugin references external tools by category rather than specific product\n\n### Format\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. For example, `~~project tracker` might mean\nAsana, Linear, Jira, or any other project tracker with an MCP server.\n\nPlugins are tool-agnostic — they describe workflows in terms of categories\nrather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options            |\n| --------------- | ------------------- | ---------------- | ------------------------ |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday      |\n```\n\n### Using ~~ Placeholders\n\nIn plugin files (skills, agents), reference tools generically:\n\n```markdown\nCheck ~~project tracker for open tickets assigned to the user.\nPost a summary to ~~chat in the team channel.\n```\n\nDuring customization (via the cowork-plugin-customizer skill), these get replaced with specific tool names.\n\n## README.md\n\nEvery plugin should include a README with:\n\n1. **Overview** — what the plugin does\n2. **Components** — list of skills, agents, hooks, MCP servers\n3. **Setup** — any required environment variables or configuration\n4. **Usage** — how to trigger each skill\n5. **Customization** — if CONNECTORS.md exists, mention it\n","isInternal":false,"tokens":2681,"sizeBytes":11674},{"name":"example-plugins.md","path":"cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Example Plugins\n\nThree complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.\n\n## Minimal Plugin: Single Skill\n\nA simple plugin with one skill and no other components.\n\n### Structure\n\n```\nmeeting-notes/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   └── meeting-notes/\n│       └── SKILL.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"meeting-notes\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Generate structured meeting notes from transcripts\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/meeting-notes/SKILL.md\n\n```markdown\n---\nname: meeting-notes\ndescription: >\n  Generate structured meeting notes from a transcript. Use when the user asks\n  to \"summarize this meeting\", \"create meeting notes\", \"extract action items\n  from this transcript\", or provides a meeting transcript file.\n---\n\nRead the transcript file the user provided and generate structured meeting notes.\n\nInclude these sections:\n\n1. **Attendees** — list all participants mentioned\n2. **Summary** — 2-3 sentence overview of the meeting\n3. **Key Decisions** — numbered list of decisions made\n4. **Action Items** — table with columns: Owner, Task, Due Date\n5. **Open Questions** — anything unresolved\n\nWrite the notes to a new file named after the transcript with `-notes` appended.\n```\n\n---\n\n## Standard Plugin: Skills + MCP\n\nA plugin that combines domain knowledge, user-initiated actions, and external service integration.\n\n### Structure\n\n```\ncode-quality/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── coding-standards/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── style-rules.md\n│   ├── review-changes/\n│   │   └── SKILL.md\n│   └── fix-lint/\n│       └── SKILL.md\n├── .mcp.json\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"code-quality\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Enforce coding standards with reviews, linting, and style guidance\",\n  \"author\": {\n    \"name\": \"User\"\n  }\n}\n```\n\n### skills/review-changes/SKILL.md\n\n```markdown\n---\nname: review-changes\ndescription: >\n  Review code changes for style and quality issues. Use when the user asks to\n  \"review my changes\", \"check this diff\", \"review for style violations\", or\n  wants a code quality pass on uncommitted work.\n---\n\nRun `git diff --name-only` to get the list of changed files.\n\nFor each changed file:\n\n1. Read the file\n2. Check against the coding-standards skill for style violations\n3. Identify potential bugs or anti-patterns\n4. Flag any security concerns\n\nPresent a summary with:\n\n- File path\n- Issue severity (Error, Warning, Info)\n- Description and suggested fix\n```\n\n### skills/fix-lint/SKILL.md\n\n```markdown\n---\nname: fix-lint\ndescription: >\n  Auto-fix linting issues in changed files. Use when the user asks to\n  \"fix lint errors\", \"clean up linting\", or \"auto-fix my lint issues\".\n---\n\nRun the linter: `npm run lint -- --format json 2>&1`\n\nParse the linter output and fix each issue:\n\n- For auto-fixable issues, apply the fix directly\n- For manual-fix issues, make the correction following project conventions\n- Skip issues that require architectural changes\n\nAfter all fixes, run the linter again to confirm clean output.\n```\n\n### skills/coding-standards/SKILL.md\n\n```yaml\n---\nname: coding-standards\ndescription: >\n  This skill should be used when the user asks about \"coding standards\",\n  \"style guide\", \"naming conventions\", \"code formatting rules\", or needs\n  guidance on project-specific code quality expectations.\nmetadata:\n  version: \"0.1.0\"\n---\n```\n\n```markdown\n# Coding Standards\n\nProject coding standards and conventions for consistent, high-quality code.\n\n## Core Rules\n\n- Use camelCase for variables and functions\n- Use PascalCase for classes and types\n- Prefer const over let; avoid var\n- Maximum line length: 100 characters\n- Use explicit return types on all exported functions\n\n## Import Order\n\n1. External packages\n2. Internal packages (aliased with @/)\n3. Relative imports\n4. Type-only imports last\n\n## Additional Resources\n\n- **`references/style-rules.md`** — complete style rules by language\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    }\n  }\n}\n```\n\n---\n\n## Full-Featured Plugin: All Component Types\n\nA plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors.\n\n### Structure\n\n```\nengineering-workflow/\n├── .claude-plugin/\n│   └── plugin.json\n├── skills/\n│   ├── team-processes/\n│   │   ├── SKILL.md\n│   │   └── references/\n│   │       └── workflow-guide.md\n│   ├── standup-prep/\n│   │   └── SKILL.md\n│   └── create-ticket/\n│       └── SKILL.md\n├── agents/\n│   └── ticket-analyzer.md\n├── hooks/\n│   └── hooks.json\n├── .mcp.json\n├── CONNECTORS.md\n└── README.md\n```\n\n### plugin.json\n\n```json\n{\n  \"name\": \"engineering-workflow\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Streamline engineering workflows: standup prep, ticket management, and code quality\",\n  \"author\": {\n    \"name\": \"User\"\n  },\n  \"keywords\": [\"engineering\", \"workflow\", \"tickets\", \"standup\"]\n}\n```\n\n### agents/ticket-analyzer.md\n\n```markdown\n---\nname: ticket-analyzer\ndescription: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog.\n\n<example>\nContext: User is preparing for sprint planning\nuser: \"Help me triage these new tickets\"\nassistant: \"I'll use the ticket-analyzer agent to review and categorize the tickets.\"\n<commentary>\nTicket triage requires systematic analysis across multiple dimensions, making the agent appropriate.\n</commentary>\n</example>\n\n<example>\nContext: User has a large backlog\nuser: \"Prioritize my backlog for next sprint\"\nassistant: \"Let me analyze the backlog using the ticket-analyzer agent to recommend priorities.\"\n<commentary>\nBacklog prioritization is a multi-step autonomous task well-suited for the agent.\n</commentary>\n</example>\n\nmodel: inherit\ncolor: cyan\ntools: [\"Read\", \"Grep\"]\n---\n\nYou are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies.\n\n**Your Core Responsibilities:**\n\n1. Categorize tickets by type (bug, feature, tech debt, improvement)\n2. Estimate relative effort (S, M, L, XL)\n3. Identify dependencies between tickets\n4. Recommend priority ordering\n\n**Analysis Process:**\n\n1. Read all ticket descriptions\n2. Categorize each by type\n3. Estimate effort based on scope\n4. Map dependencies\n5. Rank by impact-to-effort ratio\n\n**Output Format:**\n| Ticket | Type | Effort | Dependencies | Priority |\n|--------|------|--------|-------------|----------|\n| ... | ... | ... | ... | ... |\n\nFollowed by a brief rationale for the top 5 priorities.\n```\n\n### hooks/hooks.json\n\n```json\n{\n  \"SessionStart\": [\n    {\n      \"matcher\": \"\",\n      \"hooks\": [\n        {\n          \"type\": \"command\",\n          \"command\": \"echo '## Team Context\\n\\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'\",\n          \"timeout\": 5\n        }\n      ]\n    }\n  ]\n}\n```\n\n### CONNECTORS.md\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Included servers | Other options       |\n| --------------- | ------------------- | ---------------- | ------------------- |\n| Project tracker | `~~project tracker` | Linear           | Asana, Jira, Monday |\n| Chat            | `~~chat`            | Slack            | Microsoft Teams     |\n| Source control  | `~~source control`  | GitHub           | GitLab, Bitbucket   |\n```\n\n### .mcp.json\n\n```json\n{\n  \"mcpServers\": {\n    \"linear\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.linear.app/sse\"\n    },\n    \"github\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.githubcopilot.com/mcp/\"\n    },\n    \"slack\": {\n      \"type\": \"http\",\n      \"url\": \"https://slack.mcp.claude.com/mcp\"\n    }\n  }\n}\n```\n","isInternal":false,"tokens":2060,"sizeBytes":8272},{"name":"SKILL.md","path":"cowork-plugin-management/skills/create-cowork-plugin/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/skills/create-cowork-plugin/SKILL.md","title":"create-cowork-plugin","category":"anthropic-skill","format":"markdown","content":"---\nname: create-cowork-plugin\ndescription: >\n  Guide users through creating a new plugin from scratch in a cowork session.\n  Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin.\n  This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file.\ncompatibility: Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files.\n---\n\n# Create Cowork Plugin\n\nBuild a new plugin from scratch through guided conversation. Walk the user through discovery, planning, design, implementation, and packaging — delivering a ready-to-install `.plugin` file at the end.\n\n## Overview\n\nA plugin is a self-contained directory that extends Claude's capabilities with skills, agents, hooks, and MCP server integrations. This skill encodes the full plugin architecture and a five-phase workflow for creating one conversationally.\n\nThe process:\n\n1. **Discovery** — understand what the user wants to build\n2. **Component Planning** — determine which component types are needed\n3. **Design & Clarifying Questions** — specify each component in detail\n4. **Implementation** — create all plugin files\n5. **Review & Package** — deliver the `.plugin` file\n\n> **Nontechnical output**: Keep all user-facing conversation in plain language. Do not expose implementation details like file paths, directory structures, or schema fields unless the user asks. Frame everything in terms of what the plugin will do.\n\n## Plugin Architecture\n\n### Directory Structure\n\nEvery plugin follows this layout:\n\n```\nplugin-name/\n├── .claude-plugin/\n│   └── plugin.json           # Required: plugin manifest\n├── skills/                   # Skills (subdirectories with SKILL.md)\n│   └── skill-name/\n│       ├── SKILL.md\n│       └── references/\n├── agents/                   # Subagent definitions (.md files)\n├── .mcp.json                 # MCP server definitions\n└── README.md                 # Plugin documentation\n```\n\n> **Legacy `commands/` format**: Older plugins may include a `commands/` directory with single-file `.md` slash commands. This format still works, but new plugins should use `skills/*/SKILL.md` instead — the Cowork UI presents both as a single \"Skills\" concept, and the skills format supports progressive disclosure via `references/`.\n\n**Rules:**\n\n- `.claude-plugin/plugin.json` is always required\n- Component directories (`skills/`, `agents/`) go at the plugin root, not inside `.claude-plugin/`\n- Only create directories for components the plugin actually uses\n- Use kebab-case for all directory and file names\n\n### plugin.json Manifest\n\nLocated at `.claude-plugin/plugin.json`. Minimal required field is `name`.\n\n```json\n{\n  \"name\": \"plugin-name\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Brief explanation of plugin purpose\",\n  \"author\": {\n    \"name\": \"Author Name\"\n  }\n}\n```\n\n**Name rules:** kebab-case, lowercase with hyphens, no spaces or special characters.\n**Version:** semver format (MAJOR.MINOR.PATCH). Start at `0.1.0`.\n\nOptional fields: `homepage`, `repository`, `license`, `keywords`.\n\nCustom component paths can be specified (supplements, does not replace, auto-discovery):\n\n```json\n{\n  \"commands\": \"./custom-commands\",\n  \"agents\": [\"./agents\", \"./specialized-agents\"],\n  \"hooks\": \"./config/hooks.json\",\n  \"mcpServers\": \"./.mcp.json\"\n}\n```\n\n### Component Schemas\n\nDetailed schemas for each component type are in `references/component-schemas.md`. Summary:\n\n| Component                          | Location            | Format                      |\n| ---------------------------------- | ------------------- | --------------------------- |\n| Skills                             | `skills/*/SKILL.md` | Markdown + YAML frontmatter |\n| MCP Servers                        | `.mcp.json`         | JSON                        |\n| Agents (uncommonly used in Cowork) | `agents/*.md`       | Markdown + YAML frontmatter |\n| Hooks (rarely used in Cowork)      | `hooks/hooks.json`  | JSON                        |\n| Commands (legacy)                  | `commands/*.md`     | Markdown + YAML frontmatter |\n\nThis schema is shared with Claude Code's plugin system, but you're creating a plugin for Claude Cowork, a desktop app for doing knowledge work.\nCowork users will usually find skills the most useful. **Scaffold new plugins with `skills/*/SKILL.md` — do not create `commands/` unless the user explicitly needs the legacy single-file format.**\n\n### Customizable plugins with `~~` placeholders\n\n> **Do not use or ask about this pattern by default.** Only introduce `~~` placeholders if the user explicitly says they want people outside their organization to use the plugin.\n> You can mention this is an option if it seems like the user wants to distribute the plugin externally, but do not proactively ask about this with AskUserQuestion.\n\nWhen a plugin is intended to be shared with others outside their company, it might have parts that need to be adapted to individual users.\nYou might need to reference external tools by category rather than specific product (e.g., \"project tracker\" instead of \"Jira\").\nWhen sharing is needed, use generic language and mark these as requiring customization with two tilde characters such as `create an issue in ~~project tracker`.\nIf used any tool categories, write a `CONNECTORS.md` file at the plugin root to explain:\n\n```markdown\n# Connectors\n\n## How tool references work\n\nPlugin files use `~~category` as a placeholder for whatever tool the user\nconnects in that category. Plugins are tool-agnostic — they describe\nworkflows in terms of categories rather than specific products.\n\n## Connectors for this plugin\n\n| Category        | Placeholder         | Options                         |\n| --------------- | ------------------- | ------------------------------- |\n| Chat            | `~~chat`            | Slack, Microsoft Teams, Discord |\n| Project tracker | `~~project tracker` | Linear, Asana, Jira             |\n```\n\n### ${CLAUDE_PLUGIN_ROOT} Variable\n\nUse `${CLAUDE_PLUGIN_ROOT}` for all intra-plugin path references in hooks and MCP configs. Never hardcode absolute paths.\n\n## Guided Workflow\n\nWhen you ask the user something, use AskUserQuestion. Don't assume \"industry standard\" defaults are correct. Note: AskUserQuestion always includes a Skip button and a free-text input box for custom answers, so do not include `None` or `Other` as options.\n\n### Phase 1: Discovery\n\n**Goal**: Understand what the user wants to build and why.\n\nAsk (only what is unclear — skip questions if the user's initial request already answers them):\n\n- What should this plugin do? What problem does it solve?\n- Who will use it and in what context?\n- Does it integrate with any external tools or services?\n- Is there a similar plugin or workflow to reference?\n\nSummarize understanding and confirm before proceeding.\n\n**Output**: Clear statement of plugin purpose and scope.\n\n### Phase 2: Component Planning\n\n**Goal**: Determine which component types the plugin needs.\n\nBased on the discovery answers, determine:\n\n- **Skills** — Does it need specialized knowledge that Claude should load on-demand, or user-initiated actions? (domain expertise, reference schemas, workflow guides, deploy/configure/analyze/review actions)\n- **MCP Servers** — Does it need external service integration? (databases, APIs, SaaS tools)\n- **Agents (uncommon)** — Are there autonomous multi-step tasks? (validation, generation, analysis)\n- **Hooks (rare)** — Should something happen automatically on certain events? (enforce policies, load context, validate operations)\n\nPresent a component plan table, including component types you decided not to create:\n\n```\n| Component | Count | Purpose |\n|-----------|-------|---------|\n| Skills    | 3     | Domain knowledge for X, /do-thing, /check-thing |\n| Agents    | 0     | Not needed |\n| Hooks     | 1     | Validate writes |\n| MCP       | 1     | Connect to service Y |\n```\n\nGet user confirmation or adjustments before proceeding.\n\n**Output**: Confirmed list of components to create.\n\n### Phase 3: Design & Clarifying Questions\n\n**Goal**: Specify each component in detail. Resolve all ambiguities before implementation.\n\nFor each component type in the plan, ask targeted design questions. Present questions grouped by component type. Wait for answers before proceeding.\n\n**Skills:**\n\n- What user queries should trigger this skill?\n- What knowledge domains does it cover?\n- Should it include reference files for detailed content?\n- If the skill represents a user-initiated action: what arguments does it accept, and what tools does it need? (Read, Write, Bash, Grep, etc.)\n\n**Agents:**\n\n- Should each agent trigger proactively or only when requested?\n- What tools does it need?\n- What should the output format be?\n\n**Hooks:**\n\n- Which events? (PreToolUse, PostToolUse, Stop, SessionStart, etc.)\n- What behavior — validate, block, modify, add context?\n- Prompt-based (LLM-driven) or command-based (deterministic script)?\n\n**MCP Servers:**\n\n- What server type? (stdio for local, SSE for hosted with OAuth, HTTP for REST APIs)\n- What authentication method?\n- What tools should be exposed?\n\nIf the user says \"whatever you think is best,\" provide specific recommendations and get explicit confirmation.\n\n**Output**: Detailed specification for every component.\n\n### Phase 4: Implementation\n\n**Goal**: Create all plugin files following best practices.\n\n**Order of operations:**\n\n1. Create the plugin directory structure\n2. Create `plugin.json` manifest\n3. Create each component (see `references/component-schemas.md` for exact formats)\n4. Create `README.md` documenting the plugin\n\n**Implementation guidelines:**\n\n- **Skills** use progressive disclosure: lean SKILL.md body (under 3,000 words), detailed content in `references/`. Frontmatter description must be third-person with specific trigger phrases. Skill bodies are instructions FOR Claude, not messages to the user — write them as directives about what to do.\n- **Agents** need a description with `<example>` blocks showing triggering conditions, plus a system prompt in the markdown body.\n- **Hooks** config goes in `hooks/hooks.json`. Use `${CLAUDE_PLUGIN_ROOT}` for script paths. Prefer prompt-based hooks for complex logic.\n- **MCP configs** go in `.mcp.json` at plugin root. Use `${CLAUDE_PLUGIN_ROOT}` for local server paths. Document required env vars in README.\n\n### Phase 5: Review & Package\n\n**Goal**: Deliver the finished plugin.\n\n1. Summarize what was created — list each component and its purpose\n2. Ask if the user wants any adjustments\n3. Run `claude plugin validate <path-to-plugin-json>` to check the plugin structure. If this command is unavailable (e.g., when running inside Cowork), verify the structure manually:\n   - `.claude-plugin/plugin.json` exists and contains valid JSON with at least a `name` field\n   - The `name` field is kebab-case (lowercase letters, numbers, and hyphens only)\n   - Any component directories referenced by the plugin (`commands/`, `skills/`, `agents/`, `hooks/`) actually exist and contain files in the expected formats — `.md` for commands/skills/agents, `.json` for hooks\n   - Each skill subdirectory contains a `SKILL.md`\n   - Report what passed and what didn't, the same way the CLI validator would\n\n   Fix any errors before proceeding.\n4. Package as a `.plugin` file:\n\n```bash\ncd /path/to/plugin-dir && zip -r /tmp/plugin-name.plugin . -x \"*.DS_Store\" && cp /tmp/plugin-name.plugin /path/to/outputs/plugin-name.plugin\n```\n\n> **Important**: Always create the zip in `/tmp/` first, then copy to the outputs folder. Writing directly to the outputs folder may fail due to permissions.\n\n> **Naming**: Use the plugin name from `plugin.json` for the `.plugin` file (e.g., if name is `code-reviewer`, output `code-reviewer.plugin`).\n\nThe `.plugin` file will appear in the chat as a rich preview where the user can browse the files and accept the plugin by pressing a button.\n\n## Best Practices\n\n- **Start small**: Begin with the minimum viable set of components. A plugin with one well-crafted skill is more useful than one with five half-baked components.\n- **Progressive disclosure for skills**: Core knowledge in SKILL.md, detailed reference material in `references/`, working examples in `examples/`.\n- **Clear trigger phrases**: Skill descriptions should include specific phrases users would say. Agent descriptions should include `<example>` blocks.\n- **Skills are for Claude**: Write skill body content as instructions for Claude to follow, not documentation for the user to read.\n- **Imperative writing style**: Use verb-first instructions in skills (\"Parse the config file,\" not \"You should parse the config file\").\n- **Portability**: Always use `${CLAUDE_PLUGIN_ROOT}` for intra-plugin paths, never hardcoded paths.\n- **Security**: Use environment variables for credentials, HTTPS for remote servers, least-privilege tool access.\n\n## Additional Resources\n\n- **`references/component-schemas.md`** — Detailed format specifications for every component type (skills, agents, hooks, MCP, legacy commands, CONNECTORS.md)\n- **`references/example-plugins.md`** — Three complete example plugin structures at different complexity levels\n","frontmatter":{"name":"create-cowork-plugin","description":"Guide users through creating a new plugin from scratch in a cowork session. Use when users want to create a plugin, build a plugin, make a new plugin, develop a plugin, scaffold a plugin, start a plugin from scratch, or design a plugin. This skill requires Cowork mode with access to the outputs directory for delivering the final .plugin file.\n","compatibility":"Requires Cowork desktop app environment with access to the outputs directory for delivering .plugin files."},"isInternal":false,"tokens":2880,"sizeBytes":13354},{"name":"SKILL.md","path":"customer-support/skills/customer-escalation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/skills/customer-escalation/SKILL.md","title":"customer-escalation","category":"anthropic-skill","format":"markdown","content":"---\nname: customer-escalation\ndescription: Package an escalation for engineering, product, or leadership with full context. Use when a bug needs engineering attention beyond normal support, multiple customers report the same issue, a customer is threatening to churn, or an issue has sat unresolved past its SLA.\nargument-hint: \"<issue summary> [customer name]\"\n---\n\n# /customer-escalation\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).\n\nPackage a support issue into a structured escalation brief for engineering, product, or leadership. Gathers context, structures reproduction steps, assesses business impact, and identifies the right escalation target.\n\n## Usage\n\n```\n/customer-escalation <issue description> [customer name or account]\n```\n\nExamples:\n- `/customer-escalation API returning 500 errors intermittently for Acme Corp`\n- `/customer-escalation Data export is missing rows — 3 customers reported this week`\n- `/customer-escalation SSO login loop affecting all Enterprise customers`\n- `/customer-escalation Customer threatening to churn over missing audit log feature`\n\n## Workflow\n\n### 1. Understand the Issue\n\nParse the input and determine:\n\n- **What's broken or needed**: The core technical or product issue\n- **Who's affected**: Specific customer(s), segment, or all users\n- **How long**: When did this start? How long has the customer been waiting?\n- **What's been tried**: Any troubleshooting or workarounds attempted\n- **Why escalate now**: What makes this need attention beyond normal support\n\nUse the \"When to Escalate vs. Handle in Support\" criteria below to confirm this warrants escalation.\n\n### 2. Gather Context\n\nPull together relevant information from available sources:\n\n- **~~support platform**: Related tickets, timeline of communications, previous troubleshooting\n- **~~CRM** (if connected): Account details, key contacts, previous escalations\n- **~~chat**: Internal discussions about this issue, similar reports from other customers\n- **~~project tracker** (if connected): Related bug reports or feature requests, engineering status\n- **~~knowledge base**: Known issues or workarounds, relevant documentation\n\n### 3. Assess Business Impact\n\nUsing the impact dimensions below, quantify:\n\n- **Breadth**: How many customers/users affected? Growing?\n- **Depth**: Blocked vs. inconvenienced?\n- **Duration**: How long has this been going on?\n- **Revenue**: ARR at risk? Pending deals affected?\n- **Time pressure**: Hard deadline?\n\n### 4. Determine Escalation Target\n\nUsing the escalation tiers below, identify the right target: L2 Support, Engineering, Product, Security, or Leadership.\n\n### 5. Structure Reproduction Steps (for bugs)\n\nIf the issue is a bug, follow the reproduction step best practices below to document clear repro steps with environment details and evidence.\n\n### 6. Generate Escalation Brief\n\n```\n## ESCALATION: [One-line summary]\n\n**Severity:** [Critical / High / Medium]\n**Target team:** [Engineering / Product / Security / Leadership]\n**Reported by:** [Your name/team]\n**Date:** [Today's date]\n\n### Impact\n- **Customers affected:** [Who and how many]\n- **Workflow impact:** [What they can't do]\n- **Revenue at risk:** [If applicable]\n- **Time in queue:** [How long this has been an issue]\n\n### Issue Description\n[Clear, concise description of the problem — 3-5 sentences]\n\n### What's Been Tried\n1. [Troubleshooting step and result]\n2. [Troubleshooting step and result]\n3. [Troubleshooting step and result]\n\n### Reproduction Steps\n[If applicable — follow the format below]\n1. [Step]\n2. [Step]\n3. [Step]\nExpected: [X]\nActual: [Y]\nEnvironment: [Details]\n\n### Customer Communication\n- **Last update to customer:** [Date and what was communicated]\n- **Customer expectation:** [What they're expecting and by when]\n- **Escalation risk:** [Will they escalate further if not resolved by X?]\n\n### What's Needed\n- [Specific ask — \"investigate root cause\", \"prioritize fix\",\n  \"make product decision on X\", \"approve exception for Y\"]\n- **Deadline:** [When this needs resolution or an update]\n\n### Supporting Context\n- [Related tickets or links]\n- [Internal discussion threads]\n- [Documentation or logs]\n```\n\n### 7. Offer Next Steps\n\nAfter generating the escalation:\n- \"Want me to post this in a ~~chat channel for the target team?\"\n- \"Should I update the customer with an interim response?\"\n- \"Want me to set a follow-up reminder to check on this?\"\n- \"Should I draft a customer-facing update with the current status?\"\n\n---\n\n## When to Escalate vs. Handle in Support\n\n### Handle in Support When:\n- The issue has a documented solution or known workaround\n- It's a configuration or setup issue you can resolve\n- The customer needs guidance or training, not a fix\n- The issue is a known limitation with a documented alternative\n- Previous similar tickets were resolved at the support level\n\n### Escalate When:\n- **Technical**: Bug confirmed and needs a code fix, infrastructure investigation needed, data corruption or loss\n- **Complexity**: Issue is beyond support's ability to diagnose, requires access support doesn't have, involves custom implementation\n- **Impact**: Multiple customers affected, production system down, data integrity at risk, security concern\n- **Business**: High-value customer at risk, SLA breach imminent or occurred, customer requesting executive involvement\n- **Time**: Issue has been open beyond SLA, customer has been waiting unreasonably long, normal support channels aren't progressing\n- **Pattern**: Same issue reported by 3+ customers, recurring issue that was supposedly fixed, increasing severity over time\n\n## Escalation Tiers\n\n### L1 → L2 (Support Escalation)\n**From:** Frontline support\n**To:** Senior support / technical support specialists\n**When:** Issue requires deeper investigation, specialized product knowledge, or advanced troubleshooting\n**What to include:** Ticket summary, steps already tried, customer context\n\n### L2 → Engineering\n**From:** Senior support\n**To:** Engineering team (relevant product area)\n**When:** Confirmed bug, infrastructure issue, needs code change, requires system-level investigation\n**What to include:** Full reproduction steps, environment details, logs or error messages, business impact, customer timeline\n\n### L2 → Product\n**From:** Senior support\n**To:** Product management\n**When:** Feature gap causing customer pain, design decision needed, workflow doesn't match customer expectations, competing customer needs require prioritization\n**What to include:** Customer use case, business impact, frequency of request, competitive pressure (if known)\n\n### Any → Security\n**From:** Any support tier\n**To:** Security team\n**When:** Potential data exposure, unauthorized access, vulnerability report, compliance concern\n**What to include:** What was observed, who/what is potentially affected, immediate containment steps taken, urgency assessment\n**Note:** Security escalations bypass normal tier progression — escalate immediately regardless of your level\n\n### Any → Leadership\n**From:** Any tier (usually L2 or manager)\n**To:** Support leadership, executive team\n**When:** High-revenue customer threatening churn, SLA breach on critical account, cross-functional decision needed, exception to policy required, PR or legal risk\n**What to include:** Full business context, revenue at risk, what's been tried, specific decision or action needed, deadline\n\n## Business Impact Assessment\n\nWhen escalating, quantify impact where possible:\n\n### Impact Dimensions\n\n| Dimension | Questions to Answer |\n|-----------|-------------------|\n| **Breadth** | How many customers/users are affected? Is it growing? |\n| **Depth** | How severely are they impacted? Blocked vs. inconvenienced? |\n| **Duration** | How long has this been going on? How long until it's critical? |\n| **Revenue** | What's the ARR at risk? Are there pending deals affected? |\n| **Reputation** | Could this become public? Is it a reference customer? |\n| **Contractual** | Are SLAs being breached? Are there contractual obligations? |\n\n### Severity Shorthand\n\n- **Critical**: Production down, data at risk, security breach, or multiple high-value customers affected. Needs immediate attention.\n- **High**: Major functionality broken, key customer blocked, SLA at risk. Needs same-day attention.\n- **Medium**: Significant issue with workaround, important but not urgent business impact. Needs attention this week.\n\n## Writing Reproduction Steps\n\nGood reproduction steps are the single most valuable thing in a bug escalation. Follow these practices:\n\n1. **Start from a clean state**: Describe the starting point (account type, configuration, permissions)\n2. **Be specific**: \"Click the Export button in the top-right of the Dashboard page\" not \"try to export\"\n3. **Include exact values**: Use specific inputs, dates, IDs — not \"enter some data\"\n4. **Note the environment**: Browser, OS, account type, feature flags, plan level\n5. **Capture the frequency**: Always reproducible? Intermittent? Only under certain conditions?\n6. **Include evidence**: Screenshots, error messages (exact text), network logs, console output\n7. **Note what you've ruled out**: \"Tested in Chrome and Firefox — same behavior\" \"Not account-specific — reproduced on test account\"\n\n## Follow-up Cadence After Escalation\n\nDon't escalate and forget. Maintain ownership of the customer relationship.\n\n| Severity | Internal Follow-up | Customer Update |\n|----------|-------------------|-----------------|\n| **Critical** | Every 2 hours | Every 2-4 hours (or per SLA) |\n| **High** | Every 4 hours | Every 4-8 hours |\n| **Medium** | Daily | Every 1-2 business days |\n\n### Follow-up Actions\n- Check with the receiving team for progress\n- Update the customer even if there's no new information (\"We're still investigating — here's what we know so far\")\n- Adjust severity if the situation changes (better or worse)\n- Document all updates in the ticket for audit trail\n- Close the loop when resolved: confirm with customer, update internal tracking, capture learnings\n\n## De-escalation\n\nNot every escalation stays escalated. De-escalate when:\n- Root cause is found and it's a support-resolvable issue\n- A workaround is found that unblocks the customer\n- The issue resolves itself (but still document root cause)\n- New information changes the severity assessment\n\nWhen de-escalating:\n- Notify the team you escalated to\n- Update the ticket with the resolution\n- Inform the customer of the resolution\n- Document what was learned for future reference\n\n## Escalation Best Practices\n\n1. Always quantify impact — vague escalations get deprioritized\n2. Include reproduction steps for bugs — this is the #1 thing engineering needs\n3. Be clear about what you need — \"investigate\" vs. \"fix\" vs. \"decide\" are different asks\n4. Set and communicate a deadline — urgency without a deadline is ambiguous\n5. Maintain ownership of the customer relationship even after escalating the technical issue\n6. Follow up proactively — don't wait for the receiving team to come to you\n7. Document everything — the escalation trail is valuable for pattern detection and process improvement\n","frontmatter":{"name":"customer-escalation","description":"Package an escalation for engineering, product, or leadership with full context. Use when a bug needs engineering attention beyond normal support, multiple customers report the same issue, a customer is threatening to churn, or an issue has sat unresolved past its SLA.","argument-hint":"<issue summary> [customer name]"},"isInternal":false,"tokens":2405,"sizeBytes":11205},{"name":"SKILL.md","path":"customer-support/skills/customer-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/skills/customer-research/SKILL.md","title":"customer-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fcustomer-research%2FSKILL.md -->","frontmatter":{"name":"customer-research","description":"Multi-source research on a customer question or topic with source attribution. Use when a customer asks something you need to look up, investigating whether a bug has been reported before, checking what was previously told to a specific account, or gathering background before drafting a response.","argument-hint":"<question or topic>"},"isInternal":false,"tokens":2134,"sizeBytes":10232},{"name":"SKILL.md","path":"customer-support/skills/draft-response/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/skills/draft-response/SKILL.md","title":"draft-response","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fdraft-response%2FSKILL.md -->","frontmatter":{"name":"draft-response","description":"Draft a professional customer-facing response tailored to the situation and relationship. Use when answering a product question, responding to an escalation or outage, delivering bad news like a delay or won't-fix, declining a feature request, or replying to a billing issue.","argument-hint":"<situation description>"},"isInternal":false,"tokens":3257,"sizeBytes":14581},{"name":"SKILL.md","path":"customer-support/skills/kb-article/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/skills/kb-article/SKILL.md","title":"kb-article","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fkb-article%2FSKILL.md -->","frontmatter":{"name":"kb-article","description":"Draft a knowledge base article from a resolved issue or common question. Use when a ticket resolution is worth documenting for self-service, the same question keeps coming up, a workaround needs to be published, or a known issue should be communicated to customers.","argument-hint":"<resolved issue or ticket>"},"isInternal":false,"tokens":2738,"sizeBytes":12274},{"name":"SKILL.md","path":"customer-support/skills/ticket-triage/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/skills/ticket-triage/SKILL.md","title":"ticket-triage","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2Fskills%2Fticket-triage%2FSKILL.md -->","frontmatter":{"name":"ticket-triage","description":"Triage and prioritize a support ticket or customer issue. Use when a new ticket comes in and needs categorization, assigning P1-P4 priority, deciding which team should handle it, or checking whether it's a duplicate or known issue before routing.","argument-hint":"<ticket or issue description>"},"isInternal":false,"tokens":2457,"sizeBytes":11276},{"name":"SKILL.md","path":"data/skills/analyze/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/analyze/SKILL.md","title":"analyze","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fanalyze%2FSKILL.md -->","frontmatter":{"name":"analyze","description":"Answer data questions -- from quick lookups to full analyses. Use when looking up a single metric, investigating what's driving a trend or drop, comparing segments over time, or preparing a formal data report for stakeholders.","argument-hint":"<question>"},"isInternal":false,"tokens":949,"sizeBytes":4432},{"name":"SKILL.md","path":"data/skills/build-dashboard/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/build-dashboard/SKILL.md","title":"build-dashboard","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fbuild-dashboard%2FSKILL.md -->","frontmatter":{"name":"build-dashboard","description":"Build an interactive HTML dashboard with charts, filters, and tables. Use when creating an executive overview with KPI cards, turning query results into a shareable self-contained report, building a team monitoring snapshot, or needing multiple charts with filters in one browser-openable file.","argument-hint":"<description> [data source]"},"isInternal":false,"tokens":6037,"sizeBytes":26002},{"name":"SKILL.md","path":"data/skills/create-viz/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/create-viz/SKILL.md","title":"create-viz","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fcreate-viz%2FSKILL.md -->","frontmatter":{"name":"create-viz","description":"Create publication-quality visualizations with Python. Use when turning query results or a DataFrame into a chart, selecting the right chart type for a trend or comparison, generating a plot for a report or presentation, or needing an interactive chart with hover and zoom.","argument-hint":"<data source> [chart type]"},"isInternal":false,"tokens":1200,"sizeBytes":5151},{"name":"domain-template.md","path":"data/skills/data-context-extractor/references/domain-template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-context-extractor/references/domain-template.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fdomain-template.md -->","isInternal":false,"tokens":973,"sizeBytes":3490},{"name":"example-output.md","path":"data/skills/data-context-extractor/references/example-output.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-context-extractor/references/example-output.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fexample-output.md -->","isInternal":false,"tokens":1603,"sizeBytes":6247},{"name":"skill-template.md","path":"data/skills/data-context-extractor/references/skill-template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-context-extractor/references/skill-template.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fskill-template.md -->","isInternal":false,"tokens":1021,"sizeBytes":3820},{"name":"sql-dialects.md","path":"data/skills/data-context-extractor/references/sql-dialects.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-context-extractor/references/sql-dialects.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2Freferences%2Fsql-dialects.md -->","isInternal":false,"tokens":1302,"sizeBytes":4557},{"name":"SKILL.md","path":"data/skills/data-context-extractor/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-context-extractor/SKILL.md","title":"data-context-extractor","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-context-extractor%2FSKILL.md -->","frontmatter":{"name":"data-context-extractor","description":"Generate or improve a company-specific data analysis skill by extracting tribal knowledge from analysts.\nBOOTSTRAP MODE - Triggers: \"Create a data context skill\", \"Set up data analysis for our warehouse\", \"Help me create a skill for our database\", \"Generate a data skill for [company]\" → Discovers schemas, asks key questions, generates initial skill with reference files\nITERATION MODE - Triggers: \"Add context about [domain]\", \"The skill needs more info about [topic]\", \"Update the data skill with [metrics/tables/terminology]\", \"Improve the [domain] reference\" → Loads existing skill, asks targeted questions, appends/updates reference files\nUse when data analysts want Claude to understand their company's specific data warehouse, terminology, metrics definitions, and common query patterns.\n"},"isInternal":false,"tokens":1648,"sizeBytes":7233},{"name":"SKILL.md","path":"data/skills/data-visualization/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/data-visualization/SKILL.md","title":"data-visualization","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fdata-visualization%2FSKILL.md -->","frontmatter":{"name":"data-visualization","description":"Create effective data visualizations with Python (matplotlib, seaborn, plotly). Use when building charts, choosing the right chart type for a dataset, creating publication-quality figures, or applying design principles like accessibility and color theory.","user-invocable":false},"isInternal":false,"tokens":2801,"sizeBytes":11051},{"name":"SKILL.md","path":"data/skills/explore-data/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/explore-data/SKILL.md","title":"explore-data","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fexplore-data%2FSKILL.md -->","frontmatter":{"name":"explore-data","description":"Profile and explore a dataset to understand its shape, quality, and patterns. Use when encountering a new table or file, checking null rates and column distributions, spotting data quality issues like duplicates or suspicious values, or deciding which dimensions and metrics to analyze.","argument-hint":"<table or file>"},"isInternal":false,"tokens":2640,"sizeBytes":11520},{"name":"SKILL.md","path":"data/skills/sql-queries/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/sql-queries/SKILL.md","title":"sql-queries","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fsql-queries%2FSKILL.md -->","frontmatter":{"name":"sql-queries","description":"Write correct, performant SQL across all major data warehouse dialects (Snowflake, BigQuery, Databricks, PostgreSQL, etc.). Use when writing queries, optimizing slow SQL, translating between dialects, or building complex analytical queries with CTEs, window functions, or aggregations.","user-invocable":false},"isInternal":false,"tokens":2899,"sizeBytes":11126},{"name":"SKILL.md","path":"data/skills/statistical-analysis/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/statistical-analysis/SKILL.md","title":"statistical-analysis","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fstatistical-analysis%2FSKILL.md -->","frontmatter":{"name":"statistical-analysis","description":"Apply statistical methods including descriptive stats, trend analysis, outlier detection, and hypothesis testing. Use when analyzing distributions, testing for significance, detecting anomalies, computing correlations, or interpreting statistical results.","user-invocable":false},"isInternal":false,"tokens":2412,"sizeBytes":10434},{"name":"SKILL.md","path":"data/skills/validate-data/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/validate-data/SKILL.md","title":"validate-data","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fvalidate-data%2FSKILL.md -->","frontmatter":{"name":"validate-data","description":"QA an analysis before sharing -- methodology, accuracy, and bias checks. Use when reviewing an analysis before a stakeholder presentation, spot-checking calculations and aggregation logic, verifying a SQL query's results look right, or assessing whether conclusions are actually supported by the data.","argument-hint":"<analysis to review>"},"isInternal":false,"tokens":3235,"sizeBytes":14916},{"name":"SKILL.md","path":"data/skills/write-query/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/skills/write-query/SKILL.md","title":"write-query","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2Fskills%2Fwrite-query%2FSKILL.md -->","frontmatter":{"name":"write-query","description":"Write optimized SQL for your dialect with best practices. Use when translating a natural-language data need into SQL, building a multi-CTE query with joins and aggregations, optimizing a query against a large partitioned table, or getting dialect-specific syntax for Snowflake, BigQuery, Postgres, etc.","argument-hint":"<description of what data you need>"},"isInternal":false,"tokens":1079,"sizeBytes":4753},{"name":"SKILL.md","path":"design/skills/accessibility-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/accessibility-review/SKILL.md","title":"accessibility-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Faccessibility-review%2FSKILL.md -->","frontmatter":{"name":"accessibility-review","description":"Run a WCAG 2.1 AA accessibility audit on a design or page. Trigger with \"audit accessibility\", \"check a11y\", \"is this accessible?\", or when reviewing a design for color contrast, keyboard navigation, touch target size, or screen reader behavior before handoff.","argument-hint":"<Figma URL, URL, or description>"},"isInternal":false,"tokens":1147,"sizeBytes":4278},{"name":"SKILL.md","path":"design/skills/design-critique/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/design-critique/SKILL.md","title":"design-critique","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-critique%2FSKILL.md -->","frontmatter":{"name":"design-critique","description":"Get structured design feedback on usability, hierarchy, and consistency. Trigger with \"review this design\", \"critique this mockup\", \"what do you think of this screen?\", or when sharing a Figma link or screenshot for feedback at any stage from exploration to final polish.","argument-hint":"<Figma URL, screenshot, or description>"},"isInternal":false,"tokens":908,"sizeBytes":3923},{"name":"SKILL.md","path":"design/skills/design-handoff/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/design-handoff/SKILL.md","title":"design-handoff","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-handoff%2FSKILL.md -->","frontmatter":{"name":"design-handoff","description":"Generate developer handoff specs from a design. Use when a design is ready for engineering and needs a spec sheet covering layout, design tokens, component props, interaction states, responsive breakpoints, edge cases, and animation details.","argument-hint":"<Figma URL or design description>"},"isInternal":false,"tokens":938,"sizeBytes":3953},{"name":"SKILL.md","path":"design/skills/design-system/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/design-system/SKILL.md","title":"design-system","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fdesign-system%2FSKILL.md -->","frontmatter":{"name":"design-system","description":"Audit, document, or extend your design system. Use when checking for naming inconsistencies or hardcoded values across components, writing documentation for a component's variants, states, and accessibility notes, or designing a new pattern that fits the existing system.","argument-hint":"[audit | document | extend] <component or system>"},"isInternal":false,"tokens":1327,"sizeBytes":5600},{"name":"SKILL.md","path":"design/skills/research-synthesis/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/research-synthesis/SKILL.md","title":"research-synthesis","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fresearch-synthesis%2FSKILL.md -->","frontmatter":{"name":"research-synthesis","description":"Synthesize user research into themes, insights, and recommendations. Use when you have interview transcripts, survey results, usability test notes, support tickets, or NPS responses that need to be distilled into patterns, user segments, and prioritized next steps.","argument-hint":"<research data, transcripts, or survey results>"},"isInternal":false,"tokens":697,"sizeBytes":3014},{"name":"SKILL.md","path":"design/skills/user-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/user-research/SKILL.md","title":"user-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fuser-research%2FSKILL.md -->","frontmatter":{"name":"user-research","description":"Plan, conduct, and synthesize user research. Trigger with \"user research plan\", \"interview guide\", \"usability test\", \"survey design\", \"research questions\", or when the user needs help with any aspect of understanding their users through research."},"isInternal":false,"tokens":411,"sizeBytes":1751},{"name":"SKILL.md","path":"design/skills/ux-copy/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/skills/ux-copy/SKILL.md","title":"ux-copy","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2Fskills%2Fux-copy%2FSKILL.md -->","frontmatter":{"name":"ux-copy","description":"Write or review UX copy — microcopy, error messages, empty states, CTAs. Trigger with \"write copy for\", \"what should this button say?\", \"review this error message\", or when naming a CTA, wording a confirmation dialog, filling an empty state, or writing onboarding text.","argument-hint":"<context or copy to review>"},"isInternal":false,"tokens":831,"sizeBytes":3436},{"name":"SKILL.md","path":"engineering/skills/architecture/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/architecture/SKILL.md","title":"architecture","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Farchitecture%2FSKILL.md -->","frontmatter":{"name":"architecture","description":"Create or evaluate an architecture decision record (ADR). Use when choosing between technologies (e.g., Kafka vs SQS), documenting a design decision with trade-offs and consequences, reviewing a system design proposal, or designing a new component from requirements and constraints.","argument-hint":"<decision or system to design>"},"isInternal":false,"tokens":561,"sizeBytes":2410},{"name":"SKILL.md","path":"engineering/skills/code-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/code-review/SKILL.md","title":"code-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fcode-review%2FSKILL.md -->","frontmatter":{"name":"code-review","description":"Review code changes for security, performance, and correctness. Trigger with a PR URL or diff, \"review this before I merge\", \"is this code safe?\", or when checking a change for N+1 queries, injection risks, missing edge cases, or error handling gaps.","argument-hint":"<PR URL, diff, or file path>"},"isInternal":false,"tokens":845,"sizeBytes":4285},{"name":"SKILL.md","path":"engineering/skills/debug/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/debug/SKILL.md","title":"debug","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdebug%2FSKILL.md -->","frontmatter":{"name":"debug","description":"Structured debugging session — reproduce, isolate, diagnose, and fix. Trigger with an error message or stack trace, \"this works in staging but not prod\", \"something broke after the deploy\", or when behavior diverges from expected and the cause isn't obvious.","argument-hint":"<error message or problem description>"},"isInternal":false,"tokens":711,"sizeBytes":4074},{"name":"SKILL.md","path":"engineering/skills/deploy-checklist/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/deploy-checklist/SKILL.md","title":"deploy-checklist","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdeploy-checklist%2FSKILL.md -->","frontmatter":{"name":"deploy-checklist","description":"Pre-deployment verification checklist. Use when about to ship a release, deploying a change with database migrations or feature flags, verifying CI status and approvals before going to production, or documenting rollback triggers ahead of time.","argument-hint":"[service or release name]"},"isInternal":false,"tokens":555,"sizeBytes":2389},{"name":"SKILL.md","path":"engineering/skills/documentation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/documentation/SKILL.md","title":"documentation","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fdocumentation%2FSKILL.md -->","frontmatter":{"name":"documentation","description":"Write and maintain technical documentation. Trigger with \"write docs for\", \"document this\", \"create a README\", \"write a runbook\", \"onboarding guide\", or when the user needs help with any form of technical writing — API docs, architecture docs, or operational runbooks."},"isInternal":false,"tokens":335,"sizeBytes":1507},{"name":"SKILL.md","path":"engineering/skills/incident-response/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/incident-response/SKILL.md","title":"incident-response","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fincident-response%2FSKILL.md -->","frontmatter":{"name":"incident-response","description":"Run an incident response workflow — triage, communicate, and write postmortem. Trigger with \"we have an incident\", \"production is down\", an alert that needs severity assessment, a status update mid-incident, or when writing a blameless postmortem after resolution.","argument-hint":"<incident description or alert>"},"isInternal":false,"tokens":1145,"sizeBytes":5669},{"name":"SKILL.md","path":"engineering/skills/standup/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/standup/SKILL.md","title":"standup","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fstandup%2FSKILL.md -->","frontmatter":{"name":"standup","description":"Generate a standup update from recent activity. Use when preparing for daily standup, summarizing yesterday's commits and PRs and ticket moves, formatting work into yesterday/today/blockers, or structuring a few rough notes into a shareable update.","argument-hint":"[yesterday | today | blockers]"},"isInternal":false,"tokens":611,"sizeBytes":3315},{"name":"SKILL.md","path":"engineering/skills/system-design/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/system-design/SKILL.md","title":"system-design","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Fsystem-design%2FSKILL.md -->","frontmatter":{"name":"system-design","description":"Design systems, services, and architectures. Trigger with \"design a system for\", \"how should we architect\", \"system design for\", \"what's the right architecture for\", or when the user needs help with API design, data modeling, or service boundaries."},"isInternal":false,"tokens":285,"sizeBytes":1310},{"name":"SKILL.md","path":"engineering/skills/tech-debt/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/tech-debt/SKILL.md","title":"tech-debt","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftech-debt%2FSKILL.md -->","frontmatter":{"name":"tech-debt","description":"Identify, categorize, and prioritize technical debt. Trigger with \"tech debt\", \"technical debt audit\", \"what should we refactor\", \"code health\", or when the user asks about code quality, refactoring priorities, or maintenance backlog."},"isInternal":false,"tokens":338,"sizeBytes":1458},{"name":"SKILL.md","path":"engineering/skills/testing-strategy/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/skills/testing-strategy/SKILL.md","title":"testing-strategy","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2Fskills%2Ftesting-strategy%2FSKILL.md -->","frontmatter":{"name":"testing-strategy","description":"Design test strategies and test plans. Trigger with \"how should we test\", \"test strategy for\", \"write tests for\", \"test plan\", \"what tests do we need\", or when the user needs help with testing approaches, coverage, or test architecture."},"isInternal":false,"tokens":273,"sizeBytes":1279},{"name":"SKILL.md","path":"enterprise-search/skills/digest/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/skills/digest/SKILL.md","title":"digest","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fdigest%2FSKILL.md -->","frontmatter":{"name":"digest","description":"Generate a daily or weekly digest of activity across all connected sources. Use when catching up after time away, starting the day and wanting a summary of mentions and action items, or reviewing a week's decisions and document updates grouped by project.","argument-hint":"[--daily | --weekly | --since <date>]"},"isInternal":false,"tokens":1300,"sizeBytes":5587},{"name":"SKILL.md","path":"enterprise-search/skills/knowledge-synthesis/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/skills/knowledge-synthesis/SKILL.md","title":"knowledge-synthesis","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fknowledge-synthesis%2FSKILL.md -->","frontmatter":{"name":"knowledge-synthesis","description":"Combines search results from multiple sources into coherent, deduplicated answers with source attribution. Handles confidence scoring based on freshness and authority, and summarizes large result sets effectively.","user-invocable":false},"isInternal":false,"tokens":1837,"sizeBytes":8526},{"name":"SKILL.md","path":"enterprise-search/skills/search-strategy/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/skills/search-strategy/SKILL.md","title":"search-strategy","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch-strategy%2FSKILL.md -->","frontmatter":{"name":"search-strategy","description":"Query decomposition and multi-source search orchestration. Breaks natural language questions into targeted searches per source, translates queries into source-specific syntax, ranks results by relevance, and handles ambiguity and fallback strategies.","user-invocable":false},"isInternal":false,"tokens":1733,"sizeBytes":7198},{"name":"SKILL.md","path":"enterprise-search/skills/search/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/skills/search/SKILL.md","title":"search","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsearch%2FSKILL.md -->","frontmatter":{"name":"search","description":"Search across all connected sources in one query. Trigger with \"find that doc about...\", \"what did we decide on...\", \"where was the conversation about...\", or when looking for a decision, document, or discussion that could live in chat, email, cloud storage, or a project tracker.","argument-hint":"<query>"},"isInternal":false,"tokens":1470,"sizeBytes":6581},{"name":"SKILL.md","path":"enterprise-search/skills/source-management/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/skills/source-management/SKILL.md","title":"source-management","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2Fskills%2Fsource-management%2FSKILL.md -->","frontmatter":{"name":"source-management","description":"Manages connected MCP sources for enterprise search. Detects available sources, guides users to connect new ones, handles source priority ordering, and manages rate limiting awareness.","user-invocable":false},"isInternal":false,"tokens":1288,"sizeBytes":5734},{"name":"SKILL.md","path":"finance/skills/audit-support/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/audit-support/SKILL.md","title":"audit-support","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Faudit-support%2FSKILL.md -->","frontmatter":{"name":"audit-support","description":"Support SOX 404 compliance with control testing methodology, sample selection, and documentation standards. Use when generating testing workpapers, selecting audit samples, classifying control deficiencies, or preparing for internal or external audits.","user-invocable":false},"isInternal":false,"tokens":3289,"sizeBytes":16801},{"name":"SKILL.md","path":"finance/skills/close-management/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/close-management/SKILL.md","title":"close-management","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fclose-management%2FSKILL.md -->","frontmatter":{"name":"close-management","description":"Manage the month-end close process with task sequencing, dependencies, and status tracking. Use when planning the close calendar, tracking close progress, identifying blockers, or sequencing close activities by day.","user-invocable":false},"isInternal":false,"tokens":2178,"sizeBytes":10278},{"name":"SKILL.md","path":"finance/skills/financial-statements/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/financial-statements/SKILL.md","title":"financial-statements","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Ffinancial-statements%2FSKILL.md -->","frontmatter":{"name":"financial-statements","description":"Generate financial statements (income statement, balance sheet, cash flow) with period-over-period comparison and variance analysis. Use when preparing a monthly or quarterly P&L, closing the books and need to flag material variances, comparing actuals to budget, building a financial summary for leadership review, or looking up GAAP presentation requirements and period-end adjustments.","argument-hint":"<frequency> <period>"},"isInternal":false,"tokens":3368,"sizeBytes":14699},{"name":"SKILL.md","path":"finance/skills/journal-entry-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/journal-entry-prep/SKILL.md","title":"journal-entry-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry-prep%2FSKILL.md -->","frontmatter":{"name":"journal-entry-prep","description":"Prepare journal entries with proper debits, credits, and supporting documentation for month-end close. Use when booking accruals, prepaid amortization, fixed asset depreciation, payroll entries, revenue recognition, or any manual journal entry.","user-invocable":false},"isInternal":false,"tokens":1637,"sizeBytes":7841},{"name":"SKILL.md","path":"finance/skills/journal-entry/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/journal-entry/SKILL.md","title":"journal-entry","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fjournal-entry%2FSKILL.md -->","frontmatter":{"name":"journal-entry","description":"Prepare journal entries with proper debits, credits, and supporting detail. Use when booking month-end accruals (AP, payroll, prepaid), recording depreciation or amortization, posting revenue recognition or deferred revenue adjustments, or documenting an entry for audit review.","argument-hint":"<entry type> [period]"},"isInternal":false,"tokens":1163,"sizeBytes":5144},{"name":"SKILL.md","path":"finance/skills/reconciliation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/reconciliation/SKILL.md","title":"reconciliation","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Freconciliation%2FSKILL.md -->","frontmatter":{"name":"reconciliation","description":"Reconcile accounts by comparing GL balances to subledgers, bank statements, or third-party data. Use when performing bank reconciliations, GL-to-subledger recs, intercompany reconciliations, or identifying and categorizing reconciling items.","argument-hint":"<account> [period]"},"isInternal":false,"tokens":1704,"sizeBytes":8144},{"name":"SKILL.md","path":"finance/skills/sox-testing/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/sox-testing/SKILL.md","title":"sox-testing","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fsox-testing%2FSKILL.md -->","frontmatter":{"name":"sox-testing","description":"Generate SOX sample selections, testing workpapers, and control assessments. Use when planning quarterly or annual SOX 404 testing, pulling a sample for a control (revenue, P2P, ITGC, close), building a testing workpaper template, or evaluating and classifying a control deficiency.","argument-hint":"<control area> [period]"},"isInternal":false,"tokens":2027,"sizeBytes":9306},{"name":"SKILL.md","path":"finance/skills/variance-analysis/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/skills/variance-analysis/SKILL.md","title":"variance-analysis","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2Fskills%2Fvariance-analysis%2FSKILL.md -->","frontmatter":{"name":"variance-analysis","description":"Decompose financial variances into drivers with narrative explanations and waterfall analysis. Use when analyzing budget vs. actual, period-over-period changes, revenue or expense variances, or preparing variance commentary for leadership.","argument-hint":"<line item> <period> vs <comparison>"},"isInternal":false,"tokens":2612,"sizeBytes":11232},{"name":"SKILL.md","path":"human-resources/skills/comp-analysis/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/comp-analysis/SKILL.md","title":"comp-analysis","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fcomp-analysis%2FSKILL.md -->","frontmatter":{"name":"comp-analysis","description":"Analyze compensation — benchmarking, band placement, and equity modeling. Trigger with \"what should we pay a [role]\", \"is this offer competitive\", \"model this equity grant\", or when uploading comp data to find outliers and retention risks.","argument-hint":"<role, level, or dataset>"},"isInternal":false,"tokens":790,"sizeBytes":3263},{"name":"SKILL.md","path":"human-resources/skills/draft-offer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/draft-offer/SKILL.md","title":"draft-offer","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fdraft-offer%2FSKILL.md -->","frontmatter":{"name":"draft-offer","description":"Draft an offer letter with comp details and terms. Use when a candidate is ready for an offer, assembling a total comp package (base, equity, signing bonus), writing the offer letter text itself, or prepping negotiation guidance for the hiring manager.","argument-hint":"<role and level>"},"isInternal":false,"tokens":574,"sizeBytes":2359},{"name":"SKILL.md","path":"human-resources/skills/interview-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/interview-prep/SKILL.md","title":"interview-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Finterview-prep%2FSKILL.md -->","frontmatter":{"name":"interview-prep","description":"Create structured interview plans with competency-based questions and scorecards. Trigger with \"interview plan for\", \"interview questions for\", \"how should we interview\", \"scorecard for\", or when the user is preparing to interview candidates."},"isInternal":false,"tokens":299,"sizeBytes":1436},{"name":"SKILL.md","path":"human-resources/skills/onboarding/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/onboarding/SKILL.md","title":"onboarding","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fonboarding%2FSKILL.md -->","frontmatter":{"name":"onboarding","description":"Generate an onboarding checklist and first-week plan for a new hire. Use when someone has a start date coming up, building the pre-start task list (accounts, equipment, buddy), scheduling Day 1 and Week 1, or setting 30/60/90-day goals for a new team member.","argument-hint":"<new hire name and role>"},"isInternal":false,"tokens":841,"sizeBytes":3195},{"name":"SKILL.md","path":"human-resources/skills/org-planning/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/org-planning/SKILL.md","title":"org-planning","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Forg-planning%2FSKILL.md -->","frontmatter":{"name":"org-planning","description":"Headcount planning, org design, and team structure optimization. Trigger with \"org planning\", \"headcount plan\", \"team structure\", \"reorg\", \"who should we hire next\", or when the user is thinking about team size, reporting structure, or organizational design."},"isInternal":false,"tokens":296,"sizeBytes":1227},{"name":"SKILL.md","path":"human-resources/skills/people-report/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/people-report/SKILL.md","title":"people-report","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpeople-report%2FSKILL.md -->","frontmatter":{"name":"people-report","description":"Generate headcount, attrition, diversity, or org health reports. Use when pulling a headcount snapshot for leadership, analyzing turnover trends by team, preparing diversity representation metrics, or assessing span of control and flight risk across the org.","argument-hint":"<report type — headcount, attrition, diversity, org health>"},"isInternal":false,"tokens":629,"sizeBytes":2782},{"name":"SKILL.md","path":"human-resources/skills/performance-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/performance-review/SKILL.md","title":"performance-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fperformance-review%2FSKILL.md -->","frontmatter":{"name":"performance-review","description":"Structure a performance review with self-assessment, manager template, and calibration prep. Use when review season kicks off and you need a self-assessment template, writing a manager review for a direct report, prepping rating distributions and promotion cases for calibration, or turning vague feedback into specific behavioral examples.","argument-hint":"<employee name or review cycle>"},"isInternal":false,"tokens":1126,"sizeBytes":4910},{"name":"SKILL.md","path":"human-resources/skills/policy-lookup/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/policy-lookup/SKILL.md","title":"policy-lookup","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Fpolicy-lookup%2FSKILL.md -->","frontmatter":{"name":"policy-lookup","description":"Find and explain company policies in plain language. Trigger with \"what's our PTO policy\", \"can I work remotely from another country\", \"how do expenses work\", or any plain-language question about benefits, travel, leave, or handbook rules.","argument-hint":"<policy topic — PTO, benefits, travel, expenses, etc.>"},"isInternal":false,"tokens":790,"sizeBytes":4199},{"name":"SKILL.md","path":"human-resources/skills/recruiting-pipeline/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/skills/recruiting-pipeline/SKILL.md","title":"recruiting-pipeline","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2Fskills%2Frecruiting-pipeline%2FSKILL.md -->","frontmatter":{"name":"recruiting-pipeline","description":"Track and manage recruiting pipeline stages. Trigger with \"recruiting update\", \"candidate pipeline\", \"how many candidates\", \"hiring status\", or when the user discusses sourcing, screening, interviewing, or extending offers."},"isInternal":false,"tokens":243,"sizeBytes":1213},{"name":"SKILL.md","path":"legal/skills/brief/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/brief/SKILL.md","title":"brief","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fbrief%2FSKILL.md -->","frontmatter":{"name":"brief","description":"Generate contextual briefings for legal work — daily summary, topic research, or incident response. Use when starting your day and need a scan of legal-relevant items across email, calendar, and contracts, when researching a specific legal question across internal sources, or when a developing situation (data breach, litigation threat, regulatory inquiry) needs rapid context.","argument-hint":"[daily | topic <query> | incident]"},"isInternal":false,"tokens":1424,"sizeBytes":7014},{"name":"SKILL.md","path":"legal/skills/compliance-check/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/compliance-check/SKILL.md","title":"compliance-check","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fcompliance-check%2FSKILL.md -->","frontmatter":{"name":"compliance-check","description":"Run a compliance check on a proposed action, product feature, or business initiative, surfacing applicable regulations, required approvals, and risk areas. Use when launching a feature that touches personal data, when marketing or product proposes something with regulatory implications, or when you need to know which approvals and jurisdictional requirements apply before proceeding.","argument-hint":"<action or initiative to check>"},"isInternal":false,"tokens":3014,"sizeBytes":14694},{"name":"SKILL.md","path":"legal/skills/legal-response/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/legal-response/SKILL.md","title":"legal-response","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-response%2FSKILL.md -->","frontmatter":{"name":"legal-response","description":"Generate a response to a common legal inquiry using configured templates, with built-in escalation checks for situations that shouldn't use a templated reply. Use when responding to data subject requests, litigation hold notices, vendor legal questions, NDA requests from business teams, or subpoenas.","argument-hint":"[inquiry-type]"},"isInternal":false,"tokens":3362,"sizeBytes":16174},{"name":"SKILL.md","path":"legal/skills/legal-risk-assessment/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/legal-risk-assessment/SKILL.md","title":"legal-risk-assessment","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Flegal-risk-assessment%2FSKILL.md -->","frontmatter":{"name":"legal-risk-assessment","description":"Assess and classify legal risks using a severity-by-likelihood framework with escalation criteria. Use when evaluating contract risk, assessing deal exposure, classifying issues by severity, or determining whether a matter needs senior counsel or outside legal review."},"isInternal":false,"tokens":2649,"sizeBytes":12581},{"name":"SKILL.md","path":"legal/skills/meeting-briefing/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/meeting-briefing/SKILL.md","title":"meeting-briefing","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fmeeting-briefing%2FSKILL.md -->","frontmatter":{"name":"meeting-briefing","description":"Prepare structured briefings for meetings with legal relevance and track resulting action items. Use when preparing for contract negotiations, board meetings, compliance reviews, or any meeting where legal context, background research, or action tracking is needed."},"isInternal":false,"tokens":1941,"sizeBytes":8990},{"name":"SKILL.md","path":"legal/skills/review-contract/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/review-contract/SKILL.md","title":"review-contract","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Freview-contract%2FSKILL.md -->","frontmatter":{"name":"review-contract","description":"Review a contract against your organization's negotiation playbook — flag deviations, generate redlines, provide business impact analysis. Use when reviewing vendor or customer agreements, when you need clause-by-clause analysis against standard positions, or when preparing a negotiation strategy with prioritized redlines and fallback positions.","argument-hint":"<contract file or text>"},"isInternal":false,"tokens":3424,"sizeBytes":16708},{"name":"SKILL.md","path":"legal/skills/signature-request/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/signature-request/SKILL.md","title":"signature-request","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fsignature-request%2FSKILL.md -->","frontmatter":{"name":"signature-request","description":"Prepare and route a document for e-signature — run a pre-signature checklist, configure signing order, and send for execution. Use when a contract is finalized and ready to sign, when verifying entity names, exhibits, and signature blocks before sending, or when setting up an envelope with sequential or parallel signers.","argument-hint":"<document or contract to send>"},"isInternal":false,"tokens":786,"sizeBytes":3421},{"name":"SKILL.md","path":"legal/skills/triage-nda/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/triage-nda/SKILL.md","title":"triage-nda","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Ftriage-nda%2FSKILL.md -->","frontmatter":{"name":"triage-nda","description":"Rapidly triage an incoming NDA and classify it as GREEN (standard approval), YELLOW (counsel review), or RED (full legal review). Use when a new NDA arrives from sales or business development, when screening for embedded non-solicits, non-competes, or missing carveouts, or when deciding whether an NDA can be signed under standard delegation.","argument-hint":"<NDA file or text>"},"isInternal":false,"tokens":3092,"sizeBytes":14583},{"name":"SKILL.md","path":"legal/skills/vendor-check/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/skills/vendor-check/SKILL.md","title":"vendor-check","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2Fskills%2Fvendor-check%2FSKILL.md -->","frontmatter":{"name":"vendor-check","description":"Check the status of existing agreements with a vendor across all connected systems — CLM, CRM, email, and document storage — with gap analysis and upcoming deadlines. Use when onboarding or renewing a vendor, when you need a consolidated view of what's signed and what's missing (MSA, DPA, SOW), or when checking for approaching expirations and surviving obligations.","argument-hint":"[vendor name]"},"isInternal":false,"tokens":1280,"sizeBytes":5595},{"name":"SKILL.md","path":"marketing/skills/brand-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/brand-review/SKILL.md","title":"brand-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fbrand-review%2FSKILL.md -->","frontmatter":{"name":"brand-review","description":"Review content against your brand voice, style guide, and messaging pillars, flagging deviations by severity with specific before/after fixes. Use when checking a draft before it ships, when auditing copy for voice consistency and terminology, or when screening for unsubstantiated claims, missing disclaimers, and other legal flags.","argument-hint":"<content to review>"},"isInternal":false,"tokens":2814,"sizeBytes":12936},{"name":"SKILL.md","path":"marketing/skills/campaign-plan/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/campaign-plan/SKILL.md","title":"campaign-plan","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcampaign-plan%2FSKILL.md -->","frontmatter":{"name":"campaign-plan","description":"Generate a full campaign brief with objectives, audience, messaging, channel strategy, content calendar, and success metrics. Use when planning a product launch, lead-gen push, or awareness campaign, when you need a week-by-week content calendar with dependencies, or when translating a marketing goal into a structured, executable plan.","argument-hint":"<campaign objective or product>"},"isInternal":false,"tokens":3032,"sizeBytes":14153},{"name":"SKILL.md","path":"marketing/skills/competitive-brief/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/competitive-brief/SKILL.md","title":"competitive-brief","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","frontmatter":{"name":"competitive-brief","description":"Research competitors and generate a positioning and messaging comparison with content gaps, opportunities, and threats. Use when building sales battlecards, when finding positioning gaps and messaging angles competitors haven't claimed, or when a competitor makes a move and you need to assess the impact.","argument-hint":"<competitor or market segment>"},"isInternal":false,"tokens":2815,"sizeBytes":13150},{"name":"SKILL.md","path":"marketing/skills/content-creation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/content-creation/SKILL.md","title":"content-creation","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fcontent-creation%2FSKILL.md -->","frontmatter":{"name":"content-creation","description":"Draft marketing content across channels — blog posts, social media, email newsletters, landing pages, press releases, and case studies. Use when writing any marketing content, when you need channel-specific formatting, SEO-optimized copy, headline options, or calls to action.","user-invocable":false},"isInternal":false,"tokens":2052,"sizeBytes":8830},{"name":"SKILL.md","path":"marketing/skills/draft-content/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/draft-content/SKILL.md","title":"draft-content","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fdraft-content%2FSKILL.md -->","frontmatter":{"name":"draft-content","description":"Draft blog posts, social media, email newsletters, landing pages, press releases, and case studies with channel-specific formatting and SEO recommendations. Use when writing any marketing content, when you need headline or subject line options, or when adapting a message for a specific platform, audience, and brand voice.","argument-hint":"<content type and topic>"},"isInternal":false,"tokens":992,"sizeBytes":4612},{"name":"SKILL.md","path":"marketing/skills/email-sequence/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/email-sequence/SKILL.md","title":"email-sequence","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Femail-sequence%2FSKILL.md -->","frontmatter":{"name":"email-sequence","description":"Design and draft multi-email sequences with full copy, timing, branching logic, exit conditions, and performance benchmarks. Use when building onboarding, lead nurture, re-engagement, win-back, or product launch flows, when you need a complete drip campaign with A/B test suggestions, or when mapping a sequence end-to-end with a flow diagram.","argument-hint":"[sequence type]"},"isInternal":false,"tokens":2402,"sizeBytes":10627},{"name":"SKILL.md","path":"marketing/skills/performance-report/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/performance-report/SKILL.md","title":"performance-report","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fperformance-report%2FSKILL.md -->","frontmatter":{"name":"performance-report","description":"Build a marketing performance report with key metrics, trend analysis, wins and misses, and prioritized optimization recommendations. Use when wrapping a campaign, when preparing weekly, monthly, or quarterly channel summaries for stakeholders, or when you need data translated into an executive summary with next-period priorities.","argument-hint":"<time period or campaign>"},"isInternal":false,"tokens":4060,"sizeBytes":19213},{"name":"SKILL.md","path":"marketing/skills/seo-audit/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/skills/seo-audit/SKILL.md","title":"seo-audit","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2Fskills%2Fseo-audit%2FSKILL.md -->","frontmatter":{"name":"seo-audit","description":"Run a comprehensive SEO audit — keyword research, on-page analysis, content gaps, technical checks, and competitor comparison. Use when assessing a site's SEO health, when finding keyword opportunities and content gaps competitors own, or when you need a prioritized action plan split into quick wins and strategic investments.","argument-hint":"<url or topic> [audit type]"},"isInternal":false,"tokens":1999,"sizeBytes":9526},{"name":"SKILL.md","path":"operations/skills/capacity-plan/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/capacity-plan/SKILL.md","title":"capacity-plan","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcapacity-plan%2FSKILL.md -->","frontmatter":{"name":"capacity-plan","description":"Plan resource capacity — workload analysis and utilization forecasting. Use when heading into quarterly planning, the team feels overallocated and you need the numbers, deciding whether to hire or deprioritize, or stress-testing whether upcoming projects fit the people you have.","argument-hint":"<team or project scope>"},"isInternal":false,"tokens":839,"sizeBytes":3487},{"name":"SKILL.md","path":"operations/skills/change-request/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/change-request/SKILL.md","title":"change-request","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fchange-request%2FSKILL.md -->","frontmatter":{"name":"change-request","description":"Create a change management request with impact analysis and rollback plan. Use when proposing a system or process change that needs approval, preparing a change record for CAB review, documenting risk and rollback steps before a deployment, or planning stakeholder communications for a rollout.","argument-hint":"<change description>"},"isInternal":false,"tokens":888,"sizeBytes":3764},{"name":"SKILL.md","path":"operations/skills/compliance-tracking/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/compliance-tracking/SKILL.md","title":"compliance-tracking","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fcompliance-tracking%2FSKILL.md -->","frontmatter":{"name":"compliance-tracking","description":"Track compliance requirements and audit readiness. Trigger with \"compliance\", \"audit prep\", \"SOC 2\", \"ISO 27001\", \"GDPR\", \"regulatory requirement\", or when the user needs help tracking, preparing for, or documenting compliance activities."},"isInternal":false,"tokens":316,"sizeBytes":1592},{"name":"SKILL.md","path":"operations/skills/process-doc/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/process-doc/SKILL.md","title":"process-doc","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-doc%2FSKILL.md -->","frontmatter":{"name":"process-doc","description":"Document a business process — flowcharts, RACI, and SOPs. Use when formalizing a process that lives in someone's head, building a RACI to clarify who owns what, writing an SOP for a handoff or audit, or capturing the exceptions and edge cases of how work actually gets done.","argument-hint":"<process name or description>"},"isInternal":false,"tokens":601,"sizeBytes":2503},{"name":"SKILL.md","path":"operations/skills/process-optimization/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/process-optimization/SKILL.md","title":"process-optimization","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fprocess-optimization%2FSKILL.md -->","frontmatter":{"name":"process-optimization","description":"Analyze and improve business processes. Trigger with \"this process is slow\", \"how can we improve\", \"streamline this workflow\", \"too many steps\", \"bottleneck\", or when the user describes an inefficient process they want to fix."},"isInternal":false,"tokens":283,"sizeBytes":1288},{"name":"SKILL.md","path":"operations/skills/risk-assessment/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/risk-assessment/SKILL.md","title":"risk-assessment","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frisk-assessment%2FSKILL.md -->","frontmatter":{"name":"risk-assessment","description":"Identify, assess, and mitigate operational risks. Trigger with \"what are the risks\", \"risk assessment\", \"risk register\", \"what could go wrong\", or when the user is evaluating risks associated with a project, vendor, process, or decision."},"isInternal":false,"tokens":354,"sizeBytes":1630},{"name":"SKILL.md","path":"operations/skills/runbook/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/runbook/SKILL.md","title":"runbook","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Frunbook%2FSKILL.md -->","frontmatter":{"name":"runbook","description":"Create or update an operational runbook for a recurring task or procedure. Use when documenting a task that on-call or ops needs to run repeatably, turning tribal knowledge into exact step-by-step commands, adding troubleshooting and rollback steps to an existing procedure, or writing escalation paths for when things go wrong.","argument-hint":"<process or task name>"},"isInternal":false,"tokens":629,"sizeBytes":2519},{"name":"SKILL.md","path":"operations/skills/status-report/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/status-report/SKILL.md","title":"status-report","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fstatus-report%2FSKILL.md -->","frontmatter":{"name":"status-report","description":"Generate a status report with KPIs, risks, and action items. Use when writing a weekly or monthly update for leadership, summarizing project health with green/yellow/red status, surfacing risks and decisions that need stakeholder attention, or turning a pile of project tracker activity into a readable narrative.","argument-hint":"[weekly | monthly | quarterly] [project or team]"},"isInternal":false,"tokens":632,"sizeBytes":2571},{"name":"SKILL.md","path":"operations/skills/vendor-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/skills/vendor-review/SKILL.md","title":"vendor-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2Fskills%2Fvendor-review%2FSKILL.md -->","frontmatter":{"name":"vendor-review","description":"Evaluate a vendor — cost analysis, risk assessment, and recommendation. Use when reviewing a new vendor proposal, deciding whether to renew or replace a contract, comparing two vendors side-by-side, or building a TCO breakdown and negotiation points before procurement sign-off.","argument-hint":"<vendor name or proposal>"},"isInternal":false,"tokens":731,"sizeBytes":3170},{"name":"SKILL.md","path":"partner-built/apollo/skills/enrich-lead/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/apollo/skills/enrich-lead/SKILL.md","title":"enrich-lead","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fenrich-lead%2FSKILL.md -->","frontmatter":{"name":"enrich-lead","description":"Instant lead enrichment. Drop a name, company, LinkedIn URL, or email and get the full contact card with email, phone, title, company intel, and next actions.","user-invocable":true,"argument-hint":"[name, company, LinkedIn URL, or email]"},"isInternal":false,"tokens":756,"sizeBytes":2924},{"name":"SKILL.md","path":"partner-built/apollo/skills/prospect/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/apollo/skills/prospect/SKILL.md","title":"prospect","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fprospect%2FSKILL.md -->","frontmatter":{"name":"prospect","description":"Full ICP-to-leads pipeline. Describe your ideal customer in plain English and get a ranked table of enriched decision-maker leads with emails and phone numbers.","user-invocable":true,"argument-hint":"[describe your ideal customer]"},"isInternal":false,"tokens":900,"sizeBytes":3606},{"name":"SKILL.md","path":"partner-built/apollo/skills/sequence-load/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/apollo/skills/sequence-load/SKILL.md","title":"sequence-load","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2Fskills%2Fsequence-load%2FSKILL.md -->","frontmatter":{"name":"sequence-load","description":"Find leads matching criteria and bulk-add them to an Apollo outreach sequence. Handles enrichment, contact creation, deduplication, and enrollment in one flow.","user-invocable":true,"argument-hint":"[targeting criteria + sequence name]"},"isInternal":false,"tokens":1022,"sizeBytes":4057},{"name":"before-after-examples.md","path":"partner-built/brand-voice/skills/brand-voice-enforcement/references/before-after-examples.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/brand-voice-enforcement/references/before-after-examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fbefore-after-examples.md -->","isInternal":false,"tokens":1721,"sizeBytes":7498},{"name":"voice-constant-tone-flexes.md","path":"partner-built/brand-voice/skills/brand-voice-enforcement/references/voice-constant-tone-flexes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/brand-voice-enforcement/references/voice-constant-tone-flexes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2Freferences%2Fvoice-constant-tone-flexes.md -->","isInternal":false,"tokens":1288,"sizeBytes":5835},{"name":"SKILL.md","path":"partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md","title":"brand-voice-enforcement","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fbrand-voice-enforcement%2FSKILL.md -->","frontmatter":{"name":"brand-voice-enforcement","description":"This skill applies brand guidelines to content creation. It should be used when the user asks to \"write an email\", \"draft a proposal\", \"create a pitch deck\", \"write a LinkedIn post\", \"draft a presentation\", \"write a Slack message\", \"draft sales content\", or any content creation request where brand voice should be applied. Also triggers on \"on-brand\", \"brand voice\", \"enforce voice\", \"apply brand guidelines\", \"brand-aligned content\", \"write in our voice\", \"use our brand tone\", \"make this sound like us\", \"rewrite this in our tone\", or \"this doesn't sound on-brand\". Not for generating guidelines from scratch (use guideline-generation) or discovering brand materials (use discover-brand).\n"},"isInternal":false,"tokens":1138,"sizeBytes":5452},{"name":"search-strategies.md","path":"partner-built/brand-voice/skills/discover-brand/references/search-strategies.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/discover-brand/references/search-strategies.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsearch-strategies.md -->","isInternal":false,"tokens":1899,"sizeBytes":9185},{"name":"source-ranking.md","path":"partner-built/brand-voice/skills/discover-brand/references/source-ranking.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/discover-brand/references/source-ranking.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2Freferences%2Fsource-ranking.md -->","isInternal":false,"tokens":2327,"sizeBytes":9231},{"name":"SKILL.md","path":"partner-built/brand-voice/skills/discover-brand/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/discover-brand/SKILL.md","title":"discover-brand","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fdiscover-brand%2FSKILL.md -->","frontmatter":{"name":"discover-brand","description":"This skill orchestrates autonomous discovery of brand materials across enterprise platforms (Notion, Confluence, Google Drive, Box, SharePoint, Figma, Gong, Granola, Slack). It should be used when the user asks to \"discover brand materials\", \"find brand documents\", \"search for brand guidelines\", \"audit brand content\", \"what brand materials do we have\", \"find our style guide\", \"where are our brand docs\", \"do we have a style guide\", \"discover brand voice\", \"brand content audit\", or \"find brand assets\".\n"},"isInternal":false,"tokens":1430,"sizeBytes":6891},{"name":"confidence-scoring.md","path":"partner-built/brand-voice/skills/guideline-generation/references/confidence-scoring.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/guideline-generation/references/confidence-scoring.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fconfidence-scoring.md -->","isInternal":false,"tokens":1083,"sizeBytes":4980},{"name":"guideline-template.md","path":"partner-built/brand-voice/skills/guideline-generation/references/guideline-template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/guideline-generation/references/guideline-template.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2Freferences%2Fguideline-template.md -->","isInternal":false,"tokens":1792,"sizeBytes":7122},{"name":"SKILL.md","path":"partner-built/brand-voice/skills/guideline-generation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/skills/guideline-generation/SKILL.md","title":"guideline-generation","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2Fskills%2Fguideline-generation%2FSKILL.md -->","frontmatter":{"name":"guideline-generation","description":"This skill generates, creates, or builds brand voice guidelines from source materials. It should be used when the user asks to \"generate brand guidelines\", \"create a style guide\", \"extract brand voice\", \"create guidelines from calls\", \"consolidate brand materials\", \"analyze my sales calls for brand voice\", \"build a brand playbook from documents\", \"synthesize a voice and tone guide\", or uploads brand documents, transcripts, or meeting recordings for brand analysis. Also triggers when the user has a discovery report and wants to convert it into actionable guidelines.\n"},"isInternal":false,"tokens":1503,"sizeBytes":7022},{"name":"signals-guide.md","path":"partner-built/common-room/skills/account-research/references/signals-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/account-research/references/signals-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2Freferences%2Fsignals-guide.md -->","isInternal":false,"tokens":503,"sizeBytes":2576},{"name":"SKILL.md","path":"partner-built/common-room/skills/account-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/account-research/SKILL.md","title":"account-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Faccount-research%2FSKILL.md -->","frontmatter":{"name":"account-research","description":"Research a company using Common Room data. Triggers on 'research [company]', 'tell me about [domain]', 'pull up signals for [account]', 'what's going on with [company]', or any account-level question."},"isInternal":false,"tokens":1355,"sizeBytes":6113},{"name":"call-types-guide.md","path":"partner-built/common-room/skills/call-prep/references/call-types-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/call-prep/references/call-types-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2Freferences%2Fcall-types-guide.md -->","isInternal":false,"tokens":440,"sizeBytes":2224},{"name":"SKILL.md","path":"partner-built/common-room/skills/call-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/call-prep/SKILL.md","title":"call-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcall-prep%2FSKILL.md -->","frontmatter":{"name":"call-prep","description":"Prepare for a customer or prospect call using Common Room signals. Triggers on 'prep me for my call with [company]', 'prepare for a meeting with [company]', 'what should I know before talking to [company]', or any call preparation request."},"isInternal":false,"tokens":1277,"sizeBytes":5917},{"name":"outreach-formats-guide.md","path":"partner-built/common-room/skills/compose-outreach/references/outreach-formats-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/compose-outreach/references/outreach-formats-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2Freferences%2Foutreach-formats-guide.md -->","isInternal":false,"tokens":622,"sizeBytes":2745},{"name":"SKILL.md","path":"partner-built/common-room/skills/compose-outreach/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/compose-outreach/SKILL.md","title":"compose-outreach","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcompose-outreach%2FSKILL.md -->","frontmatter":{"name":"compose-outreach","description":"Generate personalized outreach messages using Common Room signals. Triggers on 'draft outreach to [person]', 'write an email to [name]', 'compose a message for [contact]', or any outreach drafting request."},"isInternal":false,"tokens":1193,"sizeBytes":5501},{"name":"contact-signals-guide.md","path":"partner-built/common-room/skills/contact-research/references/contact-signals-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/contact-research/references/contact-signals-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2Freferences%2Fcontact-signals-guide.md -->","isInternal":false,"tokens":479,"sizeBytes":2396},{"name":"SKILL.md","path":"partner-built/common-room/skills/contact-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/contact-research/SKILL.md","title":"contact-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fcontact-research%2FSKILL.md -->","frontmatter":{"name":"contact-research","description":"Research a specific person using Common Room data. Triggers on 'who is [name]', 'look up [email]', 'research [contact]', 'is [name] a warm lead', or any contact-level question."},"isInternal":false,"tokens":1164,"sizeBytes":5388},{"name":"prospect-guide.md","path":"partner-built/common-room/skills/prospect/references/prospect-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/prospect/references/prospect-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2Freferences%2Fprospect-guide.md -->","isInternal":false,"tokens":444,"sizeBytes":1963},{"name":"SKILL.md","path":"partner-built/common-room/skills/prospect/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/prospect/SKILL.md","title":"prospect","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fprospect%2FSKILL.md -->","frontmatter":{"name":"prospect","description":"Build targeted account or contact lists using Common Room's Prospector. Triggers on 'find companies that match [criteria]', 'build a prospect list', 'find contacts at [type of company]', 'show me companies hiring [role]', or any list-building request."},"isInternal":false,"tokens":1303,"sizeBytes":6187},{"name":"briefing-guide.md","path":"partner-built/common-room/skills/weekly-prep-brief/references/briefing-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/weekly-prep-brief/references/briefing-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2Freferences%2Fbriefing-guide.md -->","isInternal":false,"tokens":382,"sizeBytes":1889},{"name":"SKILL.md","path":"partner-built/common-room/skills/weekly-prep-brief/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/skills/weekly-prep-brief/SKILL.md","title":"weekly-prep-brief","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2Fskills%2Fweekly-prep-brief%2FSKILL.md -->","frontmatter":{"name":"weekly-prep-brief","description":"Generate a comprehensive weekly briefing for all external calls in the next 7 days. Triggers on 'weekly prep brief', 'prepare my week', 'what calls do I have this week', 'Monday prep', or any weekly planning request."},"isInternal":false,"tokens":1155,"sizeBytes":5406},{"name":"SKILL.md","path":"partner-built/slack/skills/slack-messaging/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/slack/skills/slack-messaging/SKILL.md","title":"slack-messaging","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-messaging%2FSKILL.md -->","frontmatter":{"name":"slack-messaging","description":"Guidance for composing well-formatted, effective Slack messages using mrkdwn syntax"},"isInternal":false,"tokens":743,"sizeBytes":3139},{"name":"SKILL.md","path":"partner-built/slack/skills/slack-search/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/slack/skills/slack-search/SKILL.md","title":"slack-search","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2Fskills%2Fslack-search%2FSKILL.md -->","frontmatter":{"name":"slack-search","description":"Guidance for effectively searching Slack to find messages, files, channels, and people"},"isInternal":false,"tokens":960,"sizeBytes":3998},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md","title":"build-zoom-bot","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-bot%2FSKILL.md -->","frontmatter":{"name":"build-zoom-bot","description":"Build a Zoom meeting bot, recorder, or real-time media workflow. Use when joining meetings programmatically, processing live media or transcripts, or combining Meeting SDK, RTMS, and backend services."},"isInternal":false,"tokens":288,"sizeBytes":1250},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md","title":"build-zoom-meeting-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fbuild-zoom-meeting-app%2FSKILL.md -->","frontmatter":{"name":"build-zoom-meeting-app","description":"Build or embed a Zoom meeting flow. Use when implementing Meeting SDK joins, web or mobile meeting embeds, meeting lifecycle flows, or when deciding between Meeting SDK and Video SDK."},"isInternal":false,"tokens":294,"sizeBytes":1317},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md","title":"choose-zoom-approach","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fchoose-zoom-approach%2FSKILL.md -->","frontmatter":{"name":"choose-zoom-approach","description":"Choose the right Zoom architecture for a use case. Use when deciding between REST API, Webhooks, WebSockets, Meeting SDK, Video SDK, Zoom Apps SDK, Zoom MCP, Phone, Contact Center, or a hybrid approach.","user-invocable":false},"isInternal":false,"tokens":446,"sizeBytes":1861},{"name":"distribution-methods.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/distribution-methods.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/distribution-methods.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fdistribution-methods.md -->","isInternal":false,"tokens":75,"sizeBytes":348},{"name":"jwt-authentication.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/jwt-authentication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/jwt-authentication.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fjwt-authentication.md -->","isInternal":false,"tokens":77,"sizeBytes":362},{"name":"session-lifecycle.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/session-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/session-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Fsession-lifecycle.md -->","isInternal":false,"tokens":83,"sizeBytes":360},{"name":"two-roles-pattern.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/two-roles-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/concepts/two-roles-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fconcepts%2Ftwo-roles-pattern.md -->","isInternal":false,"tokens":332,"sizeBytes":1389},{"name":"agent-integration.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/agent-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/agent-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fagent-integration.md -->","isInternal":false,"tokens":47,"sizeBytes":217},{"name":"annotations.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/annotations.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/annotations.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fannotations.md -->","isInternal":false,"tokens":46,"sizeBytes":224},{"name":"auto-reconnection.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/auto-reconnection.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/auto-reconnection.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fauto-reconnection.md -->","isInternal":false,"tokens":44,"sizeBytes":213},{"name":"byop-custom-pin.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/byop-custom-pin.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/byop-custom-pin.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fbyop-custom-pin.md -->","isInternal":false,"tokens":51,"sizeBytes":223},{"name":"customer-integration.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/customer-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/customer-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fcustomer-integration.md -->","isInternal":false,"tokens":50,"sizeBytes":222},{"name":"multi-tab-persistence.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/multi-tab-persistence.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/multi-tab-persistence.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fmulti-tab-persistence.md -->","isInternal":false,"tokens":50,"sizeBytes":228},{"name":"privacy-masking.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/privacy-masking.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/privacy-masking.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fprivacy-masking.md -->","isInternal":false,"tokens":46,"sizeBytes":218},{"name":"remote-assist.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/remote-assist.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/remote-assist.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fremote-assist.md -->","isInternal":false,"tokens":50,"sizeBytes":231},{"name":"session-events.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/examples/session-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/examples/session-events.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fexamples%2Fsession-events.md -->","isInternal":false,"tokens":48,"sizeBytes":220},{"name":"get-started.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/get-started.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/get-started.md","title":"Cobrowse-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Fget-started.md -->","isInternal":false,"tokens":3786,"sizeBytes":14944},{"name":"api-official.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-official.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-official.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-official.md -->","isInternal":false,"tokens":411,"sizeBytes":1676},{"name":"api-reference.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/api-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi-reference.md -->","isInternal":false,"tokens":28,"sizeBytes":117},{"name":"api.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/api.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fapi.md -->","isInternal":false,"tokens":20,"sizeBytes":74},{"name":"authorization-official.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization-official.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization-official.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization-official.md -->","isInternal":false,"tokens":529,"sizeBytes":2001},{"name":"authorization.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/authorization.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fauthorization.md -->","isInternal":false,"tokens":20,"sizeBytes":104},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":182,"sizeBytes":778},{"name":"error-codes.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/error-codes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/error-codes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ferror-codes.md -->","isInternal":false,"tokens":46,"sizeBytes":190},{"name":"features-official.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/features-official.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/features-official.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures-official.md -->","isInternal":false,"tokens":466,"sizeBytes":1925},{"name":"features.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/features.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/features.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Ffeatures.md -->","isInternal":false,"tokens":20,"sizeBytes":89},{"name":"get-started-official.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started-official.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started-official.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started-official.md -->","isInternal":false,"tokens":528,"sizeBytes":2003},{"name":"get-started.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/get-started.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fget-started.md -->","isInternal":false,"tokens":24,"sizeBytes":98},{"name":"session-events.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/session-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/session-events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsession-events.md -->","isInternal":false,"tokens":31,"sizeBytes":150},{"name":"settings-reference.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/references/settings-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/references/settings-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Freferences%2Fsettings-reference.md -->","isInternal":false,"tokens":41,"sizeBytes":193},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/RUNBOOK.md","title":"Cobrowse-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":626,"sizeBytes":2769},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md","title":"zoom-cobrowse-sdk","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2FSKILL.md -->","frontmatter":{"name":"zoom-cobrowse-sdk","description":"Reference skill for Zoom Cobrowse SDK. Use after routing to a collaborative-support workflow when implementing browser co-browsing, annotation tools, privacy masking, remote assist, or PIN-based session sharing.","user-invocable":false,"triggers":["cobrowse","co-browse","collaborative browsing","agent assist","customer support screen share","zoom cobrowse"]},"isInternal":false,"tokens":8015,"sizeBytes":33256},{"name":"browser-compatibility.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/browser-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/browser-compatibility.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fbrowser-compatibility.md -->","isInternal":false,"tokens":47,"sizeBytes":227},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":569,"sizeBytes":2538},{"name":"cors-csp.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/cors-csp.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/cors-csp.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Fcors-csp.md -->","isInternal":false,"tokens":64,"sizeBytes":283},{"name":"error-codes.md","path":"partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/error-codes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/cobrowse-sdk/troubleshooting/error-codes.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcobrowse-sdk%2Ftroubleshooting%2Ferror-codes.md -->","isInternal":false,"tokens":48,"sizeBytes":216},{"name":"sdk-lifecycle.md","path":"partner-built/zoom-plugin/skills/contact-center/android/concepts/sdk-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/concepts/sdk-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fconcepts%2Fsdk-lifecycle.md -->","isInternal":false,"tokens":251,"sizeBytes":1019},{"name":"service-patterns.md","path":"partner-built/zoom-plugin/skills/contact-center/android/examples/service-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/examples/service-patterns.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Fexamples%2Fservice-patterns.md -->","isInternal":false,"tokens":407,"sizeBytes":1766},{"name":"android-reference-map.md","path":"partner-built/zoom-plugin/skills/contact-center/android/references/android-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/references/android-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","isInternal":false,"tokens":278,"sizeBytes":1035},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/contact-center/android/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/RUNBOOK.md","title":"Android Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FRUNBOOK.md -->","isInternal":false,"tokens":486,"sizeBytes":2324},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/contact-center/android/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/SKILL.md","title":"contact-center/android","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2FSKILL.md -->","frontmatter":{"name":"contact-center/android","description":"Zoom Contact Center SDK for Android. Use for native Android chat/video/ZVA/scheduled callback integrations, campaign mode, service lifecycle, and rejoin handling.","user-invocable":false,"triggers":["contact center android","zcc android","zoomccinterface android","zoomccchatservice","zoomccvideoservice","releasezoomccservice","android rejoin"]},"isInternal":false,"tokens":415,"sizeBytes":1693},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/contact-center/android/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/android/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":184,"sizeBytes":834},{"name":"architecture-and-lifecycle.md","path":"partner-built/zoom-plugin/skills/contact-center/concepts/architecture-and-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/concepts/architecture-and-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fconcepts%2Farchitecture-and-lifecycle.md -->","isInternal":false,"tokens":407,"sizeBytes":1962},{"name":"sdk-lifecycle.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/concepts/sdk-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/concepts/sdk-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fconcepts%2Fsdk-lifecycle.md -->","isInternal":false,"tokens":299,"sizeBytes":1240},{"name":"service-patterns.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/examples/service-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/examples/service-patterns.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Fexamples%2Fservice-patterns.md -->","isInternal":false,"tokens":389,"sizeBytes":1680},{"name":"ios-reference-map.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/references/ios-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/references/ios-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Freferences%2Fios-reference-map.md -->","isInternal":false,"tokens":241,"sizeBytes":884},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/RUNBOOK.md","title":"Ios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FRUNBOOK.md -->","isInternal":false,"tokens":490,"sizeBytes":2300},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md","title":"contact-center/ios","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2FSKILL.md -->","frontmatter":{"name":"contact-center/ios","description":"Zoom Contact Center SDK for iOS. Use for native iOS chat/video/ZVA/scheduled callback integrations, app lifecycle bridging, rejoin flow, and callback handling.","user-invocable":false,"triggers":["contact center ios","zcc ios","zoomccinterface ios","handleRejoinVideoOpenURL","zoomccservicedelegate","scheduled callback ios"]},"isInternal":false,"tokens":415,"sizeBytes":1623},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/contact-center/ios/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/ios/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":195,"sizeBytes":980},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/contact-center/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":374,"sizeBytes":1721},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/contact-center/references/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/references/forum-top-questions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (Contact Center)"},"isInternal":false,"tokens":629,"sizeBytes":3300},{"name":"samples-validation.md","path":"partner-built/zoom-plugin/skills/contact-center/references/samples-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/references/samples-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fsamples-validation.md -->","isInternal":false,"tokens":377,"sizeBytes":1721},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/contact-center/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":240,"sizeBytes":1236},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/contact-center/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/RUNBOOK.md","title":"Contact-center Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FRUNBOOK.md -->","isInternal":false,"tokens":678,"sizeBytes":3043},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/contact-center/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":401,"sizeBytes":1770},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/contact-center/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/SKILL.md","title":"build-zoom-contact-center-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2FSKILL.md -->","frontmatter":{"name":"build-zoom-contact-center-app","description":"Reference skill for Zoom Contact Center. Use after routing to a contact-center workflow when implementing app, web, or native integrations; engagement context and state handling; campaigns; callbacks; or version-drift troubleshooting.","triggers":["contact center sdk","zoom contact center","zcc","engagement context","engagement status","campaign sdk","scheduled callback","getengagementcontext","onengagementstatuschange","zoom contact center app"]},"isInternal":false,"tokens":1205,"sizeBytes":5070},{"name":"common-drift-and-breaks.md","path":"partner-built/zoom-plugin/skills/contact-center/troubleshooting/common-drift-and-breaks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/troubleshooting/common-drift-and-breaks.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","isInternal":false,"tokens":351,"sizeBytes":1626},{"name":"lifecycle-and-events.md","path":"partner-built/zoom-plugin/skills/contact-center/web/concepts/lifecycle-and-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/concepts/lifecycle-and-events.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","isInternal":false,"tokens":250,"sizeBytes":1036},{"name":"app-context-and-state.md","path":"partner-built/zoom-plugin/skills/contact-center/web/examples/app-context-and-state.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/examples/app-context-and-state.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Fexamples%2Fapp-context-and-state.md -->","isInternal":false,"tokens":389,"sizeBytes":1557},{"name":"web-reference-map.md","path":"partner-built/zoom-plugin/skills/contact-center/web/references/web-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/references/web-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Freferences%2Fweb-reference-map.md -->","isInternal":false,"tokens":302,"sizeBytes":1214},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/contact-center/web/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/RUNBOOK.md","title":"Web Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FRUNBOOK.md -->","isInternal":false,"tokens":469,"sizeBytes":2251},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/contact-center/web/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/SKILL.md","title":"contact-center/web","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2FSKILL.md -->","frontmatter":{"name":"contact-center/web","description":"Zoom Contact Center SDK for Web. Use for web chat/video/campaign embeds, engagement event handling, app-context integrations, and Smart Embed postMessage workflows.","user-invocable":false,"triggers":["contact center web","zcc web sdk","getengagementcontext web","onengagementcontextchange","contact center smart embed","zcc-init-config-request"]},"isInternal":false,"tokens":426,"sizeBytes":1770},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/contact-center/web/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/contact-center/web/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fcontact-center%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":182,"sizeBytes":862},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md","title":"debug-zoom-integration","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom-integration%2FSKILL.md -->","frontmatter":{"name":"debug-zoom-integration","description":"Debug broken Zoom implementations quickly. Use when auth, webhooks, SDK joins, MCP transport, or real-time media workflows are failing and you need to isolate the layer before proposing a fix.","user-invocable":false},"isInternal":false,"tokens":275,"sizeBytes":1124},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/debug-zoom/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/debug-zoom/SKILL.md","title":"debug-zoom","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdebug-zoom%2FSKILL.md -->","frontmatter":{"name":"debug-zoom","description":"Debug a broken Zoom integration by isolating the failure point and routing into the right Zoom references. Use when auth, API, webhook, SDK, or MCP behavior is failing and you need a ranked hypothesis list plus verification steps.","argument-hint":"<symptoms, error, or failing flow>"},"isInternal":false,"tokens":321,"sizeBytes":1341},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md","title":"design-mcp-workflow","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fdesign-mcp-workflow%2FSKILL.md -->","frontmatter":{"name":"design-mcp-workflow","description":"Design a Zoom MCP workflow for Claude. Use when deciding whether Zoom MCP fits a task, when planning tool-based AI workflows, or when separating MCP responsibilities from REST API responsibilities.","user-invocable":false},"isInternal":false,"tokens":277,"sizeBytes":1212},{"name":"app-types.md","path":"partner-built/zoom-plugin/skills/general/references/app-types.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/app-types.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fapp-types.md -->","isInternal":false,"tokens":619,"sizeBytes":2673},{"name":"authentication.md","path":"partner-built/zoom-plugin/skills/general/references/authentication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/authentication.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthentication.md -->","isInternal":false,"tokens":516,"sizeBytes":2083},{"name":"authorization-patterns.md","path":"partner-built/zoom-plugin/skills/general/references/authorization-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/authorization-patterns.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fauthorization-patterns.md -->","isInternal":false,"tokens":4147,"sizeBytes":21776},{"name":"automatic-skill-chaining-rest-webhooks.md","path":"partner-built/zoom-plugin/skills/general/references/automatic-skill-chaining-rest-webhooks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/automatic-skill-chaining-rest-webhooks.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fautomatic-skill-chaining-rest-webhooks.md -->","isInternal":false,"tokens":1393,"sizeBytes":5628},{"name":"community-repos.md","path":"partner-built/zoom-plugin/skills/general/references/community-repos.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/community-repos.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fcommunity-repos.md -->","isInternal":false,"tokens":2577,"sizeBytes":9472},{"name":"distributed-meeting-fallback-architecture.md","path":"partner-built/zoom-plugin/skills/general/references/distributed-meeting-fallback-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/distributed-meeting-fallback-architecture.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fdistributed-meeting-fallback-architecture.md -->","isInternal":false,"tokens":3680,"sizeBytes":14338},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/general/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":668,"sizeBytes":3032},{"name":"interview-answer-routing.md","path":"partner-built/zoom-plugin/skills/general/references/interview-answer-routing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/interview-answer-routing.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Finterview-answer-routing.md -->","isInternal":false,"tokens":183,"sizeBytes":797},{"name":"known-limitations.md","path":"partner-built/zoom-plugin/skills/general/references/known-limitations.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/known-limitations.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fknown-limitations.md -->","isInternal":false,"tokens":589,"sizeBytes":2564},{"name":"marketplace.md","path":"partner-built/zoom-plugin/skills/general/references/marketplace.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/marketplace.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmarketplace.md -->","isInternal":false,"tokens":384,"sizeBytes":1601},{"name":"meeting-webhooks-oauth-refresh-orchestration.md","path":"partner-built/zoom-plugin/skills/general/references/meeting-webhooks-oauth-refresh-orchestration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/meeting-webhooks-oauth-refresh-orchestration.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fmeeting-webhooks-oauth-refresh-orchestration.md -->","isInternal":false,"tokens":1256,"sizeBytes":5418},{"name":"query-routing-playbook.md","path":"partner-built/zoom-plugin/skills/general/references/query-routing-playbook.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/query-routing-playbook.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fquery-routing-playbook.md -->","isInternal":false,"tokens":662,"sizeBytes":2799},{"name":"routing-implementation.md","path":"partner-built/zoom-plugin/skills/general/references/routing-implementation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/routing-implementation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Frouting-implementation.md -->","isInternal":false,"tokens":2331,"sizeBytes":8864},{"name":"scopes.md","path":"partner-built/zoom-plugin/skills/general/references/scopes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/scopes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fscopes.md -->","isInternal":false,"tokens":890,"sizeBytes":3527},{"name":"sdk-logs-troubleshooting.md","path":"partner-built/zoom-plugin/skills/general/references/sdk-logs-troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/sdk-logs-troubleshooting.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-logs-troubleshooting.md -->","isInternal":false,"tokens":1409,"sizeBytes":5824},{"name":"sdk-upgrade-guide.md","path":"partner-built/zoom-plugin/skills/general/references/sdk-upgrade-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/sdk-upgrade-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-guide.md -->","isInternal":false,"tokens":1015,"sizeBytes":4230},{"name":"sdk-upgrade-workflow.md","path":"partner-built/zoom-plugin/skills/general/references/sdk-upgrade-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/references/sdk-upgrade-workflow.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Freferences%2Fsdk-upgrade-workflow.md -->","isInternal":false,"tokens":815,"sizeBytes":3605},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/general/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/RUNBOOK.md","title":"General Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FRUNBOOK.md -->","isInternal":false,"tokens":527,"sizeBytes":2443},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/general/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/SKILL.md","title":"zoom-general","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2FSKILL.md -->","frontmatter":{"name":"zoom-general","description":"Cross-product Zoom reference skill. Use after the workflow is clear when you need shared platform guidance, app-model comparisons, authentication context, scopes, marketplace considerations, or API-vs-MCP routing.","user-invocable":false,"triggers":["zoom integration","getting started","which zoom sdk","zoom platform","choose zoom api","zoom scopes","marketplace","cross-product","apis vs mcp","api vs mcp"]},"isInternal":false,"tokens":6124,"sizeBytes":25858},{"name":"ai-companion-integration.md","path":"partner-built/zoom-plugin/skills/general/use-cases/ai-companion-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/ai-companion-integration.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-companion-integration.md -->","isInternal":false,"tokens":2378,"sizeBytes":10272},{"name":"ai-integration.md","path":"partner-built/zoom-plugin/skills/general/use-cases/ai-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/ai-integration.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fai-integration.md -->","isInternal":false,"tokens":1612,"sizeBytes":7423},{"name":"apis-vs-mcp-routing.md","path":"partner-built/zoom-plugin/skills/general/use-cases/apis-vs-mcp-routing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/apis-vs-mcp-routing.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fapis-vs-mcp-routing.md -->","isInternal":false,"tokens":781,"sizeBytes":3615},{"name":"backend-automation-s2s-oauth.md","path":"partner-built/zoom-plugin/skills/general/use-cases/backend-automation-s2s-oauth.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/backend-automation-s2s-oauth.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fbackend-automation-s2s-oauth.md -->","isInternal":false,"tokens":1278,"sizeBytes":5093},{"name":"collaborative-apps.md","path":"partner-built/zoom-plugin/skills/general/use-cases/collaborative-apps.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/collaborative-apps.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcollaborative-apps.md -->","isInternal":false,"tokens":621,"sizeBytes":2613},{"name":"contact-center-app-lifecycle-and-context-switching.md","path":"partner-built/zoom-plugin/skills/general/use-cases/contact-center-app-lifecycle-and-context-switching.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/contact-center-app-lifecycle-and-context-switching.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-app-lifecycle-and-context-switching.md -->","isInternal":false,"tokens":245,"sizeBytes":1253},{"name":"contact-center-integration.md","path":"partner-built/zoom-plugin/skills/general/use-cases/contact-center-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/contact-center-integration.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcontact-center-integration.md -->","isInternal":false,"tokens":252,"sizeBytes":1153},{"name":"custom-meeting-ui-web.md","path":"partner-built/zoom-plugin/skills/general/use-cases/custom-meeting-ui-web.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/custom-meeting-ui-web.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-meeting-ui-web.md -->","isInternal":false,"tokens":658,"sizeBytes":2901},{"name":"custom-video.md","path":"partner-built/zoom-plugin/skills/general/use-cases/custom-video.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/custom-video.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustom-video.md -->","isInternal":false,"tokens":1368,"sizeBytes":5736},{"name":"customer-support-cobrowsing.md","path":"partner-built/zoom-plugin/skills/general/use-cases/customer-support-cobrowsing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/customer-support-cobrowsing.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fcustomer-support-cobrowsing.md -->","isInternal":false,"tokens":3006,"sizeBytes":12907},{"name":"electron-meeting-embed.md","path":"partner-built/zoom-plugin/skills/general/use-cases/electron-meeting-embed.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/electron-meeting-embed.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Felectron-meeting-embed.md -->","isInternal":false,"tokens":230,"sizeBytes":1020},{"name":"embed-meetings.md","path":"partner-built/zoom-plugin/skills/general/use-cases/embed-meetings.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/embed-meetings.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fembed-meetings.md -->","isInternal":false,"tokens":1192,"sizeBytes":4973},{"name":"enterprise-app-deployment.md","path":"partner-built/zoom-plugin/skills/general/use-cases/enterprise-app-deployment.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/enterprise-app-deployment.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fenterprise-app-deployment.md -->","isInternal":false,"tokens":234,"sizeBytes":1038},{"name":"flutter-video-sessions.md","path":"partner-built/zoom-plugin/skills/general/use-cases/flutter-video-sessions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/flutter-video-sessions.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fflutter-video-sessions.md -->","isInternal":false,"tokens":204,"sizeBytes":910},{"name":"form-completion-assistant.md","path":"partner-built/zoom-plugin/skills/general/use-cases/form-completion-assistant.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/form-completion-assistant.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fform-completion-assistant.md -->","isInternal":false,"tokens":3722,"sizeBytes":15748},{"name":"hd-video-resolution.md","path":"partner-built/zoom-plugin/skills/general/use-cases/hd-video-resolution.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/hd-video-resolution.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhd-video-resolution.md -->","isInternal":false,"tokens":2342,"sizeBytes":8980},{"name":"high-volume-meeting-platform.md","path":"partner-built/zoom-plugin/skills/general/use-cases/high-volume-meeting-platform.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/high-volume-meeting-platform.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fhigh-volume-meeting-platform.md -->","isInternal":false,"tokens":421,"sizeBytes":1910},{"name":"immersive-experiences.md","path":"partner-built/zoom-plugin/skills/general/use-cases/immersive-experiences.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/immersive-experiences.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fimmersive-experiences.md -->","isInternal":false,"tokens":623,"sizeBytes":2977},{"name":"in-meeting-apps.md","path":"partner-built/zoom-plugin/skills/general/use-cases/in-meeting-apps.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/in-meeting-apps.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fin-meeting-apps.md -->","isInternal":false,"tokens":1872,"sizeBytes":7636},{"name":"marketplace-publishing.md","path":"partner-built/zoom-plugin/skills/general/use-cases/marketplace-publishing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/marketplace-publishing.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmarketplace-publishing.md -->","isInternal":false,"tokens":2237,"sizeBytes":9446},{"name":"meeting-automation.md","path":"partner-built/zoom-plugin/skills/general/use-cases/meeting-automation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/meeting-automation.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-automation.md -->","isInternal":false,"tokens":1631,"sizeBytes":6424},{"name":"meeting-bots.md","path":"partner-built/zoom-plugin/skills/general/use-cases/meeting-bots.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/meeting-bots.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-bots.md -->","isInternal":false,"tokens":2469,"sizeBytes":10903},{"name":"meeting-details-with-events.md","path":"partner-built/zoom-plugin/skills/general/use-cases/meeting-details-with-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/meeting-details-with-events.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-details-with-events.md -->","isInternal":false,"tokens":4565,"sizeBytes":21427},{"name":"meeting-links-vs-embedding.md","path":"partner-built/zoom-plugin/skills/general/use-cases/meeting-links-vs-embedding.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/meeting-links-vs-embedding.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fmeeting-links-vs-embedding.md -->","isInternal":false,"tokens":251,"sizeBytes":989},{"name":"minutes-calculation.md","path":"partner-built/zoom-plugin/skills/general/use-cases/minutes-calculation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/minutes-calculation.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fminutes-calculation.md -->","isInternal":false,"tokens":5465,"sizeBytes":23190},{"name":"native-meeting-sdk-multi-platform.md","path":"partner-built/zoom-plugin/skills/general/use-cases/native-meeting-sdk-multi-platform.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/native-meeting-sdk-multi-platform.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-meeting-sdk-multi-platform.md -->","isInternal":false,"tokens":354,"sizeBytes":1581},{"name":"native-video-sdk-multi-platform.md","path":"partner-built/zoom-plugin/skills/general/use-cases/native-video-sdk-multi-platform.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/native-video-sdk-multi-platform.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fnative-video-sdk-multi-platform.md -->","isInternal":false,"tokens":283,"sizeBytes":1279},{"name":"prebuilt-video-ui.md","path":"partner-built/zoom-plugin/skills/general/use-cases/prebuilt-video-ui.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/prebuilt-video-ui.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprebuilt-video-ui.md -->","isInternal":false,"tokens":2732,"sizeBytes":12694},{"name":"probe-sdk-preflight-readiness-gate.md","path":"partner-built/zoom-plugin/skills/general/use-cases/probe-sdk-preflight-readiness-gate.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/probe-sdk-preflight-readiness-gate.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fprobe-sdk-preflight-readiness-gate.md -->","isInternal":false,"tokens":269,"sizeBytes":1199},{"name":"qss-monitoring.md","path":"partner-built/zoom-plugin/skills/general/use-cases/qss-monitoring.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/qss-monitoring.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fqss-monitoring.md -->","isInternal":false,"tokens":659,"sizeBytes":2800},{"name":"raw-recording.md","path":"partner-built/zoom-plugin/skills/general/use-cases/raw-recording.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/raw-recording.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fraw-recording.md -->","isInternal":false,"tokens":1285,"sizeBytes":5255},{"name":"react-native-meeting-embed.md","path":"partner-built/zoom-plugin/skills/general/use-cases/react-native-meeting-embed.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/react-native-meeting-embed.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-meeting-embed.md -->","isInternal":false,"tokens":247,"sizeBytes":1060},{"name":"react-native-video-sessions.md","path":"partner-built/zoom-plugin/skills/general/use-cases/react-native-video-sessions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/react-native-video-sessions.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freact-native-video-sessions.md -->","isInternal":false,"tokens":217,"sizeBytes":953},{"name":"real-time-media-streams.md","path":"partner-built/zoom-plugin/skills/general/use-cases/real-time-media-streams.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/real-time-media-streams.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Freal-time-media-streams.md -->","isInternal":false,"tokens":1381,"sizeBytes":5588},{"name":"recording-download-pipeline.md","path":"partner-built/zoom-plugin/skills/general/use-cases/recording-download-pipeline.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/recording-download-pipeline.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-download-pipeline.md -->","isInternal":false,"tokens":2176,"sizeBytes":8996},{"name":"recording-transcription.md","path":"partner-built/zoom-plugin/skills/general/use-cases/recording-transcription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/recording-transcription.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frecording-transcription.md -->","isInternal":false,"tokens":1907,"sizeBytes":7778},{"name":"retrieve-meeting-and-subscribe-events.md","path":"partner-built/zoom-plugin/skills/general/use-cases/retrieve-meeting-and-subscribe-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/retrieve-meeting-and-subscribe-events.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fretrieve-meeting-and-subscribe-events.md -->","isInternal":false,"tokens":7111,"sizeBytes":33936},{"name":"rivet-event-driven-api-orchestrator.md","path":"partner-built/zoom-plugin/skills/general/use-cases/rivet-event-driven-api-orchestrator.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/rivet-event-driven-api-orchestrator.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Frivet-event-driven-api-orchestrator.md -->","isInternal":false,"tokens":324,"sizeBytes":1362},{"name":"saas-app-oauth-integration.md","path":"partner-built/zoom-plugin/skills/general/use-cases/saas-app-oauth-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/saas-app-oauth-integration.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsaas-app-oauth-integration.md -->","isInternal":false,"tokens":1178,"sizeBytes":4911},{"name":"scribe-transcription-pipeline.md","path":"partner-built/zoom-plugin/skills/general/use-cases/scribe-transcription-pipeline.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/scribe-transcription-pipeline.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fscribe-transcription-pipeline.md -->","isInternal":false,"tokens":430,"sizeBytes":1845},{"name":"sdk-size-optimization.md","path":"partner-built/zoom-plugin/skills/general/use-cases/sdk-size-optimization.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/sdk-size-optimization.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-size-optimization.md -->","isInternal":false,"tokens":1230,"sizeBytes":5151},{"name":"sdk-wrappers-gui.md","path":"partner-built/zoom-plugin/skills/general/use-cases/sdk-wrappers-gui.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/sdk-wrappers-gui.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fsdk-wrappers-gui.md -->","isInternal":false,"tokens":4021,"sizeBytes":19047},{"name":"server-to-server-oauth-with-webhooks.md","path":"partner-built/zoom-plugin/skills/general/use-cases/server-to-server-oauth-with-webhooks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/server-to-server-oauth-with-webhooks.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fserver-to-server-oauth-with-webhooks.md -->","isInternal":false,"tokens":376,"sizeBytes":1701},{"name":"team-chat-llm-bot.md","path":"partner-built/zoom-plugin/skills/general/use-cases/team-chat-llm-bot.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/team-chat-llm-bot.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fteam-chat-llm-bot.md -->","isInternal":false,"tokens":1735,"sizeBytes":7059},{"name":"testing-development.md","path":"partner-built/zoom-plugin/skills/general/use-cases/testing-development.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/testing-development.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftesting-development.md -->","isInternal":false,"tokens":1819,"sizeBytes":7346},{"name":"token-and-scope-troubleshooting.md","path":"partner-built/zoom-plugin/skills/general/use-cases/token-and-scope-troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/token-and-scope-troubleshooting.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftoken-and-scope-troubleshooting.md -->","isInternal":false,"tokens":578,"sizeBytes":2488},{"name":"transcription-bot-linux.md","path":"partner-built/zoom-plugin/skills/general/use-cases/transcription-bot-linux.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/transcription-bot-linux.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Ftranscription-bot-linux.md -->","isInternal":false,"tokens":3432,"sizeBytes":14897},{"name":"usage-reporting-analytics.md","path":"partner-built/zoom-plugin/skills/general/use-cases/usage-reporting-analytics.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/usage-reporting-analytics.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fusage-reporting-analytics.md -->","isInternal":false,"tokens":2184,"sizeBytes":8769},{"name":"user-and-meeting-creation.md","path":"partner-built/zoom-plugin/skills/general/use-cases/user-and-meeting-creation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/user-and-meeting-creation.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fuser-and-meeting-creation.md -->","isInternal":false,"tokens":3674,"sizeBytes":17452},{"name":"video-sdk-bring-your-own-storage.md","path":"partner-built/zoom-plugin/skills/general/use-cases/video-sdk-bring-your-own-storage.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/video-sdk-bring-your-own-storage.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvideo-sdk-bring-your-own-storage.md -->","isInternal":false,"tokens":1669,"sizeBytes":7084},{"name":"virtual-agent-campaign-web-mobile-wrapper.md","path":"partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-campaign-web-mobile-wrapper.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-campaign-web-mobile-wrapper.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-campaign-web-mobile-wrapper.md -->","isInternal":false,"tokens":322,"sizeBytes":1463},{"name":"virtual-agent-knowledge-base-sync-pipeline.md","path":"partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-knowledge-base-sync-pipeline.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/virtual-agent-knowledge-base-sync-pipeline.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fvirtual-agent-knowledge-base-sync-pipeline.md -->","isInternal":false,"tokens":254,"sizeBytes":1120},{"name":"web-sdk-embedding.md","path":"partner-built/zoom-plugin/skills/general/use-cases/web-sdk-embedding.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/web-sdk-embedding.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fweb-sdk-embedding.md -->","isInternal":false,"tokens":1135,"sizeBytes":4645},{"name":"zoom-phone-smart-embed-crm.md","path":"partner-built/zoom-plugin/skills/general/use-cases/zoom-phone-smart-embed-crm.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/general/use-cases/zoom-phone-smart-embed-crm.md","title":"Use-cases Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fgeneral%2Fuse-cases%2Fzoom-phone-smart-embed-crm.md -->","isInternal":false,"tokens":200,"sizeBytes":876},{"name":"android.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/android.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/android.md","title":"Android Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fandroid.md -->","isInternal":false,"tokens":202,"sizeBytes":856},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":151,"sizeBytes":781},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":156,"sizeBytes":724},{"name":"join-start-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/examples/join-start-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/examples/join-start-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fexamples%2Fjoin-start-pattern.md -->","isInternal":false,"tokens":146,"sizeBytes":709},{"name":"android-reference-map.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/references/android-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/references/android-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","isInternal":false,"tokens":196,"sizeBytes":834},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":194,"sizeBytes":833},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":141,"sizeBytes":666},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/RUNBOOK.md","title":"Android Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FRUNBOOK.md -->","isInternal":false,"tokens":502,"sizeBytes":2372},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":128,"sizeBytes":663},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md","title":"zoom-meeting-sdk-android","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-android","description":"Zoom Meeting SDK for Android native apps. Use when embedding Zoom meetings in Android with\ndefault/custom UI, PKCE + SDK auth, join/start flows, and Meeting SDK API integration.\n","user-invocable":false,"triggers":["meeting sdk android","zoom android sdk","android default ui","android custom ui","join meeting android","start meeting android"]},"isInternal":false,"tokens":429,"sizeBytes":1803},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/android/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/android/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":168,"sizeBytes":823},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/high-level-scenarios.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":164,"sizeBytes":818},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":193,"sizeBytes":937},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":147,"sizeBytes":726},{"name":"authentication-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/authentication-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/authentication-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fauthentication-pattern.md -->","isInternal":false,"tokens":100,"sizeBytes":485},{"name":"join-meeting-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/join-meeting-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/join-meeting-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fjoin-meeting-pattern.md -->","isInternal":false,"tokens":102,"sizeBytes":509},{"name":"raw-data-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/raw-data-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/raw-data-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fraw-data-pattern.md -->","isInternal":false,"tokens":113,"sizeBytes":561},{"name":"setup-guide.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/setup-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/examples/setup-guide.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Fexamples%2Fsetup-guide.md -->","isInternal":false,"tokens":147,"sizeBytes":771},{"name":"electron-reference.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/references/electron-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/references/electron-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Felectron-reference.md -->","isInternal":false,"tokens":119,"sizeBytes":541},{"name":"module-map.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/references/module-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/references/module-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Freferences%2Fmodule-map.md -->","isInternal":false,"tokens":222,"sizeBytes":765},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/RUNBOOK.md","title":"Electron Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FRUNBOOK.md -->","isInternal":false,"tokens":490,"sizeBytes":2311},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md","title":"zoom-meeting-sdk-electron","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-electron","description":"Zoom Meeting SDK for Electron desktop applications. Use when embedding Zoom meetings in an Electron app\nwith the Node addon wrapper, JWT auth, join/start flows, settings controllers, and raw data integration.\n","user-invocable":false,"triggers":["electron meeting sdk","zoom meeting sdk electron","embed zoom in electron","electron zoom bot","zoom node addon","zoom raw data electron"]},"isInternal":false,"tokens":689,"sizeBytes":3000},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":146,"sizeBytes":823},{"name":"deprecated-and-contradictions.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/deprecated-and-contradictions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/deprecated-and-contradictions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","isInternal":false,"tokens":218,"sizeBytes":1184},{"name":"version-drift.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/version-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/electron/troubleshooting/version-drift.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Felectron%2Ftroubleshooting%2Fversion-drift.md -->","isInternal":false,"tokens":97,"sizeBytes":467},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":130,"sizeBytes":660},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":118,"sizeBytes":591},{"name":"join-start-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/examples/join-start-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/examples/join-start-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fexamples%2Fjoin-start-pattern.md -->","isInternal":false,"tokens":127,"sizeBytes":610},{"name":"ios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/ios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/ios.md","title":"Ios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fios.md -->","isInternal":false,"tokens":165,"sizeBytes":737},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":191,"sizeBytes":813},{"name":"ios-reference-map.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/references/ios-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/references/ios-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","isInternal":false,"tokens":174,"sizeBytes":712},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":129,"sizeBytes":597},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/RUNBOOK.md","title":"Ios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FRUNBOOK.md -->","isInternal":false,"tokens":508,"sizeBytes":2352},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":131,"sizeBytes":655},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md","title":"zoom-meeting-sdk-ios","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-ios","description":"Zoom Meeting SDK for iOS native apps. Use when embedding Zoom meetings in iOS with\ndefault/custom UI, PKCE + SDK auth, host start with ZAK, and mobile lifecycle handling.\n","user-invocable":false,"triggers":["meeting sdk ios","zoom ios sdk","mobilertc ios","ios default ui","ios custom ui","join meeting ios","start meeting ios"]},"isInternal":false,"tokens":366,"sizeBytes":1414},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/ios/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/ios/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":131,"sizeBytes":661},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/concepts/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/concepts/high-level-scenarios.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fconcepts%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":3205,"sizeBytes":15179},{"name":"linux.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/linux.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/linux.md","title":"Linux Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Flinux.md -->","isInternal":false,"tokens":2812,"sizeBytes":11275},{"name":"meeting-sdk-bot.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/meeting-sdk-bot.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/meeting-sdk-bot.md","title":"Linux Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Fmeeting-sdk-bot.md -->","isInternal":false,"tokens":6559,"sizeBytes":30524},{"name":"linux-reference.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/references/linux-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/references/linux-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","isInternal":false,"tokens":5553,"sizeBytes":21151},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/RUNBOOK.md","title":"Linux Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FRUNBOOK.md -->","isInternal":false,"tokens":500,"sizeBytes":2350},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md","title":"meeting-sdk/linux","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Flinux%2FSKILL.md -->","frontmatter":{"name":"meeting-sdk/linux","description":"Zoom Meeting SDK for Linux - C++ headless meeting bots with raw audio/video access, transcription, recording, and AI integration for server-side automation","user-invocable":false,"triggers":["linux meeting bot","headless zoom bot","meeting sdk linux","zoom raw recording linux","meeting transcription bot","zoom docker bot","pulseaudio zoom","meeting sdk raw data"]},"isInternal":false,"tokens":3701,"sizeBytes":15605},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":135,"sizeBytes":719},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":99,"sizeBytes":489},{"name":"join-start-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/examples/join-start-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/examples/join-start-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fexamples%2Fjoin-start-pattern.md -->","isInternal":false,"tokens":122,"sizeBytes":584},{"name":"macos.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/macos.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/macos.md","title":"Macos Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fmacos.md -->","isInternal":false,"tokens":155,"sizeBytes":708},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":192,"sizeBytes":827},{"name":"macos-reference-map.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/references/macos-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/references/macos-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","isInternal":false,"tokens":189,"sizeBytes":790},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":143,"sizeBytes":710},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/RUNBOOK.md","title":"Macos Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FRUNBOOK.md -->","isInternal":false,"tokens":508,"sizeBytes":2364},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":120,"sizeBytes":624},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md","title":"zoom-meeting-sdk-macos","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-macos","description":"Zoom Meeting SDK for macOS native apps. Use when embedding Zoom meetings in macOS with\ndefault/custom UI, PKCE + SDK auth, host start/join flows, and desktop meeting feature controllers.\n","user-invocable":false,"triggers":["meeting sdk macos","zoom macos sdk","mac sdk meeting","mac custom ui","mac default ui","join meeting mac","start meeting mac"]},"isInternal":false,"tokens":371,"sizeBytes":1454},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/macos/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/macos/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":141,"sizeBytes":726},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":135,"sizeBytes":581},{"name":"auth-and-token-model.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/auth-and-token-model.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/auth-and-token-model.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fauth-and-token-model.md -->","isInternal":false,"tokens":127,"sizeBytes":514},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/high-level-scenarios.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":191,"sizeBytes":932},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":152,"sizeBytes":615},{"name":"join-meeting-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/join-meeting-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/join-meeting-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fjoin-meeting-pattern.md -->","isInternal":false,"tokens":101,"sizeBytes":415},{"name":"provider-hook-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/provider-hook-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/provider-hook-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fprovider-hook-pattern.md -->","isInternal":false,"tokens":71,"sizeBytes":332},{"name":"setup-guide.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/setup-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/setup-guide.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","isInternal":false,"tokens":281,"sizeBytes":1150},{"name":"start-meeting-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/start-meeting-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/examples/start-meeting-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Fexamples%2Fstart-meeting-pattern.md -->","isInternal":false,"tokens":89,"sizeBytes":368},{"name":"android-setup.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/android-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/android-setup.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fandroid-setup.md -->","isInternal":false,"tokens":100,"sizeBytes":434},{"name":"ios-setup.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/ios-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/ios-setup.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fios-setup.md -->","isInternal":false,"tokens":79,"sizeBytes":394},{"name":"native-bridge-notes.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/native-bridge-notes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/native-bridge-notes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fnative-bridge-notes.md -->","isInternal":false,"tokens":128,"sizeBytes":621},{"name":"official-sources.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/official-sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/official-sources.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","isInternal":false,"tokens":160,"sizeBytes":703},{"name":"wrapper-api.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/wrapper-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/references/wrapper-api.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Freferences%2Fwrapper-api.md -->","isInternal":false,"tokens":207,"sizeBytes":802},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/RUNBOOK.md","title":"React-native Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FRUNBOOK.md -->","isInternal":false,"tokens":508,"sizeBytes":2402},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md","title":"zoom-meeting-sdk-react-native","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-react-native","description":"Zoom Meeting SDK for React Native. Use when embedding Zoom meetings in React Native iOS/Android apps with @zoom/meetingsdk-react-native, JWT auth, join/start flows, platform setup, and native bridge troubleshooting.","user-invocable":false,"triggers":["react native meeting sdk","zoom react native","meetingsdk-react-native","join meeting in react native","start meeting with zak","zoom mobile sdk wrapper"]},"isInternal":false,"tokens":937,"sizeBytes":3883},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":143,"sizeBytes":691},{"name":"deprecated-and-contradictions.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","isInternal":false,"tokens":280,"sizeBytes":1439},{"name":"version-drift.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/version-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/react-native/troubleshooting/version-drift.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","isInternal":false,"tokens":163,"sizeBytes":758},{"name":"ai-companion.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/ai-companion.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/ai-companion.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fai-companion.md -->","isInternal":false,"tokens":1449,"sizeBytes":6582},{"name":"android.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/android.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/android.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fandroid.md -->","isInternal":false,"tokens":162,"sizeBytes":754},{"name":"authorization.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/authorization.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/authorization.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fauthorization.md -->","isInternal":false,"tokens":614,"sizeBytes":2381},{"name":"bot-authentication.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/bot-authentication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/bot-authentication.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbot-authentication.md -->","isInternal":false,"tokens":2776,"sizeBytes":10724},{"name":"breakout-rooms.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/breakout-rooms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/breakout-rooms.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fbreakout-rooms.md -->","isInternal":false,"tokens":2975,"sizeBytes":12132},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":332,"sizeBytes":1448},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/forum-top-questions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (Meeting SDK)"},"isInternal":false,"tokens":906,"sizeBytes":3985},{"name":"ios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/ios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/ios.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fios.md -->","isInternal":false,"tokens":209,"sizeBytes":919},{"name":"macos.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/macos.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/macos.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmacos.md -->","isInternal":false,"tokens":137,"sizeBytes":599},{"name":"multiple-meetings.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/multiple-meetings.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/multiple-meetings.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fmultiple-meetings.md -->","frontmatter":{"title":"Multiple Meetings and Multiple Instances"},"isInternal":false,"tokens":198,"sizeBytes":965},{"name":"signature-playbook.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/signature-playbook.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/signature-playbook.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fsignature-playbook.md -->","frontmatter":{"title":"Meeting SDK Signature Playbook"},"isInternal":false,"tokens":354,"sizeBytes":1427},{"name":"triage-intake.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/triage-intake.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/triage-intake.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftriage-intake.md -->","frontmatter":{"title":"Meeting SDK Triage Intake (What to Ask First)"},"isInternal":false,"tokens":488,"sizeBytes":1925},{"name":"troubleshooting.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/troubleshooting.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Ftroubleshooting.md -->","isInternal":false,"tokens":1000,"sizeBytes":4217},{"name":"unreal.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/unreal.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/unreal.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Funreal.md -->","isInternal":false,"tokens":150,"sizeBytes":732},{"name":"webinars.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/references/webinars.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/references/webinars.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Freferences%2Fwebinars.md -->","isInternal":false,"tokens":1991,"sizeBytes":8059},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/RUNBOOK.md","title":"Meeting-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":614,"sizeBytes":2686},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md","title":"build-zoom-meeting-sdk-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2FSKILL.md -->","frontmatter":{"name":"build-zoom-meeting-sdk-app","description":"Reference skill for Zoom Meeting SDK. Use after routing to a meeting-embed workflow when implementing real Zoom meeting joins, platform-specific SDK behavior, auth and join flows, waiting room issues, or meeting bot patterns.","triggers":["embed meeting","embed zoom meeting","integrate meeting","meeting in web app","meeting in website","add zoom to website","meeting sdk","join meeting programmatically","meeting bot","bot joins meeting","joining meeting timeout","join meeting failed","waiting room","hide meeting info","hide meeting password"]},"isInternal":false,"tokens":2839,"sizeBytes":11215},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":128,"sizeBytes":673},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":92,"sizeBytes":468},{"name":"join-start-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/examples/join-start-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/examples/join-start-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fexamples%2Fjoin-start-pattern.md -->","isInternal":false,"tokens":103,"sizeBytes":525},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":193,"sizeBytes":839},{"name":"unreal-reference-map.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/unreal-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/unreal-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Funreal-reference-map.md -->","isInternal":false,"tokens":161,"sizeBytes":812},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":184,"sizeBytes":882},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/RUNBOOK.md","title":"Unreal Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FRUNBOOK.md -->","isInternal":false,"tokens":514,"sizeBytes":2387},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":120,"sizeBytes":652},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md","title":"zoom-meeting-sdk-unreal","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-unreal","description":"Zoom Meeting SDK for Unreal Engine wrapper integrations. Use when building Unreal projects that\nembed Zoom meetings with C++ and Blueprint wrappers, including wrapper-to-SDK mapping concerns.\n","user-invocable":false,"triggers":["meeting sdk unreal","zoom unreal sdk","unreal zoom wrapper","blueprint zoom sdk","unreal meeting integration"]},"isInternal":false,"tokens":360,"sizeBytes":1459},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":127,"sizeBytes":666},{"name":"unreal.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/unreal/unreal.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/unreal/unreal.md","title":"Unreal Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Funreal%2Funreal.md -->","isInternal":false,"tokens":144,"sizeBytes":702},{"name":"README.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/references/README.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/references/README.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2Freferences%2FREADME.md -->","isInternal":false,"tokens":102,"sizeBytes":457},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/RUNBOOK.md","title":"Client-view Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FRUNBOOK.md -->","isInternal":false,"tokens":510,"sizeBytes":2396},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/client-view/SKILL.md","title":"zoom-meeting-sdk-web-client-view","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fclient-view%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-web-client-view","description":"Zoom Meeting SDK Web - Client View. Full-page Zoom meeting experience with the familiar Zoom interface.\nUses ZoomMtg global singleton with callback-based API. Ideal for quick integration with minimal\ncustomization. Provides the same UI as Zoom Web Client.\n","user-invocable":false,"triggers":["meeting sdk client view","zoommtg","full page zoom ui","password","preparewebsdk"]},"isInternal":false,"tokens":4448,"sizeBytes":16778},{"name":"README.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/references/README.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/references/README.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2Freferences%2FREADME.md -->","isInternal":false,"tokens":103,"sizeBytes":477},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/RUNBOOK.md","title":"Component-view Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FRUNBOOK.md -->","isInternal":false,"tokens":511,"sizeBytes":2419},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/component-view/SKILL.md","title":"zoom-meeting-sdk-web-component-view","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fcomponent-view%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-web-component-view","description":"Zoom Meeting SDK Web - Component View. Embeddable Zoom meeting components with Promise-based API\nfor flexible integration. Ideal for React/Vue/Angular apps and custom layouts. Uses ZoomMtgEmbedded\nwith async/await patterns and embeddable UI containers.\n","user-invocable":false,"triggers":["meeting sdk component view","zoommtgembedded","zoomapproot","embeddable meeting ui","component view embedded zoom","custom meeting ui","custom zoom meeting ui","custom meeting video ui","custom video ui for meeting"]},"isInternal":false,"tokens":3475,"sizeBytes":14428},{"name":"browser-support.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/browser-support.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/browser-support.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fbrowser-support.md -->","isInternal":false,"tokens":2198,"sizeBytes":7792},{"name":"sharedarraybuffer.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/sharedarraybuffer.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/concepts/sharedarraybuffer.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fconcepts%2Fsharedarraybuffer.md -->","isInternal":false,"tokens":2079,"sizeBytes":8436},{"name":"client-view-basic.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/examples/client-view-basic.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/examples/client-view-basic.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fclient-view-basic.md -->","isInternal":false,"tokens":87,"sizeBytes":389},{"name":"component-view-react.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/examples/component-view-react.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/examples/component-view-react.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Fexamples%2Fcomponent-view-react.md -->","isInternal":false,"tokens":92,"sizeBytes":404},{"name":"component-view-breakout-rooms.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-breakout-rooms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-breakout-rooms.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-breakout-rooms.md -->","frontmatter":{"title":"Web Component View: Breakout Rooms (What’s Possible)"},"isInternal":false,"tokens":293,"sizeBytes":1298},{"name":"component-view-ui-customization.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-ui-customization.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/component-view-ui-customization.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fcomponent-view-ui-customization.md -->","frontmatter":{"title":"Web Component View: UI Customization and Limitations"},"isInternal":false,"tokens":451,"sizeBytes":2026},{"name":"sharedarraybuffer-gallery-view.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/sharedarraybuffer-gallery-view.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/sharedarraybuffer-gallery-view.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fsharedarraybuffer-gallery-view.md -->","frontmatter":{"title":"Web: SharedArrayBuffer and Gallery View"},"isInternal":false,"tokens":252,"sizeBytes":1119},{"name":"web-performance-cpu.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-performance-cpu.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-performance-cpu.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-performance-cpu.md -->","frontmatter":{"title":"Web: Performance and CPU (Meeting SDK)"},"isInternal":false,"tokens":185,"sizeBytes":966},{"name":"web-timeout-browser-restriction.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-timeout-browser-restriction.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-timeout-browser-restriction.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-timeout-browser-restriction.md -->","frontmatter":{"title":"Web: Joining Meeting Timeout / Browser Restriction"},"isInternal":false,"tokens":251,"sizeBytes":1118},{"name":"web-tracking-id.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-tracking-id.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/web-tracking-id.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb-tracking-id.md -->","isInternal":false,"tokens":249,"sizeBytes":1130},{"name":"web.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/references/web.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/references/web.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Freferences%2Fweb.md -->","isInternal":false,"tokens":2015,"sizeBytes":8070},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/RUNBOOK.md","title":"Web Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FRUNBOOK.md -->","isInternal":false,"tokens":540,"sizeBytes":2507},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md","title":"zoom-meeting-sdk-web","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-web","description":"Zoom Meeting SDK for Web - Embed Zoom meeting capabilities into web applications. Two integration\noptions: Client View (full-page, familiar Zoom UI) and Component View (embeddable, Promise-based API).\nIncludes SharedArrayBuffer setup for HD video, gallery view, and virtual backgrounds.\n","user-invocable":false,"triggers":["embed meeting web","meeting in react","meeting in nextjs","meeting in vue","meeting in angular","component view","client view","web meeting sdk","javascript meeting","sharedarraybuffer"]},"isInternal":false,"tokens":8527,"sizeBytes":34906},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":2552,"sizeBytes":10173},{"name":"error-codes.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/error-codes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/web/troubleshooting/error-codes.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fweb%2Ftroubleshooting%2Ferror-codes.md -->","isInternal":false,"tokens":2481,"sizeBytes":9799},{"name":"custom-ui-architecture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-architecture.md -->","isInternal":false,"tokens":2227,"sizeBytes":8966},{"name":"custom-ui-vs-raw-data.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-vs-raw-data.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/custom-ui-vs-raw-data.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fcustom-ui-vs-raw-data.md -->","isInternal":false,"tokens":1488,"sizeBytes":6256},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":4867,"sizeBytes":20605},{"name":"singleton-hierarchy.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/singleton-hierarchy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/concepts/singleton-hierarchy.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","isInternal":false,"tokens":4936,"sizeBytes":20647},{"name":"ai-companion.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/ai-companion.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/ai-companion.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fai-companion.md -->","isInternal":false,"tokens":3671,"sizeBytes":16847},{"name":"authentication-pattern.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/authentication-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/authentication-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fauthentication-pattern.md -->","isInternal":false,"tokens":5118,"sizeBytes":21161},{"name":"breakout-rooms.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/breakout-rooms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/breakout-rooms.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fbreakout-rooms.md -->","isInternal":false,"tokens":4574,"sizeBytes":17267},{"name":"captions-transcription.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/captions-transcription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/captions-transcription.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcaptions-transcription.md -->","isInternal":false,"tokens":4237,"sizeBytes":18617},{"name":"chat.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/chat.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/chat.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fchat.md -->","isInternal":false,"tokens":3163,"sizeBytes":13108},{"name":"custom-ui-video-rendering.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/custom-ui-video-rendering.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/custom-ui-video-rendering.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fcustom-ui-video-rendering.md -->","isInternal":false,"tokens":2002,"sizeBytes":8083},{"name":"local-recording.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/local-recording.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/local-recording.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Flocal-recording.md -->","isInternal":false,"tokens":3952,"sizeBytes":17967},{"name":"raw-video-capture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/raw-video-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/raw-video-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","isInternal":false,"tokens":6203,"sizeBytes":24139},{"name":"send-raw-data.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/send-raw-data.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/send-raw-data.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fsend-raw-data.md -->","isInternal":false,"tokens":3224,"sizeBytes":13525},{"name":"service-quality.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/service-quality.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/service-quality.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fservice-quality.md -->","isInternal":false,"tokens":1861,"sizeBytes":8300},{"name":"share-raw-data-capture.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/share-raw-data-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/share-raw-data-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fshare-raw-data-capture.md -->","isInternal":false,"tokens":3867,"sizeBytes":16395},{"name":"video-advanced.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/video-advanced.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/examples/video-advanced.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Fexamples%2Fvideo-advanced.md -->","isInternal":false,"tokens":2329,"sizeBytes":10511},{"name":"deployment.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/references/deployment.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/references/deployment.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fdeployment.md -->","isInternal":false,"tokens":2315,"sizeBytes":7357},{"name":"interface-methods.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/references/interface-methods.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/references/interface-methods.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Finterface-methods.md -->","isInternal":false,"tokens":3701,"sizeBytes":16047},{"name":"windows-reference.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/references/windows-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/references/windows-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","isInternal":false,"tokens":5839,"sizeBytes":23157},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/RUNBOOK.md","title":"Windows Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FRUNBOOK.md -->","isInternal":false,"tokens":504,"sizeBytes":2376},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md","title":"zoom-meeting-sdk-windows","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2FSKILL.md -->","frontmatter":{"name":"zoom-meeting-sdk-windows","description":"Zoom Meeting SDK for Windows - Native C++ SDK for embedding Zoom meetings into Windows desktop\napplications. Supports custom UI architecture with raw video/audio data, headless bots, and deep\nintegration with meeting features. Includes SDK architecture patterns and Windows message loop handling.\n","user-invocable":false,"triggers":["meeting sdk windows","windows meeting sdk","windows meeting bot","c++ meeting sdk windows","custom ui meeting windows"]},"isInternal":false,"tokens":10511,"sizeBytes":45436},{"name":"build-errors.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/build-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/build-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","isInternal":false,"tokens":2601,"sizeBytes":11110},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":5767,"sizeBytes":22630},{"name":"windows-message-loop.md","path":"partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/windows-message-loop.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/meeting-sdk/windows/troubleshooting/windows-message-loop.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fmeeting-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","isInternal":false,"tokens":2297,"sizeBytes":9926},{"name":"oauth-flows.md","path":"partner-built/zoom-plugin/skills/oauth/concepts/oauth-flows.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/concepts/oauth-flows.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Foauth-flows.md -->","isInternal":false,"tokens":4423,"sizeBytes":22724},{"name":"pkce.md","path":"partner-built/zoom-plugin/skills/oauth/concepts/pkce.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/concepts/pkce.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fpkce.md -->","isInternal":false,"tokens":3047,"sizeBytes":14170},{"name":"scopes-architecture.md","path":"partner-built/zoom-plugin/skills/oauth/concepts/scopes-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/concepts/scopes-architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fscopes-architecture.md -->","isInternal":false,"tokens":1733,"sizeBytes":6906},{"name":"state-parameter.md","path":"partner-built/zoom-plugin/skills/oauth/concepts/state-parameter.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/concepts/state-parameter.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Fstate-parameter.md -->","isInternal":false,"tokens":1732,"sizeBytes":8313},{"name":"token-lifecycle.md","path":"partner-built/zoom-plugin/skills/oauth/concepts/token-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/concepts/token-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fconcepts%2Ftoken-lifecycle.md -->","isInternal":false,"tokens":3178,"sizeBytes":15507},{"name":"device-flow.md","path":"partner-built/zoom-plugin/skills/oauth/examples/device-flow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/device-flow.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fdevice-flow.md -->","isInternal":false,"tokens":89,"sizeBytes":371},{"name":"pkce-implementation.md","path":"partner-built/zoom-plugin/skills/oauth/examples/pkce-implementation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/pkce-implementation.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fpkce-implementation.md -->","isInternal":false,"tokens":91,"sizeBytes":379},{"name":"s2s-oauth-basic.md","path":"partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-basic.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-basic.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-basic.md -->","isInternal":false,"tokens":93,"sizeBytes":375},{"name":"s2s-oauth-redis.md","path":"partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-redis.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/s2s-oauth-redis.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fs2s-oauth-redis.md -->","isInternal":false,"tokens":1687,"sizeBytes":6778},{"name":"token-refresh.md","path":"partner-built/zoom-plugin/skills/oauth/examples/token-refresh.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/token-refresh.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Ftoken-refresh.md -->","isInternal":false,"tokens":89,"sizeBytes":373},{"name":"user-oauth-basic.md","path":"partner-built/zoom-plugin/skills/oauth/examples/user-oauth-basic.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/user-oauth-basic.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-basic.md -->","isInternal":false,"tokens":91,"sizeBytes":376},{"name":"user-oauth-mysql.md","path":"partner-built/zoom-plugin/skills/oauth/examples/user-oauth-mysql.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/examples/user-oauth-mysql.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Fexamples%2Fuser-oauth-mysql.md -->","isInternal":false,"tokens":92,"sizeBytes":376},{"name":"classic-scopes.md","path":"partner-built/zoom-plugin/skills/oauth/references/classic-scopes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/references/classic-scopes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fclassic-scopes.md -->","isInternal":false,"tokens":11223,"sizeBytes":50036},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/oauth/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":200,"sizeBytes":863},{"name":"granular-scopes.md","path":"partner-built/zoom-plugin/skills/oauth/references/granular-scopes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/references/granular-scopes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Fgranular-scopes.md -->","isInternal":false,"tokens":11835,"sizeBytes":50030},{"name":"oauth-errors.md","path":"partner-built/zoom-plugin/skills/oauth/references/oauth-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/references/oauth-errors.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Freferences%2Foauth-errors.md -->","isInternal":false,"tokens":1102,"sizeBytes":4915},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/oauth/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/RUNBOOK.md","title":"Oauth Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FRUNBOOK.md -->","isInternal":false,"tokens":807,"sizeBytes":3381},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/oauth/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/SKILL.md","title":"zoom-oauth","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2FSKILL.md -->","frontmatter":{"name":"zoom-oauth","description":"Reference skill for Zoom authentication. Use after routing to an auth workflow when choosing app credentials, grant types, scopes, token refresh behavior, or debugging Zoom OAuth failures.","user-invocable":false,"triggers":["zoom oauth","zoom authentication","zoom authorization","server to server oauth","s2s oauth","zoom access token","zoom refresh token","authorization code flow","device authorization","pkce","zoom api authentication","oauth error 4709","oauth error 4733","oauth error 4735","redirect uri mismatch"]},"isInternal":false,"tokens":7555,"sizeBytes":32976},{"name":"common-errors.md","path":"partner-built/zoom-plugin/skills/oauth/troubleshooting/common-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/troubleshooting/common-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fcommon-errors.md -->","isInternal":false,"tokens":103,"sizeBytes":458},{"name":"redirect-uri-issues.md","path":"partner-built/zoom-plugin/skills/oauth/troubleshooting/redirect-uri-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/troubleshooting/redirect-uri-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fredirect-uri-issues.md -->","isInternal":false,"tokens":47,"sizeBytes":229},{"name":"scope-issues.md","path":"partner-built/zoom-plugin/skills/oauth/troubleshooting/scope-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/troubleshooting/scope-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Fscope-issues.md -->","isInternal":false,"tokens":46,"sizeBytes":222},{"name":"token-issues.md","path":"partner-built/zoom-plugin/skills/oauth/troubleshooting/token-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/oauth/troubleshooting/token-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Foauth%2Ftroubleshooting%2Ftoken-issues.md -->","isInternal":false,"tokens":46,"sizeBytes":222},{"name":"architecture-and-lifecycle.md","path":"partner-built/zoom-plugin/skills/phone/concepts/architecture-and-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/concepts/architecture-and-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fconcepts%2Farchitecture-and-lifecycle.md -->","isInternal":false,"tokens":345,"sizeBytes":1448},{"name":"phone-api-service-pattern.md","path":"partner-built/zoom-plugin/skills/phone/examples/phone-api-service-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/examples/phone-api-service-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fphone-api-service-pattern.md -->","isInternal":false,"tokens":312,"sizeBytes":1323},{"name":"smart-embed-postmessage-bridge.md","path":"partner-built/zoom-plugin/skills/phone/examples/smart-embed-postmessage-bridge.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/examples/smart-embed-postmessage-bridge.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fexamples%2Fsmart-embed-postmessage-bridge.md -->","isInternal":false,"tokens":292,"sizeBytes":1247},{"name":"call-handling-patterns.md","path":"partner-built/zoom-plugin/skills/phone/references/call-handling-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/call-handling-patterns.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcall-handling-patterns.md -->","isInternal":false,"tokens":207,"sizeBytes":961},{"name":"crm-sample-validation.md","path":"partner-built/zoom-plugin/skills/phone/references/crm-sample-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/crm-sample-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fcrm-sample-validation.md -->","isInternal":false,"tokens":293,"sizeBytes":1416},{"name":"deprecations-and-migrations.md","path":"partner-built/zoom-plugin/skills/phone/references/deprecations-and-migrations.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/deprecations-and-migrations.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fdeprecations-and-migrations.md -->","isInternal":false,"tokens":306,"sizeBytes":1192},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/phone/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":317,"sizeBytes":1363},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/phone/references/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/forum-top-questions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (Phone)"},"isInternal":false,"tokens":787,"sizeBytes":3793},{"name":"smart-embed-event-contract.md","path":"partner-built/zoom-plugin/skills/phone/references/smart-embed-event-contract.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/smart-embed-event-contract.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsmart-embed-event-contract.md -->","isInternal":false,"tokens":251,"sizeBytes":1025},{"name":"source-map.md","path":"partner-built/zoom-plugin/skills/phone/references/source-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/references/source-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Freferences%2Fsource-map.md -->","isInternal":false,"tokens":239,"sizeBytes":888},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/phone/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/RUNBOOK.md","title":"Phone Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FRUNBOOK.md -->","isInternal":false,"tokens":368,"sizeBytes":1671},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/phone/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":266,"sizeBytes":1205},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/phone/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/SKILL.md","title":"build-zoom-phone-integration","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2FSKILL.md -->","frontmatter":{"name":"build-zoom-phone-integration","description":"Reference skill for Zoom Phone. Use after routing to a phone workflow when implementing OAuth, Phone APIs, webhooks, Smart Embed events, URI schemes, CRM or CTI dialers, or call handling automation.","triggers":["zoom phone","phone smart embed","zoom phone api","zoom phone webhook","call history","call handling","zoomphonecall","zoomphonesms","phone crm integration","call element"]},"isInternal":false,"tokens":1016,"sizeBytes":4280},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/phone/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/phone/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fphone%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":277,"sizeBytes":1239},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md","title":"plan-zoom-integration","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-integration%2FSKILL.md -->","frontmatter":{"name":"plan-zoom-integration","description":"Turn a Zoom integration idea into an implementation plan with architecture, auth, and delivery milestones. Use when you need a practical build plan, phased delivery sequence, risk list, and next-step recommendation.","argument-hint":"<what you want to build>","user-invocable":false},"isInternal":false,"tokens":335,"sizeBytes":1457},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md","title":"plan-zoom-product","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fplan-zoom-product%2FSKILL.md -->","frontmatter":{"name":"plan-zoom-product","description":"Choose the right Zoom building surface for a use case and explain the tradeoffs clearly. Use when deciding between REST API, Webhooks, WebSockets, Meeting SDK, Video SDK, Zoom Apps SDK, Phone, Contact Center, or MCP for a specific product idea or integration goal.","argument-hint":"<product idea, app type, or integration goal>","user-invocable":false},"isInternal":false,"tokens":370,"sizeBytes":1581},{"name":"architecture-and-lifecycle.md","path":"partner-built/zoom-plugin/skills/probe-sdk/concepts/architecture-and-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/concepts/architecture-and-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","isInternal":false,"tokens":427,"sizeBytes":1909},{"name":"comprehensive-network-pattern.md","path":"partner-built/zoom-plugin/skills/probe-sdk/examples/comprehensive-network-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/examples/comprehensive-network-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fcomprehensive-network-pattern.md -->","isInternal":false,"tokens":219,"sizeBytes":904},{"name":"diagnostic-page-pattern.md","path":"partner-built/zoom-plugin/skills/probe-sdk/examples/diagnostic-page-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/examples/diagnostic-page-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fexamples%2Fdiagnostic-page-pattern.md -->","isInternal":false,"tokens":342,"sizeBytes":1397},{"name":"probe-sdk.md","path":"partner-built/zoom-plugin/skills/probe-sdk/probe-sdk.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/probe-sdk.md","title":"Probe-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fprobe-sdk.md -->","isInternal":false,"tokens":147,"sizeBytes":698},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/probe-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":283,"sizeBytes":1317},{"name":"probe-reference-map.md","path":"partner-built/zoom-plugin/skills/probe-sdk/references/probe-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/references/probe-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fprobe-reference-map.md -->","isInternal":false,"tokens":263,"sizeBytes":967},{"name":"samples-validation.md","path":"partner-built/zoom-plugin/skills/probe-sdk/references/samples-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/references/samples-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsamples-validation.md -->","isInternal":false,"tokens":206,"sizeBytes":1005},{"name":"source-map.md","path":"partner-built/zoom-plugin/skills/probe-sdk/references/source-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/references/source-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fsource-map.md -->","isInternal":false,"tokens":143,"sizeBytes":502},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/probe-sdk/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":225,"sizeBytes":1107},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/probe-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/RUNBOOK.md","title":"Probe-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":521,"sizeBytes":2430},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/probe-sdk/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":234,"sizeBytes":1207},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/probe-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/SKILL.md","title":"probe-sdk","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2FSKILL.md -->","frontmatter":{"name":"probe-sdk","description":"Reference skill for Zoom Probe SDK. Use after routing to a preflight workflow when testing browser compatibility, media permissions, audio or video diagnostics, and network readiness before users join.","user-invocable":false,"triggers":["probe sdk","zoom probe","@zoom/probesdk","media diagnostics","network diagnostic","preflight check","diagnose audio video","browser compatibility diagnostics","diagnostic report"]},"isInternal":false,"tokens":862,"sizeBytes":3595},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/probe-sdk/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/probe-sdk/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fprobe-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":402,"sizeBytes":1925},{"name":"api-architecture.md","path":"partner-built/zoom-plugin/skills/rest-api/concepts/api-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/concepts/api-architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fapi-architecture.md -->","isInternal":false,"tokens":2297,"sizeBytes":9081},{"name":"authentication-flows.md","path":"partner-built/zoom-plugin/skills/rest-api/concepts/authentication-flows.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/concepts/authentication-flows.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fauthentication-flows.md -->","isInternal":false,"tokens":2311,"sizeBytes":9317},{"name":"meeting-urls-and-sdk-joining.md","path":"partner-built/zoom-plugin/skills/rest-api/concepts/meeting-urls-and-sdk-joining.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/concepts/meeting-urls-and-sdk-joining.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Fmeeting-urls-and-sdk-joining.md -->","frontmatter":{"title":"Meeting URLs vs Meeting SDK Joining"},"isInternal":false,"tokens":288,"sizeBytes":1195},{"name":"rate-limiting-strategy.md","path":"partner-built/zoom-plugin/skills/rest-api/concepts/rate-limiting-strategy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/concepts/rate-limiting-strategy.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fconcepts%2Frate-limiting-strategy.md -->","isInternal":false,"tokens":2597,"sizeBytes":9786},{"name":"graphql-queries.md","path":"partner-built/zoom-plugin/skills/rest-api/examples/graphql-queries.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/examples/graphql-queries.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fgraphql-queries.md -->","isInternal":false,"tokens":97,"sizeBytes":466},{"name":"meeting-lifecycle.md","path":"partner-built/zoom-plugin/skills/rest-api/examples/meeting-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/examples/meeting-lifecycle.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fmeeting-lifecycle.md -->","isInternal":false,"tokens":3810,"sizeBytes":14915},{"name":"recording-pipeline.md","path":"partner-built/zoom-plugin/skills/rest-api/examples/recording-pipeline.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/examples/recording-pipeline.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Frecording-pipeline.md -->","isInternal":false,"tokens":132,"sizeBytes":662},{"name":"user-management.md","path":"partner-built/zoom-plugin/skills/rest-api/examples/user-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/examples/user-management.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fuser-management.md -->","isInternal":false,"tokens":114,"sizeBytes":510},{"name":"webhook-server.md","path":"partner-built/zoom-plugin/skills/rest-api/examples/webhook-server.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/examples/webhook-server.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Fexamples%2Fwebhook-server.md -->","isInternal":false,"tokens":3611,"sizeBytes":14712},{"name":"accounts.md","path":"partner-built/zoom-plugin/skills/rest-api/references/accounts.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/accounts.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Faccounts.md -->","isInternal":false,"tokens":1813,"sizeBytes":7657},{"name":"ai-companion.md","path":"partner-built/zoom-plugin/skills/rest-api/references/ai-companion.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/ai-companion.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-companion.md -->","isInternal":false,"tokens":269,"sizeBytes":1222},{"name":"ai-services.md","path":"partner-built/zoom-plugin/skills/rest-api/references/ai-services.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/ai-services.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fai-services.md -->","isInternal":false,"tokens":400,"sizeBytes":1564},{"name":"authentication.md","path":"partner-built/zoom-plugin/skills/rest-api/references/authentication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/authentication.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauthentication.md -->","isInternal":false,"tokens":2815,"sizeBytes":11320},{"name":"auto-dialer.md","path":"partner-built/zoom-plugin/skills/rest-api/references/auto-dialer.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/auto-dialer.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fauto-dialer.md -->","isInternal":false,"tokens":730,"sizeBytes":2706},{"name":"calendar.md","path":"partner-built/zoom-plugin/skills/rest-api/references/calendar.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/calendar.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcalendar.md -->","isInternal":false,"tokens":1204,"sizeBytes":5002},{"name":"chatbot.md","path":"partner-built/zoom-plugin/skills/rest-api/references/chatbot.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/chatbot.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fchatbot.md -->","isInternal":false,"tokens":346,"sizeBytes":1451},{"name":"clips.md","path":"partner-built/zoom-plugin/skills/rest-api/references/clips.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/clips.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fclips.md -->","isInternal":false,"tokens":729,"sizeBytes":2936},{"name":"cobrowse-sdk-api.md","path":"partner-built/zoom-plugin/skills/rest-api/references/cobrowse-sdk-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/cobrowse-sdk-api.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcobrowse-sdk-api.md -->","isInternal":false,"tokens":340,"sizeBytes":1438},{"name":"commerce.md","path":"partner-built/zoom-plugin/skills/rest-api/references/commerce.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/commerce.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcommerce.md -->","isInternal":false,"tokens":1357,"sizeBytes":5980},{"name":"contact-center.md","path":"partner-built/zoom-plugin/skills/rest-api/references/contact-center.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/contact-center.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcontact-center.md -->","isInternal":false,"tokens":8251,"sizeBytes":33905},{"name":"crc.md","path":"partner-built/zoom-plugin/skills/rest-api/references/crc.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/crc.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fcrc.md -->","isInternal":false,"tokens":864,"sizeBytes":3602},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/rest-api/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":221,"sizeBytes":976},{"name":"events.md","path":"partner-built/zoom-plugin/skills/rest-api/references/events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fevents.md -->","isInternal":false,"tokens":3256,"sizeBytes":13337},{"name":"graphql.md","path":"partner-built/zoom-plugin/skills/rest-api/references/graphql.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/graphql.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fgraphql.md -->","isInternal":false,"tokens":2189,"sizeBytes":9126},{"name":"healthcare.md","path":"partner-built/zoom-plugin/skills/rest-api/references/healthcare.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/healthcare.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fhealthcare.md -->","isInternal":false,"tokens":310,"sizeBytes":1358},{"name":"mail.md","path":"partner-built/zoom-plugin/skills/rest-api/references/mail.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/mail.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmail.md -->","isInternal":false,"tokens":1694,"sizeBytes":7020},{"name":"marketplace-apps.md","path":"partner-built/zoom-plugin/skills/rest-api/references/marketplace-apps.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/marketplace-apps.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmarketplace-apps.md -->","isInternal":false,"tokens":987,"sizeBytes":4090},{"name":"meetings.md","path":"partner-built/zoom-plugin/skills/rest-api/references/meetings.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/meetings.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fmeetings.md -->","isInternal":false,"tokens":5756,"sizeBytes":21768},{"name":"number-management.md","path":"partner-built/zoom-plugin/skills/rest-api/references/number-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/number-management.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fnumber-management.md -->","isInternal":false,"tokens":1155,"sizeBytes":4872},{"name":"openapi.md","path":"partner-built/zoom-plugin/skills/rest-api/references/openapi.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/openapi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fopenapi.md -->","isInternal":false,"tokens":1150,"sizeBytes":4534},{"name":"phone.md","path":"partner-built/zoom-plugin/skills/rest-api/references/phone.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/phone.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fphone.md -->","isInternal":false,"tokens":11631,"sizeBytes":47047},{"name":"qss.md","path":"partner-built/zoom-plugin/skills/rest-api/references/qss.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/qss.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fqss.md -->","isInternal":false,"tokens":381,"sizeBytes":1642},{"name":"quality-management.md","path":"partner-built/zoom-plugin/skills/rest-api/references/quality-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/quality-management.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fquality-management.md -->","isInternal":false,"tokens":397,"sizeBytes":1739},{"name":"rate-limits.md","path":"partner-built/zoom-plugin/skills/rest-api/references/rate-limits.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/rate-limits.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frate-limits.md -->","isInternal":false,"tokens":2661,"sizeBytes":10160},{"name":"recordings.md","path":"partner-built/zoom-plugin/skills/rest-api/references/recordings.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/recordings.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frecordings.md -->","isInternal":false,"tokens":347,"sizeBytes":1397},{"name":"reports.md","path":"partner-built/zoom-plugin/skills/rest-api/references/reports.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/reports.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Freports.md -->","isInternal":false,"tokens":357,"sizeBytes":1261},{"name":"revenue-accelerator.md","path":"partner-built/zoom-plugin/skills/rest-api/references/revenue-accelerator.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/revenue-accelerator.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frevenue-accelerator.md -->","isInternal":false,"tokens":2386,"sizeBytes":9575},{"name":"rooms.md","path":"partner-built/zoom-plugin/skills/rest-api/references/rooms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/rooms.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Frooms.md -->","isInternal":false,"tokens":3762,"sizeBytes":15712},{"name":"scheduler.md","path":"partner-built/zoom-plugin/skills/rest-api/references/scheduler.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/scheduler.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscheduler.md -->","isInternal":false,"tokens":898,"sizeBytes":3920},{"name":"scim2.md","path":"partner-built/zoom-plugin/skills/rest-api/references/scim2.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/scim2.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fscim2.md -->","isInternal":false,"tokens":531,"sizeBytes":1939},{"name":"tasks.md","path":"partner-built/zoom-plugin/skills/rest-api/references/tasks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/tasks.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Ftasks.md -->","isInternal":false,"tokens":666,"sizeBytes":2682},{"name":"team-chat.md","path":"partner-built/zoom-plugin/skills/rest-api/references/team-chat.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/team-chat.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fteam-chat.md -->","isInternal":false,"tokens":3442,"sizeBytes":13864},{"name":"users.md","path":"partner-built/zoom-plugin/skills/rest-api/references/users.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/users.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fusers.md -->","isInternal":false,"tokens":1894,"sizeBytes":7486},{"name":"video-management.md","path":"partner-built/zoom-plugin/skills/rest-api/references/video-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/video-management.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-management.md -->","isInternal":false,"tokens":934,"sizeBytes":4104},{"name":"video-sdk-api.md","path":"partner-built/zoom-plugin/skills/rest-api/references/video-sdk-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/video-sdk-api.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvideo-sdk-api.md -->","isInternal":false,"tokens":1347,"sizeBytes":5475},{"name":"virtual-agent.md","path":"partner-built/zoom-plugin/skills/rest-api/references/virtual-agent.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/virtual-agent.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fvirtual-agent.md -->","isInternal":false,"tokens":573,"sizeBytes":2258},{"name":"webinars.md","path":"partner-built/zoom-plugin/skills/rest-api/references/webinars.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/webinars.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwebinars.md -->","isInternal":false,"tokens":351,"sizeBytes":1191},{"name":"whiteboard.md","path":"partner-built/zoom-plugin/skills/rest-api/references/whiteboard.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/whiteboard.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fwhiteboard.md -->","isInternal":false,"tokens":1313,"sizeBytes":5446},{"name":"workforce-management.md","path":"partner-built/zoom-plugin/skills/rest-api/references/workforce-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/workforce-management.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fworkforce-management.md -->","isInternal":false,"tokens":711,"sizeBytes":3195},{"name":"zoom-docs.md","path":"partner-built/zoom-plugin/skills/rest-api/references/zoom-docs.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/references/zoom-docs.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Freferences%2Fzoom-docs.md -->","isInternal":false,"tokens":820,"sizeBytes":3316},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/rest-api/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/RUNBOOK.md","title":"Rest-api Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FRUNBOOK.md -->","isInternal":false,"tokens":754,"sizeBytes":3224},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/rest-api/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/SKILL.md","title":"build-zoom-rest-api-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2FSKILL.md -->","frontmatter":{"name":"build-zoom-rest-api-app","description":"Reference skill for Zoom REST API. Use after choosing an API-based workflow when you need endpoint selection, resource-management patterns, OAuth requirements, rate-limit awareness, or API error debugging.","triggers":["api call","rest api","api create meeting","api get meeting","api list meetings","api update meeting","api delete meeting","meeting endpoint","/v2/meetings","create user","zoom api","api endpoint","recordings api","users api","webinars api","server-to-server oauth","account_credentials","account id","invalid access token","does not contain scopes","access token is expired","webhook verification","crc","download_url"]},"isInternal":false,"tokens":6295,"sizeBytes":26477},{"name":"common-errors.md","path":"partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-errors.md -->","isInternal":false,"tokens":2927,"sizeBytes":11979},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":154,"sizeBytes":651},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/rest-api/troubleshooting/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/troubleshooting/forum-top-questions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (REST API)"},"isInternal":false,"tokens":387,"sizeBytes":1756},{"name":"token-scope-playbook.md","path":"partner-built/zoom-plugin/skills/rest-api/troubleshooting/token-scope-playbook.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rest-api/troubleshooting/token-scope-playbook.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frest-api%2Ftroubleshooting%2Ftoken-scope-playbook.md -->","frontmatter":{"title":"Token + Scope Playbook (Invalid Access Token / Missing Scopes)"},"isInternal":false,"tokens":372,"sizeBytes":1503},{"name":"architecture-and-lifecycle.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/concepts/architecture-and-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/concepts/architecture-and-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fconcepts%2Farchitecture-and-lifecycle.md -->","isInternal":false,"tokens":630,"sizeBytes":3416},{"name":"getting-started-pattern.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/examples/getting-started-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/examples/getting-started-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fgetting-started-pattern.md -->","isInternal":false,"tokens":288,"sizeBytes":1291},{"name":"multi-client-pattern.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/examples/multi-client-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/examples/multi-client-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fexamples%2Fmulti-client-pattern.md -->","isInternal":false,"tokens":426,"sizeBytes":1779},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":546,"sizeBytes":2217},{"name":"rivet-reference-map.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/references/rivet-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/references/rivet-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Frivet-reference-map.md -->","isInternal":false,"tokens":283,"sizeBytes":1136},{"name":"samples-validation.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/references/samples-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/references/samples-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsamples-validation.md -->","isInternal":false,"tokens":362,"sizeBytes":1712},{"name":"source-map.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/references/source-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/references/source-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fsource-map.md -->","isInternal":false,"tokens":237,"sizeBytes":893},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":241,"sizeBytes":1178},{"name":"rivet-sdk.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/rivet-sdk.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/rivet-sdk.md","title":"Rivet-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Frivet-sdk.md -->","isInternal":false,"tokens":140,"sizeBytes":614},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/RUNBOOK.md","title":"Rivet-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":602,"sizeBytes":2739},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":475,"sizeBytes":2026},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md","title":"rivet-sdk","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2FSKILL.md -->","frontmatter":{"name":"rivet-sdk","description":"Reference skill for Zoom Rivet SDK. Use after routing to a Rivet-based server workflow when implementing auth handling, webhook consumers, API wrappers, multi-module composition, or Lambda receiver patterns.","user-invocable":false,"triggers":["rivet","zoom rivet","@zoom/rivet","rivet javascript","rivet sdk","rivet webhook","rivet oauth","rivet lambda","rivet team chat","rivet chatbot"]},"isInternal":false,"tokens":1107,"sizeBytes":4604},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/rivet-sdk/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rivet-sdk/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frivet-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":288,"sizeBytes":1471},{"name":"connection-architecture.md","path":"partner-built/zoom-plugin/skills/rtms/concepts/connection-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/concepts/connection-architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Fconnection-architecture.md -->","isInternal":false,"tokens":1804,"sizeBytes":9285},{"name":"lifecycle-flow.md","path":"partner-built/zoom-plugin/skills/rtms/concepts/lifecycle-flow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/concepts/lifecycle-flow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fconcepts%2Flifecycle-flow.md -->","isInternal":false,"tokens":3259,"sizeBytes":13789},{"name":"ai-integration.md","path":"partner-built/zoom-plugin/skills/rtms/examples/ai-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/examples/ai-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fai-integration.md -->","isInternal":false,"tokens":2980,"sizeBytes":11681},{"name":"manual-websocket.md","path":"partner-built/zoom-plugin/skills/rtms/examples/manual-websocket.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/examples/manual-websocket.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fmanual-websocket.md -->","isInternal":false,"tokens":4241,"sizeBytes":17335},{"name":"rtms-bot.md","path":"partner-built/zoom-plugin/skills/rtms/examples/rtms-bot.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/examples/rtms-bot.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Frtms-bot.md -->","isInternal":false,"tokens":5528,"sizeBytes":26904},{"name":"sdk-quickstart.md","path":"partner-built/zoom-plugin/skills/rtms/examples/sdk-quickstart.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/examples/sdk-quickstart.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Fexamples%2Fsdk-quickstart.md -->","isInternal":false,"tokens":2495,"sizeBytes":9538},{"name":"connection.md","path":"partner-built/zoom-plugin/skills/rtms/references/connection.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/connection.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fconnection.md -->","isInternal":false,"tokens":2010,"sizeBytes":8226},{"name":"data-types.md","path":"partner-built/zoom-plugin/skills/rtms/references/data-types.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/data-types.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fdata-types.md -->","isInternal":false,"tokens":3618,"sizeBytes":13981},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/rtms/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":312,"sizeBytes":1303},{"name":"media-types.md","path":"partner-built/zoom-plugin/skills/rtms/references/media-types.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/media-types.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fmedia-types.md -->","isInternal":false,"tokens":1732,"sizeBytes":6103},{"name":"quickstart.md","path":"partner-built/zoom-plugin/skills/rtms/references/quickstart.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/quickstart.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fquickstart.md -->","isInternal":false,"tokens":1747,"sizeBytes":6734},{"name":"webhooks.md","path":"partner-built/zoom-plugin/skills/rtms/references/webhooks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/references/webhooks.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Freferences%2Fwebhooks.md -->","isInternal":false,"tokens":1971,"sizeBytes":7624},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/rtms/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/RUNBOOK.md","title":"Rtms Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FRUNBOOK.md -->","isInternal":false,"tokens":579,"sizeBytes":2677},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/rtms/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/SKILL.md","title":"zoom-rtms","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2FSKILL.md -->","frontmatter":{"name":"zoom-rtms","description":"Reference skill for Zoom RTMS. Use after routing to a live-media workflow when processing real-time audio, video, chat, transcripts, screen share, or contact-center voice streams.","user-invocable":false,"triggers":["real-time media","rtms","live audio stream","live video stream","meeting transcription","raw audio","raw video","websocket media","live transcript","streaming audio","streaming video","meeting bot media","contact center voice media","participant video on","participant video off","single individual video stream"]},"isInternal":false,"tokens":5732,"sizeBytes":23952},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/rtms/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/rtms/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Frtms%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":2553,"sizeBytes":10655},{"name":"auth-and-processing-modes.md","path":"partner-built/zoom-plugin/skills/scribe/concepts/auth-and-processing-modes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/concepts/auth-and-processing-modes.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fconcepts%2Fauth-and-processing-modes.md -->","isInternal":false,"tokens":744,"sizeBytes":3235},{"name":"batch-webhook-pipeline.md","path":"partner-built/zoom-plugin/skills/scribe/examples/batch-webhook-pipeline.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/examples/batch-webhook-pipeline.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Fbatch-webhook-pipeline.md -->","isInternal":false,"tokens":414,"sizeBytes":1593},{"name":"fast-mode-node.md","path":"partner-built/zoom-plugin/skills/scribe/examples/fast-mode-node.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/examples/fast-mode-node.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fexamples%2Ffast-mode-node.md -->","isInternal":false,"tokens":461,"sizeBytes":1844},{"name":"api-reference.md","path":"partner-built/zoom-plugin/skills/scribe/references/api-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/references/api-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fapi-reference.md -->","isInternal":false,"tokens":773,"sizeBytes":2688},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/scribe/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":348,"sizeBytes":1577},{"name":"samples-validation.md","path":"partner-built/zoom-plugin/skills/scribe/references/samples-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/references/samples-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fsamples-validation.md -->","isInternal":false,"tokens":470,"sizeBytes":2073},{"name":"versioning-and-drift.md","path":"partner-built/zoom-plugin/skills/scribe/references/versioning-and-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/references/versioning-and-drift.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Freferences%2Fversioning-and-drift.md -->","isInternal":false,"tokens":429,"sizeBytes":2084},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/scribe/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/RUNBOOK.md","title":"Scribe Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FRUNBOOK.md -->","isInternal":false,"tokens":976,"sizeBytes":4312},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/scribe/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":655,"sizeBytes":3130},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/scribe/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/SKILL.md","title":"scribe","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2FSKILL.md -->","frontmatter":{"name":"scribe","description":"Reference skill for Zoom AI Services Scribe. Use after routing to a transcription workflow when handling uploaded or stored media, Build-platform JWT auth, fast mode transcription, batch jobs, or transcript pipeline design.","user-invocable":false,"triggers":["scribe","ai services scribe","zoom scribe","transcribe audio file","transcribe video file","batch transcription","fast mode transcription","build platform jwt"]},"isInternal":false,"tokens":1426,"sizeBytes":5940},{"name":"common-drift-and-breaks.md","path":"partner-built/zoom-plugin/skills/scribe/troubleshooting/common-drift-and-breaks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/scribe/troubleshooting/common-drift-and-breaks.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fscribe%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","isInternal":false,"tokens":1072,"sizeBytes":4743},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md","title":"setup-zoom-mcp","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-mcp%2FSKILL.md -->","frontmatter":{"name":"setup-zoom-mcp","description":"Decide when Zoom MCP is the right fit and produce a safe setup plan for Claude. Use when planning AI workflows over Zoom data, deciding between MCP and REST, or defining a hybrid MCP architecture.","argument-hint":"<AI workflow or MCP use case>"},"isInternal":false,"tokens":293,"sizeBytes":1263},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md","title":"setup-zoom-oauth","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fsetup-zoom-oauth%2FSKILL.md -->","frontmatter":{"name":"setup-zoom-oauth","description":"Implement Zoom authentication correctly. Use when setting up app credentials, choosing an OAuth grant, requesting scopes, handling token refresh, or debugging auth failures."},"isInternal":false,"tokens":269,"sizeBytes":1275},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/start/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/start/SKILL.md","title":"start","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fstart%2FSKILL.md -->","frontmatter":{"name":"start","description":"Start here for any Zoom integration or app idea. Use when you need to choose the right Zoom surface, shape the architecture, or route into the correct implementation skill without reading the whole Zoom doc set first."},"isInternal":false,"tokens":496,"sizeBytes":1959},{"name":"api-selection.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/api-selection.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/api-selection.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fapi-selection.md -->","isInternal":false,"tokens":1859,"sizeBytes":7466},{"name":"authentication.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/authentication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/authentication.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fauthentication.md -->","isInternal":false,"tokens":352,"sizeBytes":1472},{"name":"deployment.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/deployment.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/deployment.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fdeployment.md -->","isInternal":false,"tokens":174,"sizeBytes":719},{"name":"environment-setup.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/environment-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/environment-setup.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fenvironment-setup.md -->","isInternal":false,"tokens":2209,"sizeBytes":9031},{"name":"message-structure.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/message-structure.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/message-structure.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fmessage-structure.md -->","isInternal":false,"tokens":157,"sizeBytes":676},{"name":"security.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/security.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/security.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fsecurity.md -->","isInternal":false,"tokens":95,"sizeBytes":479},{"name":"webhooks.md","path":"partner-built/zoom-plugin/skills/team-chat/concepts/webhooks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/concepts/webhooks.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fconcepts%2Fwebhooks.md -->","isInternal":false,"tokens":2948,"sizeBytes":12150},{"name":"button-actions.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/button-actions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/button-actions.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fbutton-actions.md -->","isInternal":false,"tokens":93,"sizeBytes":394},{"name":"channel-management.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/channel-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/channel-management.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchannel-management.md -->","isInternal":false,"tokens":70,"sizeBytes":321},{"name":"chatbot-setup.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/chatbot-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/chatbot-setup.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fchatbot-setup.md -->","isInternal":false,"tokens":3101,"sizeBytes":12533},{"name":"database-integration.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/database-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/database-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdatabase-integration.md -->","isInternal":false,"tokens":80,"sizeBytes":313},{"name":"dropdown-selects.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/dropdown-selects.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/dropdown-selects.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fdropdown-selects.md -->","isInternal":false,"tokens":72,"sizeBytes":305},{"name":"form-submissions.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/form-submissions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/form-submissions.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fform-submissions.md -->","isInternal":false,"tokens":83,"sizeBytes":386},{"name":"llm-integration.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/llm-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/llm-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fllm-integration.md -->","isInternal":false,"tokens":117,"sizeBytes":532},{"name":"multi-step-workflows.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/multi-step-workflows.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/multi-step-workflows.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fmulti-step-workflows.md -->","isInternal":false,"tokens":79,"sizeBytes":301},{"name":"oauth-setup.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/oauth-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/oauth-setup.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Foauth-setup.md -->","isInternal":false,"tokens":382,"sizeBytes":1596},{"name":"scheduled-alerts.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/scheduled-alerts.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/scheduled-alerts.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fscheduled-alerts.md -->","isInternal":false,"tokens":85,"sizeBytes":353},{"name":"send-message.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/send-message.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/send-message.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fsend-message.md -->","isInternal":false,"tokens":106,"sizeBytes":418},{"name":"slash-commands.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/slash-commands.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/slash-commands.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Fslash-commands.md -->","isInternal":false,"tokens":112,"sizeBytes":510},{"name":"token-management.md","path":"partner-built/zoom-plugin/skills/team-chat/examples/token-management.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/examples/token-management.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fexamples%2Ftoken-management.md -->","isInternal":false,"tokens":106,"sizeBytes":443},{"name":"get-started.md","path":"partner-built/zoom-plugin/skills/team-chat/get-started.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/get-started.md","title":"Team-chat Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Fget-started.md -->","isInternal":false,"tokens":437,"sizeBytes":1678},{"name":"api-reference.md","path":"partner-built/zoom-plugin/skills/team-chat/references/api-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/api-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fapi-reference.md -->","isInternal":false,"tokens":131,"sizeBytes":539},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/team-chat/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":223,"sizeBytes":1006},{"name":"error-codes.md","path":"partner-built/zoom-plugin/skills/team-chat/references/error-codes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/error-codes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Ferror-codes.md -->","isInternal":false,"tokens":100,"sizeBytes":449},{"name":"jid-formats.md","path":"partner-built/zoom-plugin/skills/team-chat/references/jid-formats.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/jid-formats.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fjid-formats.md -->","isInternal":false,"tokens":52,"sizeBytes":248},{"name":"message-cards.md","path":"partner-built/zoom-plugin/skills/team-chat/references/message-cards.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/message-cards.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fmessage-cards.md -->","isInternal":false,"tokens":1902,"sizeBytes":6744},{"name":"rate-limits.md","path":"partner-built/zoom-plugin/skills/team-chat/references/rate-limits.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/rate-limits.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Frate-limits.md -->","isInternal":false,"tokens":42,"sizeBytes":206},{"name":"sample-comparison.md","path":"partner-built/zoom-plugin/skills/team-chat/references/sample-comparison.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/sample-comparison.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsample-comparison.md -->","isInternal":false,"tokens":218,"sizeBytes":1143},{"name":"samples.md","path":"partner-built/zoom-plugin/skills/team-chat/references/samples.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/samples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fsamples.md -->","isInternal":false,"tokens":3554,"sizeBytes":14725},{"name":"scopes.md","path":"partner-built/zoom-plugin/skills/team-chat/references/scopes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/scopes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fscopes.md -->","isInternal":false,"tokens":75,"sizeBytes":341},{"name":"webhook-events.md","path":"partner-built/zoom-plugin/skills/team-chat/references/webhook-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/references/webhook-events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Freferences%2Fwebhook-events.md -->","isInternal":false,"tokens":124,"sizeBytes":565},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/team-chat/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/RUNBOOK.md","title":"Team-chat Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FRUNBOOK.md -->","isInternal":false,"tokens":678,"sizeBytes":2777},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/team-chat/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/SKILL.md","title":"build-zoom-team-chat-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2FSKILL.md -->","frontmatter":{"name":"build-zoom-team-chat-app","description":"Reference skill for Zoom Team Chat. Use after routing to a chat workflow when building user-scoped messaging integrations, chatbot experiences, rich cards, buttons, slash commands, or chat webhooks.","triggers":["zoom team chat","zoom chatbot","zoom messaging","team chat api","chatbot api","zoom slash commands","zoom chat integration"]},"isInternal":false,"tokens":5578,"sizeBytes":23778},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/team-chat/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":2531,"sizeBytes":9968},{"name":"deployment-issues.md","path":"partner-built/zoom-plugin/skills/team-chat/troubleshooting/deployment-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/troubleshooting/deployment-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fdeployment-issues.md -->","isInternal":false,"tokens":149,"sizeBytes":641},{"name":"message-issues.md","path":"partner-built/zoom-plugin/skills/team-chat/troubleshooting/message-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/troubleshooting/message-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fmessage-issues.md -->","isInternal":false,"tokens":71,"sizeBytes":318},{"name":"oauth-issues.md","path":"partner-built/zoom-plugin/skills/team-chat/troubleshooting/oauth-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/troubleshooting/oauth-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Foauth-issues.md -->","isInternal":false,"tokens":187,"sizeBytes":882},{"name":"webhook-issues.md","path":"partner-built/zoom-plugin/skills/team-chat/troubleshooting/webhook-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/team-chat/troubleshooting/webhook-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fteam-chat%2Ftroubleshooting%2Fwebhook-issues.md -->","isInternal":false,"tokens":75,"sizeBytes":365},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/ui-toolkit/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/ui-toolkit/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":172,"sizeBytes":738},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/ui-toolkit/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/ui-toolkit/RUNBOOK.md","title":"Ui-toolkit Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FRUNBOOK.md -->","isInternal":false,"tokens":455,"sizeBytes":1973},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md","title":"ui-toolkit/web","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2FSKILL.md -->","frontmatter":{"name":"ui-toolkit/web","description":"Reference skill for Zoom Video SDK UI Toolkit. Use after routing to a web video workflow when you want prebuilt React UI instead of building a fully custom Video SDK interface.","user-invocable":false,"triggers":["ui toolkit","zoom ui","prebuilt video ui","video conferencing ui","zoom video ui toolkit","uitoolkit","ready-made zoom ui"]},"isInternal":false,"tokens":4371,"sizeBytes":17750},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/ui-toolkit/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/ui-toolkit/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fui-toolkit%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":292,"sizeBytes":1224},{"name":"android.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/android.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/android.md","title":"Android Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fandroid.md -->","isInternal":false,"tokens":267,"sizeBytes":1235},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":135,"sizeBytes":590},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":161,"sizeBytes":689},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":149,"sizeBytes":660},{"name":"android-reference-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/references/android-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/references/android-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","isInternal":false,"tokens":106,"sizeBytes":496},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":164,"sizeBytes":728},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":153,"sizeBytes":680},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/RUNBOOK.md","title":"Android Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FRUNBOOK.md -->","isInternal":false,"tokens":485,"sizeBytes":2342},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":155,"sizeBytes":770},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md","title":"zoom-video-sdk-android","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-android","description":"Zoom Video SDK for Android native apps. Use when building custom Android video experiences\nwith full UI control, session tokens, raw media options, and event-driven participant state.\n","user-invocable":false,"triggers":["video sdk android","zoom video android","android custom video","android video session"]},"isInternal":false,"tokens":331,"sizeBytes":1408},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/android/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/android/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":117,"sizeBytes":630},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/high-level-scenarios.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":126,"sizeBytes":641},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":129,"sizeBytes":599},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":140,"sizeBytes":715},{"name":"event-handling-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/examples/event-handling-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/examples/event-handling-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fevent-handling-pattern.md -->","isInternal":false,"tokens":237,"sizeBytes":1108},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":118,"sizeBytes":466},{"name":"setup-guide.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/examples/setup-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/examples/setup-guide.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Fexamples%2Fsetup-guide.md -->","isInternal":false,"tokens":582,"sizeBytes":2277},{"name":"flutter-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/references/flutter-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/references/flutter-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fflutter-reference.md -->","isInternal":false,"tokens":98,"sizeBytes":415},{"name":"module-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/references/module-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/references/module-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fmodule-map.md -->","isInternal":false,"tokens":114,"sizeBytes":515},{"name":"official-sources.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/references/official-sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/references/official-sources.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Freferences%2Fofficial-sources.md -->","isInternal":false,"tokens":115,"sizeBytes":508},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/RUNBOOK.md","title":"Flutter Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FRUNBOOK.md -->","isInternal":false,"tokens":475,"sizeBytes":2304},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md","title":"zoom-video-sdk-flutter","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-flutter","description":"Zoom Video SDK for Flutter. Use when building custom video session apps in Flutter with\nflutter_zoom_videosdk, event-driven architecture, session lifecycle handling, and mobile\nplatform integration patterns.\n","user-invocable":false,"triggers":["video sdk flutter","zoom flutter video sdk","flutter video session","flutter_zoom_videosdk","zoom custom video flutter","flutter live transcription zoom"]},"isInternal":false,"tokens":708,"sizeBytes":3084},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":396,"sizeBytes":1940},{"name":"deprecated-and-contradictions.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/deprecated-and-contradictions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/deprecated-and-contradictions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","isInternal":false,"tokens":213,"sizeBytes":1058},{"name":"version-drift.md","path":"partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/version-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/flutter/troubleshooting/version-drift.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fflutter%2Ftroubleshooting%2Fversion-drift.md -->","isInternal":false,"tokens":91,"sizeBytes":435},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":115,"sizeBytes":487},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":139,"sizeBytes":578},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":135,"sizeBytes":604},{"name":"ios.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/ios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/ios.md","title":"Ios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fios.md -->","isInternal":false,"tokens":205,"sizeBytes":986},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":168,"sizeBytes":753},{"name":"ios-reference-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/references/ios-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/references/ios-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fios-reference-map.md -->","isInternal":false,"tokens":107,"sizeBytes":478},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":142,"sizeBytes":643},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/RUNBOOK.md","title":"Ios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FRUNBOOK.md -->","isInternal":false,"tokens":491,"sizeBytes":2322},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":151,"sizeBytes":756},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md","title":"zoom-video-sdk-ios","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-ios","description":"Zoom Video SDK for iOS native apps. Use when building custom iOS video sessions with\nfull UI control, token-based session auth, and event-driven media/participant flows.\n","user-invocable":false,"triggers":["video sdk ios","zoom video ios","ios custom video","xcframework video sdk","ios video session"]},"isInternal":false,"tokens":342,"sizeBytes":1365},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/ios/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/ios/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":119,"sizeBytes":650},{"name":"raw-data-vs-canvas.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/concepts/raw-data-vs-canvas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/concepts/raw-data-vs-canvas.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fraw-data-vs-canvas.md -->","isInternal":false,"tokens":4276,"sizeBytes":17200},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":3661,"sizeBytes":15251},{"name":"singleton-hierarchy.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/concepts/singleton-hierarchy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/concepts/singleton-hierarchy.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fconcepts%2Fsingleton-hierarchy.md -->","isInternal":false,"tokens":3745,"sizeBytes":15367},{"name":"chat.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/chat.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/chat.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fchat.md -->","isInternal":false,"tokens":44,"sizeBytes":215},{"name":"cloud-recording.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/cloud-recording.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/cloud-recording.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcloud-recording.md -->","isInternal":false,"tokens":78,"sizeBytes":395},{"name":"command-channel.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/command-channel.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/command-channel.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fcommand-channel.md -->","isInternal":false,"tokens":2263,"sizeBytes":9973},{"name":"live-streaming.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/live-streaming.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/live-streaming.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Flive-streaming.md -->","isInternal":false,"tokens":51,"sizeBytes":234},{"name":"qt-gtk-integration.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/qt-gtk-integration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/qt-gtk-integration.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fqt-gtk-integration.md -->","isInternal":false,"tokens":54,"sizeBytes":261},{"name":"raw-audio-capture.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-audio-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-audio-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-audio-capture.md -->","isInternal":false,"tokens":44,"sizeBytes":215},{"name":"raw-video-capture.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-video-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/raw-video-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fraw-video-capture.md -->","isInternal":false,"tokens":50,"sizeBytes":251},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":5347,"sizeBytes":21957},{"name":"transcription.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/transcription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/transcription.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Ftranscription.md -->","isInternal":false,"tokens":56,"sizeBytes":255},{"name":"virtual-audio-video.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/examples/virtual-audio-video.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/examples/virtual-audio-video.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Fexamples%2Fvirtual-audio-video.md -->","isInternal":false,"tokens":58,"sizeBytes":279},{"name":"linux.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/linux.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/linux.md","title":"video-sdk/linux","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Flinux.md -->","frontmatter":{"name":"video-sdk/linux","description":"Zoom Video SDK for Linux - C++ integration for video sessions, raw audio/video capture, screen sharing, recording, and real-time communication"},"isInternal":false,"tokens":6221,"sizeBytes":26405},{"name":"linux-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/references/linux-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/references/linux-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Freferences%2Flinux-reference.md -->","isInternal":false,"tokens":6661,"sizeBytes":27480},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/RUNBOOK.md","title":"Linux Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FRUNBOOK.md -->","isInternal":false,"tokens":473,"sizeBytes":2282},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md","title":"video-sdk/linux","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2FSKILL.md -->","frontmatter":{"name":"video-sdk/linux","description":"Zoom Video SDK for Linux - C++ headless bots, raw audio/video capture/injection, Qt/GTK integration, Docker support","user-invocable":false,"triggers":["linux video sdk","zoom linux","raw data linux","qt zoom","gtk zoom","virtual audio linux"]},"isInternal":false,"tokens":3893,"sizeBytes":15819},{"name":"build-errors.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/build-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/build-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fbuild-errors.md -->","isInternal":false,"tokens":562,"sizeBytes":2074},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":1385,"sizeBytes":5435},{"name":"pulseaudio-setup.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/pulseaudio-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/pulseaudio-setup.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fpulseaudio-setup.md -->","isInternal":false,"tokens":441,"sizeBytes":1782},{"name":"qt-dependencies.md","path":"partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/qt-dependencies.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/linux/troubleshooting/qt-dependencies.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Flinux%2Ftroubleshooting%2Fqt-dependencies.md -->","isInternal":false,"tokens":625,"sizeBytes":1986},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":113,"sizeBytes":480},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":141,"sizeBytes":586},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":134,"sizeBytes":600},{"name":"macos.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/macos.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/macos.md","title":"Macos Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fmacos.md -->","isInternal":false,"tokens":196,"sizeBytes":987},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":163,"sizeBytes":733},{"name":"macos-reference-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/references/macos-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/references/macos-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fmacos-reference-map.md -->","isInternal":false,"tokens":103,"sizeBytes":458},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":132,"sizeBytes":647},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/RUNBOOK.md","title":"Macos Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FRUNBOOK.md -->","isInternal":false,"tokens":491,"sizeBytes":2334},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":149,"sizeBytes":791},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md","title":"zoom-video-sdk-macos","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-macos","description":"Zoom Video SDK for macOS native desktop apps. Use when building custom macOS video sessions\nwith native UI control, tokenized join, and desktop-oriented media/device workflows.\n","user-invocable":false,"triggers":["video sdk macos","zoom video mac","macos custom video","mac desktop video sdk","video sdk cocoa"]},"isInternal":false,"tokens":348,"sizeBytes":1393},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/macos/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/macos/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fmacos%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":105,"sizeBytes":587},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/high-level-scenarios.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":127,"sizeBytes":629},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":112,"sizeBytes":498},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":144,"sizeBytes":670},{"name":"event-handling-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/examples/event-handling-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/examples/event-handling-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fevent-handling-pattern.md -->","isInternal":false,"tokens":174,"sizeBytes":866},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":114,"sizeBytes":422},{"name":"setup-guide.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/examples/setup-guide.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/examples/setup-guide.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Fexamples%2Fsetup-guide.md -->","isInternal":false,"tokens":392,"sizeBytes":1656},{"name":"module-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/references/module-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/references/module-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fmodule-map.md -->","isInternal":false,"tokens":107,"sizeBytes":459},{"name":"official-sources.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/references/official-sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/references/official-sources.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Fofficial-sources.md -->","isInternal":false,"tokens":117,"sizeBytes":515},{"name":"react-native-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/references/react-native-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/references/react-native-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Freferences%2Freact-native-reference.md -->","isInternal":false,"tokens":166,"sizeBytes":667},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/RUNBOOK.md","title":"React-native Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FRUNBOOK.md -->","isInternal":false,"tokens":481,"sizeBytes":2332},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md","title":"zoom-video-sdk-react-native","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-react-native","description":"Zoom Video SDK for React Native. Use when building custom mobile video session experiences\nwith @zoom/react-native-videosdk, event listeners, helper-based APIs, and backend JWT token flows.\n","user-invocable":false,"triggers":["react native video sdk","zoom react native video sdk","@zoom/react-native-videosdk","custom video react native","react native session join","zoom videosdk react native"]},"isInternal":false,"tokens":700,"sizeBytes":3002},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":367,"sizeBytes":1738},{"name":"deprecated-and-contradictions.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/deprecated-and-contradictions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fdeprecated-and-contradictions.md -->","isInternal":false,"tokens":272,"sizeBytes":1455},{"name":"version-drift.md","path":"partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/version-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/react-native/troubleshooting/version-drift.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freact-native%2Ftroubleshooting%2Fversion-drift.md -->","isInternal":false,"tokens":90,"sizeBytes":419},{"name":"authorization.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/authorization.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/authorization.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fauthorization.md -->","isInternal":false,"tokens":1026,"sizeBytes":4024},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":312,"sizeBytes":1325},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/forum-top-questions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (Video SDK)"},"isInternal":false,"tokens":444,"sizeBytes":1924},{"name":"licensing-and-entitlements.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/licensing-and-entitlements.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/licensing-and-entitlements.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Flicensing-and-entitlements.md -->","frontmatter":{"title":"Video SDK Licensing and Account Prereqs"},"isInternal":false,"tokens":166,"sizeBytes":760},{"name":"session-lifecycle.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/session-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/session-lifecycle.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fsession-lifecycle.md -->","frontmatter":{"title":"Video SDK Session Lifecycle (Join, Stream, Render, Leave)"},"isInternal":false,"tokens":223,"sizeBytes":959},{"name":"token-contract-test-spec.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/token-contract-test-spec.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/token-contract-test-spec.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftoken-contract-test-spec.md -->","isInternal":false,"tokens":352,"sizeBytes":1606},{"name":"triage-intake.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/triage-intake.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/triage-intake.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftriage-intake.md -->","frontmatter":{"title":"Video SDK Triage Intake (What to Ask First)"},"isInternal":false,"tokens":317,"sizeBytes":1226},{"name":"troubleshooting.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/troubleshooting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/troubleshooting.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Ftroubleshooting.md -->","isInternal":false,"tokens":391,"sizeBytes":1847},{"name":"ui-toolkit.md","path":"partner-built/zoom-plugin/skills/video-sdk/references/ui-toolkit.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/references/ui-toolkit.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Freferences%2Fui-toolkit.md -->","isInternal":false,"tokens":1452,"sizeBytes":5727},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/RUNBOOK.md","title":"Video-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":606,"sizeBytes":2506},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/SKILL.md","title":"build-zoom-video-sdk-app","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2FSKILL.md -->","frontmatter":{"name":"build-zoom-video-sdk-app","description":"Reference skill for Zoom Video SDK. Use after routing to a custom-session workflow when the user needs full control over the video experience rather than an actual Zoom meeting.","triggers":["custom video","video sdk","build video app","video session","video chat","video call","video conferencing","custom video ui","twitter spaces","clubhouse alternative","audio-only room","screen sharing","virtual background","native video sdk"]},"isInternal":false,"tokens":3303,"sizeBytes":13941},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":120,"sizeBytes":535},{"name":"lifecycle-workflow.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/concepts/lifecycle-workflow.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/concepts/lifecycle-workflow.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fconcepts%2Flifecycle-workflow.md -->","isInternal":false,"tokens":153,"sizeBytes":639},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":115,"sizeBytes":546},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":164,"sizeBytes":739},{"name":"unity-reference-map.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/references/unity-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/references/unity-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Funity-reference-map.md -->","isInternal":false,"tokens":103,"sizeBytes":465},{"name":"versioning-and-compatibility.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/references/versioning-and-compatibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/references/versioning-and-compatibility.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Freferences%2Fversioning-and-compatibility.md -->","isInternal":false,"tokens":138,"sizeBytes":649},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/RUNBOOK.md","title":"Unity Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FRUNBOOK.md -->","isInternal":false,"tokens":489,"sizeBytes":2330},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":147,"sizeBytes":792},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md","title":"zoom-video-sdk-unity","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2FSKILL.md -->","frontmatter":{"name":"zoom-video-sdk-unity","description":"Zoom Video SDK for Unity wrapper integrations. Use when building custom Unity-based\nvideo session experiences and mapping Unity scene/UI state to Video SDK events.\n","user-invocable":false,"triggers":["video sdk unity","zoom unity sdk","unity custom video","unity video session","unity video wrapper"]},"isInternal":false,"tokens":340,"sizeBytes":1392},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":115,"sizeBytes":646},{"name":"unity.md","path":"partner-built/zoom-plugin/skills/video-sdk/unity/unity.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/unity/unity.md","title":"Unity Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Funity%2Funity.md -->","isInternal":false,"tokens":203,"sizeBytes":1039},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":1975,"sizeBytes":8547},{"name":"singleton-hierarchy.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/concepts/singleton-hierarchy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/concepts/singleton-hierarchy.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fconcepts%2Fsingleton-hierarchy.md -->","isInternal":false,"tokens":4107,"sizeBytes":19327},{"name":"chat.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/chat.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/chat.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fchat.md -->","isInternal":false,"tokens":2853,"sizeBytes":12278},{"name":"command-channel.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/command-channel.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/command-channel.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fcommand-channel.md -->","isInternal":false,"tokens":1480,"sizeBytes":7320},{"name":"event-handling.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/event-handling.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/event-handling.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fevent-handling.md -->","isInternal":false,"tokens":3396,"sizeBytes":14408},{"name":"framework-integrations.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/framework-integrations.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/framework-integrations.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fframework-integrations.md -->","isInternal":false,"tokens":2817,"sizeBytes":11097},{"name":"react-hooks.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/react-hooks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/react-hooks.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Freact-hooks.md -->","isInternal":false,"tokens":2377,"sizeBytes":10048},{"name":"recording.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/recording.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/recording.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Frecording.md -->","isInternal":false,"tokens":2296,"sizeBytes":10599},{"name":"screen-share.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/screen-share.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/screen-share.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fscreen-share.md -->","isInternal":false,"tokens":2776,"sizeBytes":12349},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":2438,"sizeBytes":10441},{"name":"transcription.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/transcription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/transcription.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Ftranscription.md -->","isInternal":false,"tokens":3024,"sizeBytes":14219},{"name":"video-rendering.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/examples/video-rendering.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/examples/video-rendering.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Fexamples%2Fvideo-rendering.md -->","isInternal":false,"tokens":2325,"sizeBytes":10229},{"name":"events-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/references/events-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/references/events-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fevents-reference.md -->","isInternal":false,"tokens":3246,"sizeBytes":13158},{"name":"web-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/references/web-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/references/web-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb-reference.md -->","isInternal":false,"tokens":4057,"sizeBytes":15916},{"name":"web.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/references/web.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/references/web.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Freferences%2Fweb.md -->","isInternal":false,"tokens":6136,"sizeBytes":26780},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/RUNBOOK.md","title":"Web Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FRUNBOOK.md -->","isInternal":false,"tokens":532,"sizeBytes":2513},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md","title":"video-sdk/web","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2FSKILL.md -->","frontmatter":{"name":"video-sdk/web","description":"Zoom Video SDK for Web - JavaScript/TypeScript integration for browser-based video sessions, real-time communication, screen sharing, recording, and live transcription","user-invocable":false,"triggers":["video sdk web","custom video web","attachvideo","peer-video-state-change","web videosdk"]},"isInternal":false,"tokens":6115,"sizeBytes":26381},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/web/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/web/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":2655,"sizeBytes":11213},{"name":"canvas-vs-raw-data.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/concepts/canvas-vs-raw-data.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/concepts/canvas-vs-raw-data.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fcanvas-vs-raw-data.md -->","isInternal":false,"tokens":2505,"sizeBytes":10350},{"name":"sdk-architecture-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/concepts/sdk-architecture-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/concepts/sdk-architecture-pattern.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsdk-architecture-pattern.md -->","isInternal":false,"tokens":2028,"sizeBytes":8797},{"name":"singleton-hierarchy.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/concepts/singleton-hierarchy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/concepts/singleton-hierarchy.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fconcepts%2Fsingleton-hierarchy.md -->","isInternal":false,"tokens":5211,"sizeBytes":22703},{"name":"cloud-recording.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/cloud-recording.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/cloud-recording.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcloud-recording.md -->","isInternal":false,"tokens":1948,"sizeBytes":9140},{"name":"command-channel.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/command-channel.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/command-channel.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fcommand-channel.md -->","isInternal":false,"tokens":2077,"sizeBytes":9161},{"name":"README.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/dotnet-winforms/README.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/dotnet-winforms/README.md","title":"Dotnet-winforms Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fdotnet-winforms%2FREADME.md -->","isInternal":false,"tokens":9478,"sizeBytes":38936},{"name":"raw-audio-capture.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-audio-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-audio-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-audio-capture.md -->","isInternal":false,"tokens":1769,"sizeBytes":7390},{"name":"raw-video-capture.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-video-capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/raw-video-capture.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fraw-video-capture.md -->","isInternal":false,"tokens":3316,"sizeBytes":13357},{"name":"screen-share-subscription.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/screen-share-subscription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/screen-share-subscription.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fscreen-share-subscription.md -->","isInternal":false,"tokens":4189,"sizeBytes":18837},{"name":"send-raw-audio.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-audio.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-audio.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-audio.md -->","isInternal":false,"tokens":2199,"sizeBytes":9312},{"name":"send-raw-video.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-video.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/send-raw-video.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsend-raw-video.md -->","isInternal":false,"tokens":2638,"sizeBytes":10923},{"name":"session-join-pattern.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/session-join-pattern.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/session-join-pattern.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fsession-join-pattern.md -->","isInternal":false,"tokens":3998,"sizeBytes":18188},{"name":"transcription.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/transcription.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/transcription.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Ftranscription.md -->","isInternal":false,"tokens":2670,"sizeBytes":11941},{"name":"video-rendering.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/examples/video-rendering.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/examples/video-rendering.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fexamples%2Fvideo-rendering.md -->","isInternal":false,"tokens":3223,"sizeBytes":13665},{"name":"delegate-methods.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/references/delegate-methods.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/references/delegate-methods.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fdelegate-methods.md -->","isInternal":false,"tokens":6378,"sizeBytes":32875},{"name":"samples.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/references/samples.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/references/samples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fsamples.md -->","isInternal":false,"tokens":1951,"sizeBytes":7867},{"name":"windows-reference.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/references/windows-reference.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/references/windows-reference.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Freferences%2Fwindows-reference.md -->","isInternal":false,"tokens":10931,"sizeBytes":43706},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/RUNBOOK.md","title":"Windows Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FRUNBOOK.md -->","isInternal":false,"tokens":473,"sizeBytes":2294},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md","title":"video-sdk/windows","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2FSKILL.md -->","frontmatter":{"name":"video-sdk/windows","description":"Zoom Video SDK for Windows - C++ integration for video sessions, raw audio/video capture, screen sharing, recording, and real-time communication","user-invocable":false,"triggers":["video sdk windows","windows video sdk","video sdk raw data windows","windows custom video","c++ video sdk"]},"isInternal":false,"tokens":9910,"sizeBytes":41125},{"name":"build-errors.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/build-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/build-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fbuild-errors.md -->","isInternal":false,"tokens":1599,"sizeBytes":6112},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":1878,"sizeBytes":7382},{"name":"windows-message-loop.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/windows-message-loop.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/troubleshooting/windows-message-loop.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Ftroubleshooting%2Fwindows-message-loop.md -->","isInternal":false,"tokens":1581,"sizeBytes":7100},{"name":"windows.md","path":"partner-built/zoom-plugin/skills/video-sdk/windows/windows.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/video-sdk/windows/windows.md","title":"video-sdk/windows","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvideo-sdk%2Fwindows%2Fwindows.md -->","frontmatter":{"name":"video-sdk/windows","description":"Zoom Video SDK for Windows - C++ integration for video sessions, raw audio/video capture, screen sharing, recording, and real-time communication"},"isInternal":false,"tokens":513,"sizeBytes":1964},{"name":"webview-lifecycle.md","path":"partner-built/zoom-plugin/skills/virtual-agent/android/concepts/webview-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/android/concepts/webview-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fconcepts%2Fwebview-lifecycle.md -->","isInternal":false,"tokens":81,"sizeBytes":389},{"name":"js-bridge-patterns.md","path":"partner-built/zoom-plugin/skills/virtual-agent/android/examples/js-bridge-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/android/examples/js-bridge-patterns.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Fexamples%2Fjs-bridge-patterns.md -->","isInternal":false,"tokens":215,"sizeBytes":1023},{"name":"android-reference-map.md","path":"partner-built/zoom-plugin/skills/virtual-agent/android/references/android-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/android/references/android-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Freferences%2Fandroid-reference-map.md -->","isInternal":false,"tokens":125,"sizeBytes":640},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md","title":"virtual-agent/android","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2FSKILL.md -->","frontmatter":{"name":"virtual-agent/android","description":"Zoom Virtual Agent Android integration via WebView. Use for Java/Kotlin bridge callbacks, native URL handling, support_handoff relay, and lifecycle-safe embedding.","user-invocable":false,"triggers":["virtual agent android","android webview zva","zoomCampaignSdk:ready android","support_handoff android","javascriptinterface"]},"isInternal":false,"tokens":335,"sizeBytes":1488},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/virtual-agent/android/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/android/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fandroid%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":136,"sizeBytes":650},{"name":"architecture-and-lifecycle.md","path":"partner-built/zoom-plugin/skills/virtual-agent/concepts/architecture-and-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/concepts/architecture-and-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fconcepts%2Farchitecture-and-lifecycle.md -->","isInternal":false,"tokens":217,"sizeBytes":949},{"name":"webview-lifecycle.md","path":"partner-built/zoom-plugin/skills/virtual-agent/ios/concepts/webview-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/ios/concepts/webview-lifecycle.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fconcepts%2Fwebview-lifecycle.md -->","isInternal":false,"tokens":90,"sizeBytes":451},{"name":"js-bridge-patterns.md","path":"partner-built/zoom-plugin/skills/virtual-agent/ios/examples/js-bridge-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/ios/examples/js-bridge-patterns.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Fexamples%2Fjs-bridge-patterns.md -->","isInternal":false,"tokens":202,"sizeBytes":936},{"name":"ios-reference-map.md","path":"partner-built/zoom-plugin/skills/virtual-agent/ios/references/ios-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/ios/references/ios-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Freferences%2Fios-reference-map.md -->","isInternal":false,"tokens":126,"sizeBytes":641},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md","title":"virtual-agent/ios","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2FSKILL.md -->","frontmatter":{"name":"virtual-agent/ios","description":"Zoom Virtual Agent iOS integration via WKWebView. Use for Swift/Objective-C script injection, message handlers, support_handoff relay, and URL routing policies.","user-invocable":false,"triggers":["virtual agent ios","wkwebview zva","support_handoff ios","zoomCampaignSdk:ready ios","wkusercontentcontroller"]},"isInternal":false,"tokens":343,"sizeBytes":1404},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/virtual-agent/ios/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/ios/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fios%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":127,"sizeBytes":583},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/virtual-agent/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":205,"sizeBytes":844},{"name":"samples-validation.md","path":"partner-built/zoom-plugin/skills/virtual-agent/references/samples-validation.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/references/samples-validation.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fsamples-validation.md -->","isInternal":false,"tokens":227,"sizeBytes":1026},{"name":"versioning-and-drift.md","path":"partner-built/zoom-plugin/skills/virtual-agent/references/versioning-and-drift.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/references/versioning-and-drift.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Freferences%2Fversioning-and-drift.md -->","isInternal":false,"tokens":167,"sizeBytes":823},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/virtual-agent/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/RUNBOOK.md","title":"Virtual-agent Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FRUNBOOK.md -->","isInternal":false,"tokens":260,"sizeBytes":1060},{"name":"high-level-scenarios.md","path":"partner-built/zoom-plugin/skills/virtual-agent/scenarios/high-level-scenarios.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/scenarios/high-level-scenarios.md","title":"Scenarios Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fscenarios%2Fhigh-level-scenarios.md -->","isInternal":false,"tokens":214,"sizeBytes":961},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/virtual-agent/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/SKILL.md","title":"build-zoom-virtual-agent","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2FSKILL.md -->","frontmatter":{"name":"build-zoom-virtual-agent","description":"Reference skill for Zoom Virtual Agent. Use after routing to a virtual-agent workflow when implementing web embeds, Android or iOS wrapper integrations, knowledge-base sync, lifecycle handling, or troubleshooting.","triggers":["virtual agent","zva","virtual assistant sdk","knowledge base sync"]},"isInternal":false,"tokens":807,"sizeBytes":3321},{"name":"common-drift-and-breaks.md","path":"partner-built/zoom-plugin/skills/virtual-agent/troubleshooting/common-drift-and-breaks.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/troubleshooting/common-drift-and-breaks.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Ftroubleshooting%2Fcommon-drift-and-breaks.md -->","isInternal":false,"tokens":205,"sizeBytes":942},{"name":"lifecycle-and-events.md","path":"partner-built/zoom-plugin/skills/virtual-agent/web/concepts/lifecycle-and-events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/web/concepts/lifecycle-and-events.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fconcepts%2Flifecycle-and-events.md -->","isInternal":false,"tokens":172,"sizeBytes":608},{"name":"campaign-and-entry-patterns.md","path":"partner-built/zoom-plugin/skills/virtual-agent/web/examples/campaign-and-entry-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/web/examples/campaign-and-entry-patterns.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Fexamples%2Fcampaign-and-entry-patterns.md -->","isInternal":false,"tokens":221,"sizeBytes":944},{"name":"web-reference-map.md","path":"partner-built/zoom-plugin/skills/virtual-agent/web/references/web-reference-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/web/references/web-reference-map.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Freferences%2Fweb-reference-map.md -->","isInternal":false,"tokens":130,"sizeBytes":590},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md","title":"virtual-agent/web","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2FSKILL.md -->","frontmatter":{"name":"virtual-agent/web","description":"Zoom Virtual Agent SDK for web embeds. Use for campaign or entry ID chat launch, event-driven controls, user context updates, and CSP-safe deployment.","user-invocable":false,"triggers":["virtual agent web","zoomCampaignSdk","zcc-sdk","campaign embed","entry id","waitForReady","engagement_started"]},"isInternal":false,"tokens":366,"sizeBytes":1498},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/virtual-agent/web/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/virtual-agent/web/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fvirtual-agent%2Fweb%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":131,"sizeBytes":669},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/webhooks/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":139,"sizeBytes":642},{"name":"events.md","path":"partner-built/zoom-plugin/skills/webhooks/references/events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/references/events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fevents.md -->","isInternal":false,"tokens":487,"sizeBytes":1974},{"name":"signature-verification.md","path":"partner-built/zoom-plugin/skills/webhooks/references/signature-verification.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/references/signature-verification.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsignature-verification.md -->","isInternal":false,"tokens":30,"sizeBytes":161},{"name":"subscriptions.md","path":"partner-built/zoom-plugin/skills/webhooks/references/subscriptions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/references/subscriptions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fsubscriptions.md -->","isInternal":false,"tokens":1708,"sizeBytes":7409},{"name":"verification.md","path":"partner-built/zoom-plugin/skills/webhooks/references/verification.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/references/verification.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Freferences%2Fverification.md -->","isInternal":false,"tokens":506,"sizeBytes":2202},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/webhooks/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/RUNBOOK.md","title":"Webhooks Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FRUNBOOK.md -->","isInternal":false,"tokens":597,"sizeBytes":2622},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/webhooks/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/SKILL.md","title":"setup-zoom-webhooks","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2FSKILL.md -->","frontmatter":{"name":"setup-zoom-webhooks","description":"Reference skill for Zoom webhooks. Use after routing to an event-driven workflow when implementing subscriptions, signature verification, delivery handling, retries, or event-type selection.","triggers":["zoom webhook","webhook signature","x-zm-signature","event subscription","recording completed webhook"]},"isInternal":false,"tokens":1308,"sizeBytes":5122},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/webhooks/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/webhooks/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebhooks%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":259,"sizeBytes":1185},{"name":"connection.md","path":"partner-built/zoom-plugin/skills/websockets/references/connection.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/references/connection.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fconnection.md -->","isInternal":false,"tokens":2490,"sizeBytes":10632},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/websockets/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":185,"sizeBytes":827},{"name":"events.md","path":"partner-built/zoom-plugin/skills/websockets/references/events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/references/events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Freferences%2Fevents.md -->","isInternal":false,"tokens":3118,"sizeBytes":10793},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/websockets/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/RUNBOOK.md","title":"Websockets Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FRUNBOOK.md -->","isInternal":false,"tokens":655,"sizeBytes":2950},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/websockets/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/SKILL.md","title":"setup-zoom-websockets","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2FSKILL.md -->","frontmatter":{"name":"setup-zoom-websockets","description":"Reference skill for Zoom WebSockets. Use after routing to a low-latency event workflow when persistent connections, faster event delivery, or security constraints make WebSockets preferable to webhooks.","triggers":["zoom websockets","websocket event subscription","persistent zoom events","low latency zoom events","zoom websocket connection"]},"isInternal":false,"tokens":1785,"sizeBytes":7553},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/websockets/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/websockets/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fwebsockets%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":228,"sizeBytes":1102},{"name":"architecture.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Farchitecture.md -->","isInternal":false,"tokens":1724,"sizeBytes":7864},{"name":"meeting-sdk-vs-zoom-apps.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/meeting-sdk-vs-zoom-apps.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/meeting-sdk-vs-zoom-apps.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fmeeting-sdk-vs-zoom-apps.md -->","frontmatter":{"title":"Zoom Apps vs Meeting SDK (Common Confusion)"},"isInternal":false,"tokens":233,"sizeBytes":1066},{"name":"running-contexts.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/running-contexts.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/running-contexts.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Frunning-contexts.md -->","isInternal":false,"tokens":1324,"sizeBytes":5745},{"name":"security.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/security.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/concepts/security.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fconcepts%2Fsecurity.md -->","isInternal":false,"tokens":1286,"sizeBytes":5486},{"name":"app-communication.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/app-communication.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/app-communication.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fapp-communication.md -->","isInternal":false,"tokens":844,"sizeBytes":3724},{"name":"breakout-rooms.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/breakout-rooms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/breakout-rooms.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fbreakout-rooms.md -->","isInternal":false,"tokens":783,"sizeBytes":3313},{"name":"collaborate-mode.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/collaborate-mode.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/collaborate-mode.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fcollaborate-mode.md -->","isInternal":false,"tokens":990,"sizeBytes":4185},{"name":"guest-mode.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/guest-mode.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/guest-mode.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fguest-mode.md -->","isInternal":false,"tokens":806,"sizeBytes":3585},{"name":"in-client-oauth.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/in-client-oauth.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/in-client-oauth.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fin-client-oauth.md -->","isInternal":false,"tokens":1374,"sizeBytes":6272},{"name":"layers-camera.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-camera.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-camera.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-camera.md -->","isInternal":false,"tokens":1588,"sizeBytes":5818},{"name":"layers-immersive.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-immersive.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/layers-immersive.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Flayers-immersive.md -->","isInternal":false,"tokens":2114,"sizeBytes":8041},{"name":"quick-start.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/quick-start.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/examples/quick-start.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Fexamples%2Fquick-start.md -->","isInternal":false,"tokens":1924,"sizeBytes":7445},{"name":"apis.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/apis.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/apis.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fapis.md -->","isInternal":false,"tokens":1284,"sizeBytes":5417},{"name":"environment-variables.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/environment-variables.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/environment-variables.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fenvironment-variables.md -->","isInternal":false,"tokens":252,"sizeBytes":1108},{"name":"events.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/events.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/events.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fevents.md -->","isInternal":false,"tokens":918,"sizeBytes":3904},{"name":"layers-api.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/layers-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/layers-api.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Flayers-api.md -->","isInternal":false,"tokens":4205,"sizeBytes":16129},{"name":"oauth.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/oauth.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/oauth.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Foauth.md -->","isInternal":false,"tokens":1356,"sizeBytes":5418},{"name":"zmail-sdk.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/references/zmail-sdk.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/references/zmail-sdk.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Freferences%2Fzmail-sdk.md -->","isInternal":false,"tokens":1352,"sizeBytes":5616},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/RUNBOOK.md","title":"Zoom-apps-sdk Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FRUNBOOK.md -->","isInternal":false,"tokens":771,"sizeBytes":3412},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md","title":"zoom-apps-sdk","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2FSKILL.md -->","frontmatter":{"name":"zoom-apps-sdk","description":"Reference skill for Zoom Apps SDK. Use after routing to an in-client app workflow when building web apps that run inside Zoom meetings, webinars, the main client, or Zoom Phone.","user-invocable":false,"triggers":["zoom app","in-meeting app","app inside zoom","zoom client app","layers api","immersive mode","camera mode","collaborate mode","appssdk","in-client oauth","zoom mail","domain allowlist","domain whitelist","url whitelisting","blank panel","runningContext","zoomSdk"]},"isInternal":false,"tokens":6277,"sizeBytes":25876},{"name":"common-issues.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/common-issues.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/common-issues.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fcommon-issues.md -->","isInternal":false,"tokens":973,"sizeBytes":4376},{"name":"debugging.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/debugging.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/debugging.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fdebugging.md -->","isInternal":false,"tokens":950,"sizeBytes":3626},{"name":"forum-top-questions.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/forum-top-questions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/forum-top-questions.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fforum-top-questions.md -->","frontmatter":{"title":"Forum-Derived Top Questions (Zoom Apps)"},"isInternal":false,"tokens":266,"sizeBytes":1086},{"name":"migration.md","path":"partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/migration.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-apps-sdk/troubleshooting/migration.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-apps-sdk%2Ftroubleshooting%2Fmigration.md -->","isInternal":false,"tokens":752,"sizeBytes":3030},{"name":"mcp-architecture.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/concepts/mcp-architecture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/concepts/mcp-architecture.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Fmcp-architecture.md -->","isInternal":false,"tokens":665,"sizeBytes":2986},{"name":"oauth-setup.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/concepts/oauth-setup.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/concepts/oauth-setup.md","title":"Concepts Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fconcepts%2Foauth-setup.md -->","isInternal":false,"tokens":1814,"sizeBytes":7848},{"name":"create-zoom-doc.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/examples/create-zoom-doc.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/examples/create-zoom-doc.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fcreate-zoom-doc.md -->","isInternal":false,"tokens":308,"sizeBytes":1236},{"name":"meeting-lifecycle.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/examples/meeting-lifecycle.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/examples/meeting-lifecycle.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fmeeting-lifecycle.md -->","isInternal":false,"tokens":335,"sizeBytes":1412},{"name":"search-and-act.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/examples/search-and-act.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/examples/search-and-act.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Fsearch-and-act.md -->","isInternal":false,"tokens":518,"sizeBytes":1935},{"name":"transcript-retrieval.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/examples/transcript-retrieval.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/examples/transcript-retrieval.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fexamples%2Ftranscript-retrieval.md -->","isInternal":false,"tokens":684,"sizeBytes":2803},{"name":"error-codes.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/references/error-codes.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/references/error-codes.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ferror-codes.md -->","isInternal":false,"tokens":750,"sizeBytes":3209},{"name":"tools.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/references/tools.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/references/tools.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Freferences%2Ftools.md -->","isInternal":false,"tokens":1277,"sizeBytes":5436},{"name":"RUNBOOK.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/RUNBOOK.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/RUNBOOK.md","title":"Zoom-mcp Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FRUNBOOK.md -->","isInternal":false,"tokens":869,"sizeBytes":3784},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/SKILL.md","title":"zoom-mcp","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2FSKILL.md -->","frontmatter":{"name":"zoom-mcp","description":"Guidance for the bundled Zoom MCP connectors. Use after routing to an MCP workflow when planning or troubleshooting tool-based access to meetings, recordings, meeting assets, or transcripts. Route Zoom Docs requests to the dedicated Docs MCP server and Whiteboard-specific requests to `zoom-mcp/whiteboard`.","user-invocable":false,"triggers":["zoom mcp","zoom mcp server","zoom mcp tools","zoom tools/list","zoom tools/call","ai companion transcript","agentic retrieval","zoom semantic meeting search","zoom search meetings by content","zoom meeting assets mcp","zoom recording resource mcp","zoom docs via mcp","zoom transcript via mcp","meeting transcript via mcp"]},"isInternal":false,"tokens":2289,"sizeBytes":9331},{"name":"common-errors.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/troubleshooting/common-errors.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/troubleshooting/common-errors.md","title":"Troubleshooting Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Ftroubleshooting%2Fcommon-errors.md -->","isInternal":false,"tokens":933,"sizeBytes":3973},{"name":"authentication-and-identifiers.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/authentication-and-identifiers.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/authentication-and-identifiers.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Fauthentication-and-identifiers.md -->","isInternal":false,"tokens":430,"sizeBytes":1785},{"name":"tools.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/tools.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/references/tools.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2Freferences%2Ftools.md -->","isInternal":false,"tokens":358,"sizeBytes":1683},{"name":"SKILL.md","path":"partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md","title":"zoom-mcp/whiteboard","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2Fskills%2Fzoom-mcp%2Fwhiteboard%2FSKILL.md -->","frontmatter":{"name":"zoom-mcp/whiteboard","description":"Guidance for the bundled Zoom Whiteboard MCP connector. Use for Whiteboard MCP auth,\nendpoints, ID mapping, and tool workflows such as list_whiteboards and get_a_whiteboard.\nPrefer this skill when the request is specifically about Whiteboard MCP rather than general Zoom MCP.\n","user-invocable":false,"triggers":["whiteboard mcp","zoom whiteboard mcp","zoom mcp whiteboard","zoom whiteboard tools","list zoom whiteboards","get zoom whiteboard","zoom whiteboard id","zoom wb/db"]},"isInternal":false,"tokens":795,"sizeBytes":3270},{"name":"SKILL.md","path":"pdf-viewer/skills/view-pdf/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/pdf-viewer/skills/view-pdf/SKILL.md","title":"view-pdf","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2Fskills%2Fview-pdf%2FSKILL.md -->","frontmatter":{"name":"view-pdf","description":"Interactive PDF viewer. Use when the user wants to open, show, or view a PDF and collaborate on it visually — annotate, highlight, stamp, fill form fields, place signature/initials, or review markup together. Not for summarization or text extraction (use native Read instead)."},"isInternal":false,"tokens":1627,"sizeBytes":6241},{"name":"SKILL.md","path":"product-management/skills/competitive-brief/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/competitive-brief/SKILL.md","title":"competitive-brief","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fcompetitive-brief%2FSKILL.md -->","frontmatter":{"name":"competitive-brief","description":"Create a competitive analysis brief for one or more competitors or a feature area. Use when informing product strategy or feature prioritization, building sales battle cards, prepping board or investor materials, or deciding where to differentiate vs. achieve parity.","argument-hint":"<competitor or feature area>"},"isInternal":false,"tokens":3016,"sizeBytes":14774},{"name":"SKILL.md","path":"product-management/skills/metrics-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/metrics-review/SKILL.md","title":"metrics-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fmetrics-review%2FSKILL.md -->","frontmatter":{"name":"metrics-review","description":"Review and analyze product metrics with trend analysis and actionable insights. Use when running a weekly, monthly, or quarterly metrics review, investigating a sudden spike or drop, comparing performance against targets, or turning raw numbers into a scorecard with recommended actions.","argument-hint":"<time period or metric focus>"},"isInternal":false,"tokens":3908,"sizeBytes":18038},{"name":"SKILL.md","path":"product-management/skills/product-brainstorming/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/product-brainstorming/SKILL.md","title":"product-brainstorming","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fproduct-brainstorming%2FSKILL.md -->","frontmatter":{"name":"product-brainstorming","description":"Brainstorm product ideas, explore problem spaces, and challenge assumptions as a thinking partner. Use when exploring a new opportunity, generating solutions to a product problem, stress-testing an idea, or when a PM needs to think out loud with a sharp sparring partner before converging on a direction."},"isInternal":false,"tokens":3486,"sizeBytes":15944},{"name":"SKILL.md","path":"product-management/skills/roadmap-update/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/roadmap-update/SKILL.md","title":"roadmap-update","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Froadmap-update%2FSKILL.md -->","frontmatter":{"name":"roadmap-update","description":"Update, create, or reprioritize your product roadmap. Use when adding a new initiative and deciding what moves to make room, shifting priorities after new information comes in, moving timelines due to a dependency slip, or building a Now/Next/Later view from scratch.","argument-hint":"<update description>"},"isInternal":false,"tokens":2672,"sizeBytes":12372},{"name":"SKILL.md","path":"product-management/skills/sprint-planning/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/sprint-planning/SKILL.md","title":"sprint-planning","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsprint-planning%2FSKILL.md -->","frontmatter":{"name":"sprint-planning","description":"Plan a sprint — scope work, estimate capacity, set goals, and draft a sprint plan. Use when kicking off a new sprint, sizing a backlog against team availability (accounting for PTO and meetings), deciding what's P0 vs. stretch, or handling carryover from the last sprint.","argument-hint":"[sprint name or date range]"},"isInternal":false,"tokens":885,"sizeBytes":4144},{"name":"SKILL.md","path":"product-management/skills/stakeholder-update/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/stakeholder-update/SKILL.md","title":"stakeholder-update","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fstakeholder-update%2FSKILL.md -->","frontmatter":{"name":"stakeholder-update","description":"Generate a stakeholder update tailored to audience and cadence. Use when writing a weekly or monthly status for leadership, announcing a launch, escalating a risk or blocker, or translating the same progress into exec-brief, engineering-detail, or customer-facing versions.","argument-hint":"<update type and audience>"},"isInternal":false,"tokens":3248,"sizeBytes":14677},{"name":"SKILL.md","path":"product-management/skills/synthesize-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/synthesize-research/SKILL.md","title":"synthesize-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fsynthesize-research%2FSKILL.md -->","frontmatter":{"name":"synthesize-research","description":"Synthesize user research from interviews, surveys, and feedback into structured insights. Use when you have a pile of interview notes, survey responses, or support tickets to make sense of, need to extract themes and rank findings by frequency and impact, or want to turn raw feedback into roadmap recommendations.","argument-hint":"<research topic or question>"},"isInternal":false,"tokens":3243,"sizeBytes":16135},{"name":"SKILL.md","path":"product-management/skills/write-spec/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/skills/write-spec/SKILL.md","title":"write-spec","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2Fskills%2Fwrite-spec%2FSKILL.md -->","frontmatter":{"name":"write-spec","description":"Write a feature spec or PRD from a problem statement or feature idea. Use when turning a vague idea or user request into a structured document, scoping a feature with goals and non-goals, defining success metrics and acceptance criteria, or breaking a big ask into a phased spec.","argument-hint":"<feature or problem statement>"},"isInternal":false,"tokens":2712,"sizeBytes":12326},{"name":"SKILL.md","path":"productivity/skills/memory-management/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/productivity/skills/memory-management/SKILL.md","title":"memory-management","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fmemory-management%2FSKILL.md -->","frontmatter":{"name":"memory-management","description":"Two-tier memory system that makes Claude a true workplace collaborator. Decodes shorthand, acronyms, nicknames, and internal language so Claude understands requests like a colleague would. CLAUDE.md for working memory, memory/ directory for the full knowledge base.","user-invocable":false},"isInternal":false,"tokens":2219,"sizeBytes":8742},{"name":"SKILL.md","path":"productivity/skills/start/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/productivity/skills/start/SKILL.md","title":"start","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fstart%2FSKILL.md -->","frontmatter":{"name":"start","description":"Initialize the productivity system and open the dashboard. Use when setting up the plugin for the first time, bootstrapping working memory from your existing task list, or decoding the shorthand (nicknames, acronyms, project codenames) you use in your todos."},"isInternal":false,"tokens":1205,"sizeBytes":4919},{"name":"SKILL.md","path":"productivity/skills/task-management/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/productivity/skills/task-management/SKILL.md","title":"task-management","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Ftask-management%2FSKILL.md -->","frontmatter":{"name":"task-management","description":"Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments.","user-invocable":false},"isInternal":false,"tokens":648,"sizeBytes":2604},{"name":"SKILL.md","path":"productivity/skills/update/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/productivity/skills/update/SKILL.md","title":"update","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2Fskills%2Fupdate%2FSKILL.md -->","frontmatter":{"name":"update","description":"Sync tasks and refresh memory from your current activity. Use when pulling new assignments from your project tracker into TASKS.md, triaging stale or overdue tasks, filling memory gaps for unknown people or projects, or running a comprehensive scan to catch todos buried in chat and email.","argument-hint":"[--comprehensive]"},"isInternal":false,"tokens":1224,"sizeBytes":5061},{"name":"SKILL.md","path":"sales/skills/account-context/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/account-context/SKILL.md","title":"account-context","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-context%2FSKILL.md -->","frontmatter":{"name":"account-context","description":"360-degree view of an account - CRM data, recent email threads, docs, transcripts, and internal chat chatter, synthesized into one brief. Use when the user asks \"tell me about [account]\" (an existing customer; for a prospect, account-research), \"account context for [name]\", \"what's going on with [account]\", or \"catch me up on [account]\"."},"isInternal":false,"tokens":2129,"sizeBytes":9501},{"name":"SKILL.md","path":"sales/skills/account-plan/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/account-plan/SKILL.md","title":"account-plan","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-plan%2FSKILL.md -->","frontmatter":{"name":"account-plan","description":"Build or refresh a strategic account plan - current state, goals, stakeholder coverage, opportunity map, risks, and the action plan - written to a doc and key fields synced to the CRM. Use when the user says \"build an account plan for [account]\", \"update the [account] plan\", \"account planning for [account]\", or before a planning cycle / QBR."},"isInternal":false,"tokens":2245,"sizeBytes":10000},{"name":"SKILL.md","path":"sales/skills/account-research/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/account-research/SKILL.md","title":"account-research","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-research%2FSKILL.md -->","frontmatter":{"name":"account-research","description":"Research a target company and optionally a specific contact - company overview, recent news, likely priorities, and fit against your ICP. Cross-references existing CRM records. Use when the user asks to \"research [company]\", \"look into [company]\", \"prospect research on [company]\", \"look up [person]\", \"intel on [prospect]\", \"who is [person] at [company]\", or \"tell me about [company]\" when the company is a prospect rather than an existing account."},"isInternal":false,"tokens":2133,"sizeBytes":9587},{"name":"SKILL.md","path":"sales/skills/account-tiering/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/account-tiering/SKILL.md","title":"account-tiering","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Faccount-tiering%2FSKILL.md -->","frontmatter":{"name":"account-tiering","description":"Score and tier a list of accounts (or your full book) against ICP fit and engagement signals to prioritize where to spend time. Use when the user asks to \"tier my accounts\", \"prioritize my book\", \"which accounts should I focus on\", or \"score these accounts\"."},"isInternal":false,"tokens":2202,"sizeBytes":9229},{"name":"SKILL.md","path":"sales/skills/call-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/call-prep/SKILL.md","title":"call-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-prep%2FSKILL.md -->","frontmatter":{"name":"call-prep","description":"Pre-call brief for an upcoming meeting - attendees, account history, prior call context from transcripts, open opportunity status, and suggested discovery questions. Use when the user asks \"prep me for [meeting/company]\", \"call prep [company]\", \"I'm meeting with [company], prep me\", \"get me ready for [meeting]\", or \"what do I need to know before my [time] call\"."},"isInternal":false,"tokens":2501,"sizeBytes":11197},{"name":"SKILL.md","path":"sales/skills/call-summary/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/call-summary/SKILL.md","title":"call-summary","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcall-summary%2FSKILL.md -->","frontmatter":{"name":"call-summary","description":"Turn a call transcript or call notes into a customer follow-up email draft, an internal chat summary, and proposed CRM updates. Use when the user says \"call summary\", \"follow up on my [company] call\", \"summarize my call with [account]\", \"write the recap\", \"process this transcript\", \"process my call notes\", \"capture the objections and next steps\", or pastes rough notes or a transcript after a discovery, demo, or negotiation call.","argument-hint":"<call notes or transcript>"},"isInternal":false,"tokens":2569,"sizeBytes":11620},{"name":"SKILL.md","path":"sales/skills/close-plan/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/close-plan/SKILL.md","title":"close-plan","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fclose-plan%2FSKILL.md -->","frontmatter":{"name":"close-plan","description":"Build the business case and mutual action plan for a deal - the why-buy/why-now story, the ROI framing, and the dated step-by-step path to signature shared with the customer. Use when the user says \"build a close plan for [deal]\", \"mutual action plan for [account]\", \"business case for [opp]\", or \"what's the path to signature\"."},"isInternal":false,"tokens":2251,"sizeBytes":10199},{"name":"SKILL.md","path":"sales/skills/competitive-intelligence/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/competitive-intelligence/SKILL.md","title":"competitive-intelligence","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcompetitive-intelligence%2FSKILL.md -->","frontmatter":{"name":"competitive-intelligence","description":"Competitive analysis two ways - the in-deal play against a named competitor, and win/loss patterns, competitor mentions, and battlecards across the book. Use when the user asks \"competitive intel\", \"research competitors\", \"how do we compare to [competitor]\", \"what's new with [competitor]\", \"battlecard for [competitor]\", \"how do we beat [competitor]\", \"what's the play against [competitor] in [deal]\", \"where are we losing to [competitor]\", \"win/loss patterns\", \"competitive analysis\", \"refresh the battlecards\", or on a weekly schedule."},"isInternal":false,"tokens":2297,"sizeBytes":10280},{"name":"SKILL.md","path":"sales/skills/create-an-asset/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/create-an-asset/SKILL.md","title":"create-an-asset","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcreate-an-asset%2FSKILL.md -->","frontmatter":{"name":"create-an-asset","description":"Build a customer deck, one-pager or leave-behind from your account data, call notes and approved materials, with no made-up numbers. Use when the user asks for a sales asset, one-pager, deck, leave-behind, \"create an asset for [prospect]\", or \"make something for [account]\"."},"isInternal":false,"tokens":2264,"sizeBytes":10199},{"name":"SKILL.md","path":"sales/skills/crm-hygiene-check/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/crm-hygiene-check/SKILL.md","title":"crm-hygiene-check","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcrm-hygiene-check%2FSKILL.md -->","frontmatter":{"name":"crm-hygiene-check","description":"Read-only audit of your CRM opportunities for missing fields, stale dates, and stage mismatches - outputs a fix checklist to apply by hand or through update-opportunity. Use when the user asks \"check my CRM hygiene\", \"check my Salesforce or HubSpot data\", \"clean up my CRM\", \"audit my opps\", \"what's missing in the CRM\", or \"clean up my pipeline\"."},"isInternal":false,"tokens":2124,"sizeBytes":9343},{"name":"SKILL.md","path":"sales/skills/customer-health/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/customer-health/SKILL.md","title":"customer-health","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-health%2FSKILL.md -->","frontmatter":{"name":"customer-health","description":"Health check on a customer account and QBR-ready prep - relationship strength, engagement trend, risk signals, value delivered, and the agenda that makes the review worth their time. Use when the user asks \"how healthy is [account]\", \"customer health check\", \"prep the [account] QBR\", \"business review prep\", or \"are we at risk with [customer]\"."},"isInternal":false,"tokens":2256,"sizeBytes":10152},{"name":"SKILL.md","path":"sales/skills/customer-voice/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/customer-voice/SKILL.md","title":"customer-voice","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fcustomer-voice%2FSKILL.md -->","frontmatter":{"name":"customer-voice","description":"Surface what customers are actually saying - direct attributed quotes on a topic across call transcripts and email, across your accounts. Use when the user asks \"what are customers saying about [topic]\", \"pull quotes on [objection/feature/competitor]\", \"voice of customer on [X]\", or \"what's coming up in calls\"."},"isInternal":false,"tokens":2019,"sizeBytes":8984},{"name":"SKILL.md","path":"sales/skills/daily-briefing/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/daily-briefing/SKILL.md","title":"daily-briefing","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdaily-briefing%2FSKILL.md -->","frontmatter":{"name":"daily-briefing","description":"Morning rundown - today's meetings with account context, opps closing soon with stale flags, waiting customer emails, and the day's top actions. Use when the user says \"daily briefing\", \"daily brief\", \"morning briefing\", \"what's my day\", \"what's on my plate today\", \"prep my day\", \"start my day\", \"morning rundown\", or on a schedule."},"isInternal":false,"tokens":2016,"sizeBytes":9017},{"name":"SKILL.md","path":"sales/skills/deal-advance-gap/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/deal-advance-gap/SKILL.md","title":"deal-advance-gap","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-advance-gap%2FSKILL.md -->","frontmatter":{"name":"deal-advance-gap","description":"Forward-looking gap check on one opportunity - exactly what is missing to advance it to the next stage and to close, with who does what by when. Use when the user asks \"what's missing to advance [deal]\", \"what do I need to move [opp] forward\", \"why is [deal] stuck\", or \"what's between [account] and a close\"."},"isInternal":false,"tokens":2150,"sizeBytes":9675},{"name":"SKILL.md","path":"sales/skills/deal-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/deal-review/SKILL.md","title":"deal-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-review%2FSKILL.md -->","frontmatter":{"name":"deal-review","description":"Deep-dive on a single opportunity - signal-adjusted health score, risks, gaps in qualification, and recommended next actions. Use when the user asks \"review the [account] deal\", \"deal review on [opp]\", \"is [opp] going to close\", or \"what's the risk on [deal]\"."},"isInternal":false,"tokens":2186,"sizeBytes":9676},{"name":"SKILL.md","path":"sales/skills/deal-signals/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/deal-signals/SKILL.md","title":"deal-signals","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-signals%2FSKILL.md -->","frontmatter":{"name":"deal-signals","description":"Proactive watch over your book - deals gone quiet, close dates slipping into view, champion changes, renewal windows opening, competitor mentions - surfaced as a short alert digest you can act on. Use when the user asks \"what changed in my book\", \"any deals gone quiet\", \"what should I be worried about today\", \"run my deal signals\", or sets it up as a recurring scheduled task."},"isInternal":false,"tokens":2159,"sizeBytes":9676},{"name":"SKILL.md","path":"sales/skills/deal-slip-scenario/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/deal-slip-scenario/SKILL.md","title":"deal-slip-scenario","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdeal-slip-scenario%2FSKILL.md -->","frontmatter":{"name":"deal-slip-scenario","description":"Model what happens to your number if a deal slips, shrinks, or dies - quota impact, coverage ratio change, and the substitute pipeline needed to stay on plan. Use when the user asks \"what if [deal] slips\", \"what happens if [account] pushes to next quarter\", \"can I still hit my number without [deal]\", or \"model losing [deal]\"."},"isInternal":false,"tokens":2076,"sizeBytes":9231},{"name":"SKILL.md","path":"sales/skills/draft-outreach/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/draft-outreach/SKILL.md","title":"draft-outreach","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fdraft-outreach%2FSKILL.md -->","frontmatter":{"name":"draft-outreach","description":"Draft a personalized outreach email or multi-touch sequence to a prospect, create it as an email draft for review, and add the contact to a sequence in your sales engagement tool when asked. Use when the user asks to \"draft outreach to [person/company]\", \"write a cold email to [prospect]\", \"re-engage [prospect]\", \"draft a 3-touch sequence\", or \"reach out to [person]\"."},"isInternal":false,"tokens":2595,"sizeBytes":11491},{"name":"SKILL.md","path":"sales/skills/end-of-day/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/end-of-day/SKILL.md","title":"end-of-day","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fend-of-day%2FSKILL.md -->","frontmatter":{"name":"end-of-day","description":"The closing beat of the day - every call processed or explicitly skipped, the CRM brought current, commitments captured, and tomorrow's top three teed up. Use when the user says \"end of day\", \"close out my day\", \"process today's calls\", \"EOD\", or on an evening schedule. Companion bookend to daily-briefing."},"isInternal":false,"tokens":2444,"sizeBytes":11030},{"name":"SKILL.md","path":"sales/skills/expansion-whitespace/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/expansion-whitespace/SKILL.md","title":"expansion-whitespace","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fexpansion-whitespace%2FSKILL.md -->","frontmatter":{"name":"expansion-whitespace","description":"Find the expansion whitespace in an account or a book - what they own vs. what they could own, the evidence for each play, and the open opps to create. Use when the user asks \"what's the whitespace at [account]\", \"where can I expand [account]\", \"upsell opportunities in my book\", or \"which customers should I be growing\"."},"isInternal":false,"tokens":2154,"sizeBytes":9779},{"name":"SKILL.md","path":"sales/skills/forecast/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/forecast/SKILL.md","title":"forecast","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fforecast%2FSKILL.md -->","frontmatter":{"name":"forecast","description":"Generate the commit / best-case / pipeline narrative for a forecast call or a 1:1 with your manager - what's closing, what's at risk, what changed since last time. Use when the user asks \"write my forecast\", \"forecast narrative\", \"prep for forecast call\", \"prep for my quarterly forecast call\", \"which deals should I commit vs. call upside\", \"forecast from this pipeline export\", or \"prep for my 1:1 with my manager\".","argument-hint":"<period>"},"isInternal":false,"tokens":2185,"sizeBytes":9832},{"name":"SKILL.md","path":"sales/skills/handle-objection/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/handle-objection/SKILL.md","title":"handle-objection","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fhandle-objection%2FSKILL.md -->","frontmatter":{"name":"handle-objection","description":"Work through a live objection or competitive threat - what's really being said, the response that has worked before, and the proof points to use, grounded in your own win/loss history and customer quotes. Use when the user says \"they said we're too expensive\", \"how do I respond to [objection]\", \"[competitor] is in the deal\", \"help me handle this pushback\", or pastes an objection from an email or call."},"isInternal":false,"tokens":2109,"sizeBytes":9501},{"name":"SKILL.md","path":"sales/skills/inbox-sweep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/inbox-sweep/SKILL.md","title":"inbox-sweep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Finbox-sweep%2FSKILL.md -->","frontmatter":{"name":"inbox-sweep","description":"Batch-process unread customer emails - classify, prioritize, and draft replies. Use when the user asks \"sweep my inbox\", \"what customer emails need a reply\", \"draft replies to my customer emails\", or \"what needs a response\"."},"isInternal":false,"tokens":2614,"sizeBytes":11786},{"name":"SKILL.md","path":"sales/skills/lead-triage/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/lead-triage/SKILL.md","title":"lead-triage","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flead-triage%2FSKILL.md -->","frontmatter":{"name":"lead-triage","description":"Score and route an inbound lead, or rank a backlog of leads, against your ICP and qualification framework, then recommend a priority and next action. Use when the user asks \"triage this lead\", \"triage my leads\", \"rank my lead backlog\", \"is [company] a good lead\", \"qualify [lead]\", or pastes or uploads lead info."},"isInternal":false,"tokens":2392,"sizeBytes":10425},{"name":"SKILL.md","path":"sales/skills/log-activity/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/log-activity/SKILL.md","title":"log-activity","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Flog-activity%2FSKILL.md -->","frontmatter":{"name":"log-activity","description":"Log a call, meeting, or email exchange to the CRM after the fact as a completed activity on the right account, opportunity, and contact - drafted from your description or a transcript, shown with its sources and saved when you ask. Use when the user says \"log this call\", \"log my meeting with [account]\", \"log that I emailed [contact]\", \"track this conversation in the CRM\", or \"what activities are logged on [account]\"."},"isInternal":false,"tokens":2257,"sizeBytes":10089},{"name":"SKILL.md","path":"sales/skills/pipeline-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/pipeline-review/SKILL.md","title":"pipeline-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fpipeline-review%2FSKILL.md -->","frontmatter":{"name":"pipeline-review","description":"Stage-by-stage pipeline health check - coverage, aging, conversion, and at-risk deals - from CRM opportunity data. Use when the user asks \"review my pipeline\", \"pipeline health\", \"where's my pipeline stuck\", \"weekly pipeline review\", \"which deals should I focus on this week\", \"any stale or stuck deals\", \"which deals have past close dates\", \"which deals are single-threaded\", or \"check my pipeline coverage against my number\".","argument-hint":"<segment or rep>"},"isInternal":false,"tokens":2110,"sizeBytes":9350},{"name":"SKILL.md","path":"sales/skills/renewal-radar/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/renewal-radar/SKILL.md","title":"renewal-radar","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frenewal-radar%2FSKILL.md -->","frontmatter":{"name":"renewal-radar","description":"Upcoming renewals with timing, risk, and uplift potential - and the renewal opportunity records to keep them honest. Use when the user asks \"what renewals are coming up\", \"renewal radar\", \"is [account] going to renew\", \"prep the [account] renewal\", or \"which renewals are at risk\"."},"isInternal":false,"tokens":2147,"sizeBytes":9681},{"name":"SKILL.md","path":"sales/skills/rep-context/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/rep-context/SKILL.md","title":"rep-context","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Frep-context%2FSKILL.md -->","frontmatter":{"name":"rep-context","description":"Leader's prep on a single rep before a 1:1 - their pipeline, recent activity, what they've been working on per chat and calendar, and where they might need help. Use when the user asks \"prep for my 1:1 with [rep]\" (a rep you manage), \"how is [rep] doing\", or \"what's [rep] working on\"."},"isInternal":false,"tokens":1963,"sizeBytes":8665},{"name":"SKILL.md","path":"sales/skills/route-lead/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/route-lead/SKILL.md","title":"route-lead","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Froute-lead%2FSKILL.md -->","frontmatter":{"name":"route-lead","description":"Decide who owns an unrouted lead or opportunity and manage the handoff - deterministic routing by the org's own rules, a routing card the human router accepts or overrides, and drafted handoff notes. Use when the user says \"route this lead\", \"who should own [lead/opp]\", \"work the routing queue\", \"assign [company] to a rep\", or on a scheduled intake sweep."},"isInternal":false,"tokens":2278,"sizeBytes":10225},{"name":"SKILL.md","path":"sales/skills/schedule-meeting/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/schedule-meeting/SKILL.md","title":"schedule-meeting","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fschedule-meeting%2FSKILL.md -->","frontmatter":{"name":"schedule-meeting","description":"Find a time, draft the invite, and book the meeting on Google Calendar or Outlook - then log it to the CRM as an event on the right account and opportunity. Use when the user says \"schedule a follow-up with [contact]\", \"book the demo with [account]\", \"find time with [name] next week\", \"send my Calendly link\", or \"get the QBR on the calendar\"."},"isInternal":false,"tokens":2604,"sizeBytes":11674},{"name":"SKILL.md","path":"sales/skills/setup/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/setup/SKILL.md","title":"setup","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fsetup%2FSKILL.md -->","frontmatter":{"name":"setup","description":"First-run setup - checks which tools are connected, shows what's connected and what each one unlocks, learns how you write from your sent email, and renders a starter dashboard right away with no upfront interview. When tools are missing it walks through connecting the CRM, then email, then calendar, showing something useful after each. Use on first open, or when the user says \"set me up\", \"get started\", \"what's connected\", \"learn my voice\", \"match my writing style\", or \"onboard me\"."},"isInternal":false,"tokens":3610,"sizeBytes":15889},{"name":"SKILL.md","path":"sales/skills/stakeholder-map/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/stakeholder-map/SKILL.md","title":"stakeholder-map","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fstakeholder-map%2FSKILL.md -->","frontmatter":{"name":"stakeholder-map","description":"Map the people in a deal or account - roles, influence, sentiment, who's missing, and your best access path to the people you haven't reached. Use when the user asks \"who are the players at [account]\", \"who's my way in\", \"am I single-threaded on [deal]\", \"map the stakeholders\", or \"who else should I be talking to\"."},"isInternal":false,"tokens":2254,"sizeBytes":10210},{"name":"SKILL.md","path":"sales/skills/team-pipeline/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/team-pipeline/SKILL.md","title":"team-pipeline","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fteam-pipeline%2FSKILL.md -->","frontmatter":{"name":"team-pipeline","description":"Leader view - roll up a team's pipeline by rep and stage, flag at-risk deals, and surface coaching moments. Use when the user asks \"show my team's pipeline\", \"team forecast\", \"prep for my team's pipeline review\", or \"where does my team need help\"."},"isInternal":false,"tokens":2124,"sizeBytes":9372},{"name":"SKILL.md","path":"sales/skills/update-opportunity/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/update-opportunity/SKILL.md","title":"update-opportunity","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fupdate-opportunity%2FSKILL.md -->","frontmatter":{"name":"update-opportunity","description":"Guided updates to an opportunity - push the stage, move the close date, set next steps, fix amount or forecast category. Shows the before/after, writes what you ask for or accept, and verifies with a record link. Use when the user says \"push [deal] to [stage]\", \"move the close date on [opp]\", \"update next steps on [account]\", \"mark [deal] commit\", or accepts a suggested update from another skill."},"isInternal":false,"tokens":2169,"sizeBytes":9729},{"name":"SKILL.md","path":"sales/skills/weekly-wrap/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/weekly-wrap/SKILL.md","title":"weekly-wrap","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fweekly-wrap%2FSKILL.md -->","frontmatter":{"name":"weekly-wrap","description":"End-of-week summary for a rep or leader - what closed, what moved, what slipped, and what's on deck Monday. Optionally drafts a chat post to the team channel. Use when the user says \"weekly wrap\", \"week in review\", \"what happened this week\", or \"Friday summary\"."},"isInternal":false,"tokens":2072,"sizeBytes":9321},{"name":"SKILL.md","path":"sales/skills/win-loss-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/skills/win-loss-review/SKILL.md","title":"win-loss-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2Fskills%2Fwin-loss-review%2FSKILL.md -->","frontmatter":{"name":"win-loss-review","description":"Analyze recently closed opportunities to find patterns in what wins and what loses - stage of loss, common objections from transcripts, deal characteristics. Leader-focused. Use when the user asks \"win loss review\", \"why are we losing deals\", \"what's working\", or \"analyze closed opps\"."},"isInternal":false,"tokens":2013,"sizeBytes":8990},{"name":"ad_copy.md","path":"small-business/skills/ad-manager/reference/ad_copy.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/reference/ad_copy.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fad_copy.md -->","isInternal":false,"tokens":1166,"sizeBytes":4802},{"name":"change_playbook.md","path":"small-business/skills/ad-manager/reference/change_playbook.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/reference/change_playbook.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fchange_playbook.md -->","isInternal":false,"tokens":1284,"sizeBytes":5429},{"name":"data_sources.md","path":"small-business/skills/ad-manager/reference/data_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/reference/data_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdata_sources.md -->","isInternal":false,"tokens":1116,"sizeBytes":4978},{"name":"diagnostics.md","path":"small-business/skills/ad-manager/reference/diagnostics.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/reference/diagnostics.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fdiagnostics.md -->","isInternal":false,"tokens":1048,"sizeBytes":4644},{"name":"gotchas.md","path":"small-business/skills/ad-manager/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1412,"sizeBytes":5881},{"name":"SKILL.md","path":"small-business/skills/ad-manager/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ad-manager/SKILL.md","title":"ad-manager","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fad-manager%2FSKILL.md -->","frontmatter":{"name":"ad-manager","description":"The ads consultant that becomes an ads agent. Reads paid-ad performance natively through the TikTok Ads connector, or via a build-connector Zapier connection for other ad platforms, explains in plain English what is working and what is burning money, recommends budget, targeting, and creative changes with the dollar impact of each, drafts new ad copy in the owner's voice plus Canva creative briefs, and — only after an explicit yes — executes the approved changes in the ad account. Works from exported CSV reports when nothing is connected, the normal starting point. Use this whenever the owner talks about ads or ad spend at all, including \"are my ads working,\" \"what's my ROI on ads,\" \"I'm spending money on Facebook and I don't know what I'm getting,\" \"should I turn this campaign off,\" \"my cost per lead is going up,\" \"write me a new ad,\" \"who should I be targeting,\" or \"the ad guy quit.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2177,"sizeBytes":9813},{"name":"coding_rules.md","path":"small-business/skills/ap-processor/reference/coding_rules.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/reference/coding_rules.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fcoding_rules.md -->","isInternal":false,"tokens":844,"sizeBytes":3793},{"name":"gotchas.md","path":"small-business/skills/ap-processor/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":961,"sizeBytes":4090},{"name":"intake_and_extraction.md","path":"small-business/skills/ap-processor/reference/intake_and_extraction.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/reference/intake_and_extraction.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fintake_and_extraction.md -->","isInternal":false,"tokens":964,"sizeBytes":4208},{"name":"matching_and_exceptions.md","path":"small-business/skills/ap-processor/reference/matching_and_exceptions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/reference/matching_and_exceptions.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fmatching_and_exceptions.md -->","isInternal":false,"tokens":776,"sizeBytes":3367},{"name":"payment_run.md","path":"small-business/skills/ap-processor/reference/payment_run.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/reference/payment_run.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2Freference%2Fpayment_run.md -->","isInternal":false,"tokens":767,"sizeBytes":3240},{"name":"SKILL.md","path":"small-business/skills/ap-processor/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ap-processor/SKILL.md","title":"ap-processor","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fap-processor%2FSKILL.md -->","frontmatter":{"name":"ap-processor","description":"Works the bill pile end to end: reads bills and vendor statements out of the AP inbox or from uploaded PDFs and phone photos, pulls out vendor, amount, due date, and line detail, codes each one to the right account and job, matches it against the purchase order and the receiving ticket, then stages the entries and a proposed payment run in QuickBooks, Xero, or NetSuite for the owner to approve in one pass. Nothing is entered and nothing is paid without an explicit yes. Reach for this whenever bills, vendor invoices, or paying people comes up — including \"what do I owe,\" \"the bills are piling up,\" \"pull the invoices out of my email and into QuickBooks,\" \"code these for me,\" \"who needs to get paid this week,\" \"did we get billed twice,\" or when the owner forwards a supplier invoice with no message at all. Use it before cash-flow-snapshot or month-end-prep so those run on real payables instead of a guess.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3307,"sizeBytes":14923},{"name":"SKILL.md","path":"small-business/skills/brand-style/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/brand-style/SKILL.md","title":"brand-style","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbrand-style%2FSKILL.md -->","frontmatter":{"name":"brand-style","description":"Sets and updates the owner's brand look and output preferences, which every page and document the plugin produces then follows automatically. Captures the brand from a pasted website link or a plain-words description — never a hex code, color picker, or upload — previews it on a sample page, asks how they want their outputs delivered (visual artifacts, Word docs, markdown, Notion pages, Canva Docs, or best-for-the-skill), and saves both to the business profile. Runs inside smb-onboard on first setup and stands alone forever after. Use when the owner says \"update my brand,\" \"we rebranded,\" \"change my colors,\" \"make the reports match our new look,\" \"change how you give me reports,\" \"I want Word docs instead,\" or anything about the look or format of what the plugin hands them.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1237,"sizeBytes":5137},{"name":"capture.md","path":"small-business/skills/build-agent/reference/capture.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-agent/reference/capture.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fcapture.md -->","isInternal":false,"tokens":1015,"sizeBytes":4463},{"name":"gotchas.md","path":"small-business/skills/build-agent/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-agent/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1171,"sizeBytes":5143},{"name":"skill_authoring.md","path":"small-business/skills/build-agent/reference/skill_authoring.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-agent/reference/skill_authoring.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2Freference%2Fskill_authoring.md -->","isInternal":false,"tokens":1329,"sizeBytes":5834},{"name":"SKILL.md","path":"small-business/skills/build-agent/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-agent/SKILL.md","title":"build-agent","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-agent%2FSKILL.md -->","frontmatter":{"name":"build-agent","description":"Turns a task the owner keeps doing by hand into a named, reusable skill they can trigger by name or put on a schedule. Watches them do it once or listens to them describe it, works out what varies and what stays fixed, writes the skill with approval checkpoints in the right places, registers it with the router, and shares it with the team. This is how a business gets a workflow nobody shipped for them. Use this whenever the owner describes something repetitive they wish were automatic — including phrasings like \"I do this every week,\" \"can you remember how to do this,\" \"make this a thing I can just ask for,\" \"build me an agent,\" \"automate this for me,\" \"turn this into a workflow,\" or \"I want this to happen every Monday.\" Reach for it when they describe a routine, even without asking for automation.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1466,"sizeBytes":6572},{"name":"discovery.md","path":"small-business/skills/build-connector/reference/discovery.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-connector/reference/discovery.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fdiscovery.md -->","isInternal":false,"tokens":1690,"sizeBytes":7483},{"name":"gotchas.md","path":"small-business/skills/build-connector/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-connector/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1477,"sizeBytes":6708},{"name":"paths.md","path":"small-business/skills/build-connector/reference/paths.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-connector/reference/paths.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fpaths.md -->","isInternal":false,"tokens":923,"sizeBytes":4219},{"name":"use-zapier.md","path":"small-business/skills/build-connector/reference/use-zapier.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-connector/reference/use-zapier.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2Freference%2Fuse-zapier.md -->","isInternal":false,"tokens":2427,"sizeBytes":10668},{"name":"SKILL.md","path":"small-business/skills/build-connector/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/build-connector/SKILL.md","title":"build-connector","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbuild-connector%2FSKILL.md -->","frontmatter":{"name":"build-connector","description":"Gets Claude talking to a tool nobody built an official connector for. Works out what the system is, checks the Claude connector directory for an existing connector first, and when there isn't one connects the tool through Zapier — never by hand-building against a raw API — with credentials handled safely and approval gates on anything that writes. This is what turns \"my ERP isn't supported\" into an afternoon. Use this whenever the owner names a tool that isn't connected — including phrasings like \"can you connect to my,\" \"make my tools talk to each other,\" \"there's no API for this,\" \"pull data out of my field service software,\" \"I use ServiceTrade and it's not on the list,\" or \"is there any way to get at this data.\" Reach for it whenever an unsupported system is blocking something else.\n","allowed-tools":"Read, WebFetch, ToolSearch","allowedTools":["Read,","WebFetch,","ToolSearch"]},"allowedTools":["Read,","WebFetch,","ToolSearch"],"isInternal":false,"tokens":2046,"sizeBytes":9104},{"name":"data_sources.md","path":"small-business/skills/business-pulse/reference/data_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/reference/data_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fdata_sources.md -->","isInternal":false,"tokens":2410,"sizeBytes":9630},{"name":"gotchas.md","path":"small-business/skills/business-pulse/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":708,"sizeBytes":3193},{"name":"output_template.md","path":"small-business/skills/business-pulse/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":1216,"sizeBytes":4062},{"name":"thresholds.md","path":"small-business/skills/business-pulse/reference/thresholds.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/reference/thresholds.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fthresholds.md -->","isInternal":false,"tokens":583,"sizeBytes":2210},{"name":"v2_sources.md","path":"small-business/skills/business-pulse/reference/v2_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/reference/v2_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2Freference%2Fv2_sources.md -->","isInternal":false,"tokens":733,"sizeBytes":3367},{"name":"SKILL.md","path":"small-business/skills/business-pulse/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/business-pulse/SKILL.md","title":"business-pulse","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fbusiness-pulse%2FSKILL.md -->","frontmatter":{"name":"business-pulse","description":"Produces a one-page cross-functional business snapshot for SMB owners — cash position (the ledger: MYOB, NetSuite, QuickBooks, Xero, or Zoho Books), sales trend (PayPal/Square/Stripe), pipeline movement (HubSpot), this week's commitments (Calendar), urgent watch-list items (Gmail or M365, Slack), and the single most important thing needing attention today. Proactively tries every available connector and gracefully scopes to whatever is connected — one connector gives a partial pulse; the full stack gives the full picture. Trigger when the user asks how the business is doing, wants a snapshot, a daily brief, a Friday recap, or says anything like \"what am I missing\" or \"catch me up on the business.\" A start-of-week briefing routes to /monday-brief, which runs this skill as its first link.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2837,"sizeBytes":12114},{"name":"SKILL.md","path":"small-business/skills/call-list/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/call-list/SKILL.md","title":"call-list","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcall-list%2FSKILL.md -->","frontmatter":{"name":"call-list","description":"Builds today's call list. Runs lead-triage to rank the top-5 leads most worth calling, supplies talking points from email history, blocks time on the calendar, and drafts follow-up messages. Trigger on \"call list,\" \"who am I calling today,\" \"top five to call today,\" or \"block time for calls.\" An owner who wants leads scored or ranked with no calendar blocks routes to lead-triage directly. Accepts optional count and date arguments.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1119,"sizeBytes":5015},{"name":"canva-api.md","path":"small-business/skills/canva-creator/reference/canva-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/canva-creator/reference/canva-api.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fcanva-api.md -->","isInternal":false,"tokens":1810,"sizeBytes":6763},{"name":"boutique-brief-campaign.md","path":"small-business/skills/canva-creator/reference/examples/boutique-brief-campaign.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/canva-creator/reference/examples/boutique-brief-campaign.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fexamples%2Fboutique-brief-campaign.md -->","isInternal":false,"tokens":1554,"sizeBytes":5894},{"name":"gotchas.md","path":"small-business/skills/canva-creator/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/canva-creator/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":3051,"sizeBytes":12842},{"name":"hubspot-staging.md","path":"small-business/skills/canva-creator/reference/hubspot-staging.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/canva-creator/reference/hubspot-staging.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2Freference%2Fhubspot-staging.md -->","isInternal":false,"tokens":977,"sizeBytes":3630},{"name":"SKILL.md","path":"small-business/skills/canva-creator/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/canva-creator/SKILL.md","title":"canva-creator","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcanva-creator%2FSKILL.md -->","frontmatter":{"name":"canva-creator","description":"Takes an approved content brief and executes a campaign end-to-end: builds the posting calendar, generates Canva designs for social posts, drafts caption and email copy, and stages social sends in HubSpot. Canva is used for social posts only (Instagram, Facebook, X, LinkedIn) — email content is drafted as plain text and surfaced inline for the owner to send from their own tool. Every step requires explicit owner approval. This is the one-shot campaign executor: a finished brief goes in, a complete campaign comes out. Use when the owner hands off an approved brief or points at one — \"run this brief,\" \"execute the campaign,\" \"turn this brief into posts,\" \"build the campaign from the plan we approved.\" For day-to-day posting with no brief — \"I need to post more,\" \"what should we post\" — use social-content-engine instead; it owns the standing calendar.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":4801,"sizeBytes":19794},{"name":"worked-example.md","path":"small-business/skills/cash-flow-snapshot/reference/examples/worked-example.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/cash-flow-snapshot/reference/examples/worked-example.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fexamples%2Fworked-example.md -->","isInternal":false,"tokens":1049,"sizeBytes":3690},{"name":"gotchas.md","path":"small-business/skills/cash-flow-snapshot/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/cash-flow-snapshot/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":531,"sizeBytes":2406},{"name":"v2_sources.md","path":"small-business/skills/cash-flow-snapshot/reference/v2_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/cash-flow-snapshot/reference/v2_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2Freference%2Fv2_sources.md -->","isInternal":false,"tokens":1165,"sizeBytes":5358},{"name":"SKILL.md","path":"small-business/skills/cash-flow-snapshot/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/cash-flow-snapshot/SKILL.md","title":"cash-flow-snapshot","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcash-flow-snapshot%2FSKILL.md -->","frontmatter":{"name":"cash-flow-snapshot","description":"Reads AR/AP, historical cash timing, and known fixed costs from the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) or from PayPal, Square, or Stripe — or a CSV upload — and produces a 30/60/90-day cash flow forecast with percentage-variance confidence bands and named risk flags. Delivers a chat summary and a downloadable XLSX. Use when the user asks \"forecast my cash flow,\" \"will I make payroll,\" mentions \"runway,\" or says \"cash crunch.\" Falls back to CSV upload when no connector is live.\n","compatibility":"Requires one or more of: a ledger MCP (MYOB, NetSuite, QuickBooks, Xero, Zoho Books), PayPal MCP, Shopify MCP, Square MCP, Stripe MCP, file upload (CSV fallback). Output uses xlsx skill.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3007,"sizeBytes":12709},{"name":"SKILL.md","path":"small-business/skills/close-month/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/close-month/SKILL.md","title":"close-month","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fclose-month%2FSKILL.md -->","frontmatter":{"name":"close-month","description":"Closes the books and turns them into a decision as a three-link chain — month-end-prep reconciles the ledger against every connected payment processor and writes the P&L narrative, cash-flow-snapshot then refreshes the 30/60/90-day forecast off the newly closed numbers rather than raw ones, and report-builder publishes and distributes the close packet. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) and uses Gusto, PayPal, Ramp, Shopify, Square, and Stripe when connected, falling back to statement or CSV uploads. Trigger on \"close the month,\" \"month-end,\" \"close the books,\" \"reconcile,\" \"send the close packet to my accountant,\" or when the owner asks why revenue or margin moved last month. An owner who wants only the reconciliation and its flags, with no forecast refresh and no packet distribution, routes to month-end-prep directly.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1548,"sizeBytes":6875},{"name":"retail-boutique-example.md","path":"small-business/skills/content-strategy/reference/examples/retail-boutique-example.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/content-strategy/reference/examples/retail-boutique-example.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fexamples%2Fretail-boutique-example.md -->","isInternal":false,"tokens":704,"sizeBytes":2872},{"name":"gotchas.md","path":"small-business/skills/content-strategy/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/content-strategy/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":977,"sizeBytes":4389},{"name":"v2_sources.md","path":"small-business/skills/content-strategy/reference/v2_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/content-strategy/reference/v2_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2Freference%2Fv2_sources.md -->","isInternal":false,"tokens":310,"sizeBytes":1513},{"name":"SKILL.md","path":"small-business/skills/content-strategy/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/content-strategy/SKILL.md","title":"content-strategy","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontent-strategy%2FSKILL.md -->","frontmatter":{"name":"content-strategy","description":"Analyzes sales data from PayPal and QuickBooks to find top performers and slow movers, layers in seasonality, and produces a prioritized 30-day content brief: what to push, what offers to run, what to hold. Strategic output only — no calendars or assets. Use when the user asks what to post, wants a content plan, asks what's selling, or what to promote this month.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1912,"sizeBytes":8269},{"name":"docusign-fetch.md","path":"small-business/skills/contract-review/reference/docusign-fetch.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/reference/docusign-fetch.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fdocusign-fetch.md -->","isInternal":false,"tokens":232,"sizeBytes":974},{"name":"flagged-summary-saas.md","path":"small-business/skills/contract-review/reference/examples/flagged-summary-saas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/reference/examples/flagged-summary-saas.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fexamples%2Fflagged-summary-saas.md -->","isInternal":false,"tokens":1010,"sizeBytes":4405},{"name":"gmail-fetch.md","path":"small-business/skills/contract-review/reference/gmail-fetch.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/reference/gmail-fetch.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgmail-fetch.md -->","isInternal":false,"tokens":204,"sizeBytes":912},{"name":"gotchas.md","path":"small-business/skills/contract-review/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":835,"sizeBytes":3577},{"name":"m365-fetch.md","path":"small-business/skills/contract-review/reference/m365-fetch.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/reference/m365-fetch.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2Freference%2Fm365-fetch.md -->","isInternal":false,"tokens":599,"sizeBytes":2611},{"name":"SKILL.md","path":"small-business/skills/contract-review/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/contract-review/SKILL.md","title":"contract-review","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcontract-review%2FSKILL.md -->","frontmatter":{"name":"contract-review","description":"Lightweight NDA, MSA, and vendor contract review for SMBs without legal on staff. Reads contracts from local files, mail attachments (Gmail or M365), a connected file store (Google Drive or M365), or DocuSign envelopes; flags non-standard terms; explains risks in plain English; and outputs a marked-up redline as a separate DOCX. Use when the user says \"review this contract,\" \"what am I signing,\" \"red flags,\" \"flag any concerns,\" \"check the payment terms,\" or uploads/forwards a contract or legal agreement.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2563,"sizeBytes":11601},{"name":"cleanup-checklist.md","path":"small-business/skills/crm-autopilot/reference/cleanup-checklist.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/cleanup-checklist.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fcleanup-checklist.md -->","isInternal":false,"tokens":1044,"sizeBytes":4500},{"name":"cleanup-deal.md","path":"small-business/skills/crm-autopilot/reference/examples/cleanup-deal.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/examples/cleanup-deal.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Fcleanup-deal.md -->","isInternal":false,"tokens":1014,"sizeBytes":3984},{"name":"log-call-happy-path.md","path":"small-business/skills/crm-autopilot/reference/examples/log-call-happy-path.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/examples/log-call-happy-path.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-call-happy-path.md -->","isInternal":false,"tokens":739,"sizeBytes":2896},{"name":"log-email-happy-path.md","path":"small-business/skills/crm-autopilot/reference/examples/log-email-happy-path.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/examples/log-email-happy-path.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fexamples%2Flog-email-happy-path.md -->","isInternal":false,"tokens":552,"sizeBytes":2171},{"name":"gotchas.md","path":"small-business/skills/crm-autopilot/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1231,"sizeBytes":5165},{"name":"hubspot-fields.md","path":"small-business/skills/crm-autopilot/reference/hubspot-fields.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/hubspot-fields.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fhubspot-fields.md -->","isInternal":false,"tokens":852,"sizeBytes":4675},{"name":"lightweight_crm.md","path":"small-business/skills/crm-autopilot/reference/lightweight_crm.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/lightweight_crm.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Flightweight_crm.md -->","isInternal":false,"tokens":963,"sizeBytes":4153},{"name":"salesforce-fields.md","path":"small-business/skills/crm-autopilot/reference/salesforce-fields.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/salesforce-fields.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fsalesforce-fields.md -->","isInternal":false,"tokens":1464,"sizeBytes":6052},{"name":"standing_mode.md","path":"small-business/skills/crm-autopilot/reference/standing_mode.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/reference/standing_mode.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2Freference%2Fstanding_mode.md -->","isInternal":false,"tokens":1206,"sizeBytes":5180},{"name":"SKILL.md","path":"small-business/skills/crm-autopilot/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/crm-autopilot/SKILL.md","title":"crm-autopilot","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fcrm-autopilot%2FSKILL.md -->","frontmatter":{"name":"crm-autopilot","description":"Keeps the CRM current without the owner ever opening it. Creates and updates contacts and deals from email, calendar, and call transcripts; logs activity automatically; drafts follow-ups on deals that have gone quiet; and maintains a next-step queue so nothing sits unowned. Runs on demand or on a schedule, includes a hygiene sweep for duplicates and stale records, and builds a lightweight CRM in a spreadsheet for owners who don't have one. Use this whenever CRM data or pipeline hygiene comes up — including phrasings like \"update my CRM,\" \"log this call,\" \"clean up HubSpot,\" \"clean up Salesforce,\" \"add this to the deal,\" \"turn my meeting into a deal note,\" \"which deals have gone quiet,\" \"I hate data entry,\" or \"my pipeline is out of date.\" Reach for it when the owner describes a call or meeting worth recording, even without naming the CRM.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3404,"sizeBytes":15208},{"name":"drafting.md","path":"small-business/skills/grant-rfp-writer/reference/drafting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/reference/drafting.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fdrafting.md -->","isInternal":false,"tokens":1315,"sizeBytes":6264},{"name":"go_no_go.md","path":"small-business/skills/grant-rfp-writer/reference/go_no_go.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/reference/go_no_go.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgo_no_go.md -->","isInternal":false,"tokens":1364,"sizeBytes":6140},{"name":"gotchas.md","path":"small-business/skills/grant-rfp-writer/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1350,"sizeBytes":6417},{"name":"opportunity_sources.md","path":"small-business/skills/grant-rfp-writer/reference/opportunity_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/reference/opportunity_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Fopportunity_sources.md -->","isInternal":false,"tokens":962,"sizeBytes":4453},{"name":"org_profile.md","path":"small-business/skills/grant-rfp-writer/reference/org_profile.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/reference/org_profile.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2Freference%2Forg_profile.md -->","isInternal":false,"tokens":879,"sizeBytes":4188},{"name":"SKILL.md","path":"small-business/skills/grant-rfp-writer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grant-rfp-writer/SKILL.md","title":"grant-rfp-writer","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrant-rfp-writer%2FSKILL.md -->","frontmatter":{"name":"grant-rfp-writer","description":"Finds grant and solicitation opportunities the organization actually qualifies for, runs a hard go/no-go before anyone starts writing, drafts the application or response from past submissions and real program data, and tracks every deadline and reporting obligation that follows an award. Built for nonprofits, government contractors, and education, and it filters daily feeds like SAM.gov or DIBBS down to the handful worth bidding. Runs on Google Drive or M365 with DocuSign and Calendar deepening it, and works from uploaded past submissions plus web research when nothing is connected. Use this whenever a funding or bidding opportunity is in play — including \"find grants we qualify for,\" \"should we bid this,\" \"draft the response to this RFP,\" \"we've got 50 solicitations to filter,\" \"what's due on the federal grant,\" or \"help me write the proposal narrative.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2873,"sizeBytes":13458},{"name":"SKILL.md","path":"small-business/skills/grow-pipeline/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/grow-pipeline/SKILL.md","title":"grow-pipeline","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrow-pipeline%2FSKILL.md -->","frontmatter":{"name":"grow-pipeline","description":"Fills the funnel end to end without the owner babysitting it — reads the market and the competition for context, builds a ranked list of named prospects with a reason attached to each, writes personalized outreach in the owner's own voice, and logs every touch to the CRM. Chains lead-finder, outreach-composer, and crm-autopilot behind a web-native market read, with an owner approval at every handoff. Use this whenever the owner wants more pipeline rather than one specific piece of it, including phrasings like \"I need more leads,\" \"fill my funnel,\" \"who should I be calling and what do I say,\" \"find me customers like my best ones and reach out,\" \"build me a prospect list and write the emails,\" or \"sales has gone quiet, get something moving.\" Reach for it when the owner describes wanting new business generally rather than asking for a list or a single email.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1946,"sizeBytes":8886},{"name":"data_sources.md","path":"small-business/skills/growth-pulse/reference/data_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/growth-pulse/reference/data_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fdata_sources.md -->","isInternal":false,"tokens":1240,"sizeBytes":5770},{"name":"gotchas.md","path":"small-business/skills/growth-pulse/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/growth-pulse/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1148,"sizeBytes":4999},{"name":"output_template.md","path":"small-business/skills/growth-pulse/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/growth-pulse/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":972,"sizeBytes":3789},{"name":"thresholds.md","path":"small-business/skills/growth-pulse/reference/thresholds.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/growth-pulse/reference/thresholds.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2Freference%2Fthresholds.md -->","isInternal":false,"tokens":810,"sizeBytes":2945},{"name":"SKILL.md","path":"small-business/skills/growth-pulse/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/growth-pulse/SKILL.md","title":"growth-pulse","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fgrowth-pulse%2FSKILL.md -->","frontmatter":{"name":"growth-pulse","description":"Answers one question for an SMB owner — is the growth engine actually working? Pulls sales trend by channel, funnel conversion, campaign return, best and worst performing products, and customer sentiment from whatever is connected, then ends with the three growth actions worth taking this week. The growth-side twin of business-pulse, which covers the finance side. Use this whenever the owner asks how marketing or sales is performing, whether a campaign paid off, where leads are coming from, why the pipeline is stalling, which products are moving, or says anything like \"is my marketing working,\" \"growth check,\" \"how's the funnel,\" or \"where should I put my money next month.\" Reach for it even when the owner names a single channel rather than growth overall.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2156,"sizeBytes":9784},{"name":"candidate_comms.md","path":"small-business/skills/hiring-screener/reference/candidate_comms.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/reference/candidate_comms.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fcandidate_comms.md -->","isInternal":false,"tokens":1133,"sizeBytes":4906},{"name":"fair_screening.md","path":"small-business/skills/hiring-screener/reference/fair_screening.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/reference/fair_screening.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Ffair_screening.md -->","isInternal":false,"tokens":1188,"sizeBytes":5514},{"name":"gotchas.md","path":"small-business/skills/hiring-screener/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1313,"sizeBytes":5619},{"name":"onboarding.md","path":"small-business/skills/hiring-screener/reference/onboarding.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/reference/onboarding.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Fonboarding.md -->","isInternal":false,"tokens":978,"sizeBytes":4425},{"name":"rubric.md","path":"small-business/skills/hiring-screener/reference/rubric.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/reference/rubric.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2Freference%2Frubric.md -->","isInternal":false,"tokens":1249,"sizeBytes":5413},{"name":"SKILL.md","path":"small-business/skills/hiring-screener/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/hiring-screener/SKILL.md","title":"hiring-screener","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fhiring-screener%2FSKILL.md -->","frontmatter":{"name":"hiring-screener","description":"Takes a pile of applications and turns it into a ranked shortlist, scored only against the job's stated rubric, with drafted replies to every candidate, scheduled interviews, and an onboarding checklist for whoever gets hired. Picks up where job-post-builder leaves off and carries the funnel through to first day, including the payroll setup handoff. Runs on Gmail and Google Calendar, deepens with Gusto, DocuSign, and Drive or M365, and works entirely from uploaded resumes with drafted replies the owner sends by hand. Use this whenever the owner has applicants to deal with — including phrasings like \"I've got 40 resumes and no time,\" \"who should I interview,\" \"screen these applications,\" \"help me narrow this down,\" \"set up interviews for the top three,\" or \"I need to tell the rest no.\" Reach for it when the owner mentions applicants, resumes, candidates, or being buried in a hiring inbox.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2291,"sizeBytes":10270},{"name":"digest_format.md","path":"small-business/skills/inbox-manager/reference/digest_format.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/reference/digest_format.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fdigest_format.md -->","isInternal":false,"tokens":1119,"sizeBytes":4573},{"name":"gotchas.md","path":"small-business/skills/inbox-manager/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1559,"sizeBytes":6993},{"name":"handoffs.md","path":"small-business/skills/inbox-manager/reference/handoffs.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/reference/handoffs.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Fhandoffs.md -->","isInternal":false,"tokens":1045,"sizeBytes":4544},{"name":"reply_drafting.md","path":"small-business/skills/inbox-manager/reference/reply_drafting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/reference/reply_drafting.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Freply_drafting.md -->","isInternal":false,"tokens":870,"sizeBytes":3772},{"name":"triage_rules.md","path":"small-business/skills/inbox-manager/reference/triage_rules.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/reference/triage_rules.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2Freference%2Ftriage_rules.md -->","isInternal":false,"tokens":884,"sizeBytes":3905},{"name":"SKILL.md","path":"small-business/skills/inbox-manager/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inbox-manager/SKILL.md","title":"inbox-manager","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finbox-manager%2FSKILL.md -->","frontmatter":{"name":"inbox-manager","description":"Turns a full inbox into a short, ranked list of what actually needs the owner. Reads the mail, sorts it into needs-you, drafted-and-waiting, and handled, writes replies in the owner's own voice, pulls out the action items and deadlines buried in long threads, files what is finished, and hands bills, leads, and scheduling requests to the skills that own them. Works from pasted or forwarded email text when no mailbox is connected. Use this whenever the owner mentions email at all — including \"drowning in email,\" \"I have 300 unread,\" \"what emails need me,\" \"go through my inbox,\" \"clean up my email,\" \"did I miss anything,\" \"who am I supposed to get back to,\" \"draft a reply to this,\" or \"catch me up on my mail.\" Reach for it for one forwarded message as readily as for a whole morning's backlog.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2416,"sizeBytes":10780},{"name":"data_sources.md","path":"small-business/skills/inventory-planner/reference/data_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/reference/data_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fdata_sources.md -->","isInternal":false,"tokens":999,"sizeBytes":4388},{"name":"gotchas.md","path":"small-business/skills/inventory-planner/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1132,"sizeBytes":4550},{"name":"po_drafting.md","path":"small-business/skills/inventory-planner/reference/po_drafting.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/reference/po_drafting.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fpo_drafting.md -->","isInternal":false,"tokens":934,"sizeBytes":3939},{"name":"seasonality.md","path":"small-business/skills/inventory-planner/reference/seasonality.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/reference/seasonality.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fseasonality.md -->","isInternal":false,"tokens":1255,"sizeBytes":5414},{"name":"velocity_and_reorder.md","path":"small-business/skills/inventory-planner/reference/velocity_and_reorder.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/reference/velocity_and_reorder.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2Freference%2Fvelocity_and_reorder.md -->","isInternal":false,"tokens":2133,"sizeBytes":8606},{"name":"SKILL.md","path":"small-business/skills/inventory-planner/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/inventory-planner/SKILL.md","title":"inventory-planner","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finventory-planner%2FSKILL.md -->","frontmatter":{"name":"inventory-planner","description":"Works out what to reorder and when, from what is actually selling: pulls sales history and stock on hand from Shopify, Square, NetSuite, or an uploaded CSV, computes 7-day and 28-day sales velocity per item, projects a conservative stockout date for each, sizes a 60-day reorder quantity, and drafts the purchase orders and vendor emails to cover it. Flags the money sitting still too — overstock, dead stock, and zero-velocity items, reported as slow movers to clear rather than things to buy more of. Seasonality is applied where the history supports it and named where it does not. Nothing is ordered and no vendor is emailed without approval. Reach for this whenever stock comes up — \"what do I need to reorder,\" \"am I going to run out,\" \"what should I order this month,\" \"we keep running out of filters,\" \"how much cash is sitting in the warehouse,\" \"what is not moving,\" or \"draft a PO for my supplier.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2239,"sizeBytes":9954},{"name":"firm-reminder.md","path":"small-business/skills/invoice-chase/reference/examples/firm-reminder.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/reference/examples/firm-reminder.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Ffirm-reminder.md -->","isInternal":false,"tokens":225,"sizeBytes":875},{"name":"gentle-reminder.md","path":"small-business/skills/invoice-chase/reference/examples/gentle-reminder.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/reference/examples/gentle-reminder.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fexamples%2Fgentle-reminder.md -->","isInternal":false,"tokens":219,"sizeBytes":829},{"name":"gotchas.md","path":"small-business/skills/invoice-chase/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1119,"sizeBytes":5158},{"name":"tone-matching.md","path":"small-business/skills/invoice-chase/reference/tone-matching.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/reference/tone-matching.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Ftone-matching.md -->","isInternal":false,"tokens":429,"sizeBytes":1703},{"name":"v2_sources.md","path":"small-business/skills/invoice-chase/reference/v2_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/reference/v2_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2Freference%2Fv2_sources.md -->","isInternal":false,"tokens":1317,"sizeBytes":5772},{"name":"SKILL.md","path":"small-business/skills/invoice-chase/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/invoice-chase/SKILL.md","title":"invoice-chase","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Finvoice-chase%2FSKILL.md -->","frontmatter":{"name":"invoice-chase","version":"0.3.0","description":"Drafts overdue-invoice reminder emails from the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) plus PayPal, Stripe, and Airwallex data, matched to each customer's payment history and tone (gentle for good customers, firm for repeat late payers). Sends via PayPal with owner approval; everything else queues as a mail draft, with the Airwallex hosted pay link included where one exists. Use when the user asks \"who owes me money,\" mentions overdue invoices, or wants to follow up on unpaid invoices.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2736,"sizeBytes":11840},{"name":"docusign-routing.md","path":"small-business/skills/job-post-builder/reference/docusign-routing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/docusign-routing.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fdocusign-routing.md -->","isInternal":false,"tokens":666,"sizeBytes":2786},{"name":"worked-example.md","path":"small-business/skills/job-post-builder/reference/examples/worked-example.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/examples/worked-example.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexamples%2Fworked-example.md -->","isInternal":false,"tokens":1147,"sizeBytes":4661},{"name":"existing-document-merge.md","path":"small-business/skills/job-post-builder/reference/existing-document-merge.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/existing-document-merge.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fexisting-document-merge.md -->","isInternal":false,"tokens":440,"sizeBytes":1961},{"name":"gotchas.md","path":"small-business/skills/job-post-builder/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":642,"sizeBytes":2763},{"name":"interview-guide-structure.md","path":"small-business/skills/job-post-builder/reference/interview-guide-structure.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/interview-guide-structure.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Finterview-guide-structure.md -->","isInternal":false,"tokens":864,"sizeBytes":3917},{"name":"job-post-structure.md","path":"small-business/skills/job-post-builder/reference/job-post-structure.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/job-post-structure.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Fjob-post-structure.md -->","isInternal":false,"tokens":604,"sizeBytes":2532},{"name":"offer-letter-template.md","path":"small-business/skills/job-post-builder/reference/offer-letter-template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/offer-letter-template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Foffer-letter-template.md -->","isInternal":false,"tokens":1266,"sizeBytes":5219},{"name":"role-intake.md","path":"small-business/skills/job-post-builder/reference/role-intake.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/reference/role-intake.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2Freference%2Frole-intake.md -->","isInternal":false,"tokens":646,"sizeBytes":2960},{"name":"SKILL.md","path":"small-business/skills/job-post-builder/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/job-post-builder/SKILL.md","title":"job-post-builder","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fjob-post-builder%2FSKILL.md -->","frontmatter":{"name":"job-post-builder","description":"Builds end-to-end hiring packets — job post, structured interview guide with scoring rubric, and offer letter template — from a hiring brief. Triggers on: \"help me hire\", \"we're hiring for\", \"write a job post\", \"job description\", \"JD\", \"open role\", \"create a job ad\", \"interview questions\", \"scoring rubric\", \"draft an offer letter\", \"send an offer\", \"make a hiring packet\", or any request to recruit for a position. When in doubt, trigger — covers the full hiring workflow from job post through DocuSign envelope creation via browser. Does NOT screen or rank applicants.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2437,"sizeBytes":10532},{"name":"gotchas.md","path":"small-business/skills/lead-finder/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":986,"sizeBytes":4311},{"name":"icp_method.md","path":"small-business/skills/lead-finder/reference/icp_method.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/reference/icp_method.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Ficp_method.md -->","isInternal":false,"tokens":817,"sizeBytes":3766},{"name":"output_template.md","path":"small-business/skills/lead-finder/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":946,"sizeBytes":3966},{"name":"scoring.md","path":"small-business/skills/lead-finder/reference/scoring.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/reference/scoring.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fscoring.md -->","isInternal":false,"tokens":860,"sizeBytes":3688},{"name":"sourcing.md","path":"small-business/skills/lead-finder/reference/sourcing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/reference/sourcing.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2Freference%2Fsourcing.md -->","isInternal":false,"tokens":758,"sizeBytes":3823},{"name":"SKILL.md","path":"small-business/skills/lead-finder/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-finder/SKILL.md","title":"lead-finder","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-finder%2FSKILL.md -->","frontmatter":{"name":"lead-finder","description":"Builds a ranked list of prospects worth contacting. Works out the owner's ideal customer profile from the customers they already have, finds look-alike companies and the right contact at each, enriches them with firmographics and buying signals, scores them, and delivers the list as an XLSX, with an offer to also create the records in the CRM. Runs on Apollo when connected and falls back to web research plus an uploaded customer list when it isn't. Use this whenever the owner wants new prospects, a target list, or help finding customers — including phrasings like \"who should I be calling,\" \"find me more customers like my best ones,\" \"build me a prospect list,\" \"I need leads,\" \"who else looks like Acme,\" or \"help me find companies in this area that need what we do.\" Reach for it even when the owner describes the customer they want rather than asking for a list.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1974,"sizeBytes":8919},{"name":"happy-path-triage.md","path":"small-business/skills/lead-triage/reference/examples/happy-path-triage.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-triage/reference/examples/happy-path-triage.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fexamples%2Fhappy-path-triage.md -->","isInternal":false,"tokens":483,"sizeBytes":1897},{"name":"gotchas.md","path":"small-business/skills/lead-triage/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-triage/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":496,"sizeBytes":2019},{"name":"hubspot-scoring.md","path":"small-business/skills/lead-triage/reference/hubspot-scoring.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-triage/reference/hubspot-scoring.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2Freference%2Fhubspot-scoring.md -->","isInternal":false,"tokens":1767,"sizeBytes":7092},{"name":"SKILL.md","path":"small-business/skills/lead-triage/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/lead-triage/SKILL.md","title":"lead-triage","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Flead-triage%2FSKILL.md -->","frontmatter":{"name":"lead-triage","version":"0.1.1","description":"Scores inbound HubSpot leads by engagement signals, company fit, and urgency markers, ranks the ones worth a call today with talking points, drafts the follow-ups, and proposes calendar times for the owner to book. Use when the owner asks to prioritize, score, or rank leads, asks \"who should I call first,\" or asks about their pipeline. An ask that wants the ranked leads turned into a call list with time blocked on the calendar routes to /call-list, which runs this skill first and then books the time.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1767,"sizeBytes":7739},{"name":"SKILL.md","path":"small-business/skills/marketing-monday/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/marketing-monday/SKILL.md","title":"marketing-monday","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmarketing-monday%2FSKILL.md -->","frontmatter":{"name":"marketing-monday","description":"Delivers the weekly growth briefing as one merged read — whether the growth engine is working, what customers are saying in public and private, what competitors actually changed, and the three growth actions worth taking this week. The growth twin of the Monday brief, chaining growth-pulse and review-reputation and adding a web-native competitor scan, merged into a single page rather than three reports. Offers to run on a weekly cadence once, and sets it up on a yes. Use this whenever the owner wants a recurring or one-off growth check, including phrasings like \"how's marketing doing,\" \"growth check for the week,\" \"give me my Monday growth brief,\" \"what should I be doing about growth this week,\" \"are we winning or losing out there,\" or \"set up a weekly marketing update.\" Reach for it when the owner asks how the business is growing rather than how it is paying its bills.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2172,"sizeBytes":10082},{"name":"SKILL.md","path":"small-business/skills/monday-brief/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/monday-brief/SKILL.md","title":"monday-brief","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonday-brief%2FSKILL.md -->","frontmatter":{"name":"monday-brief","description":"Runs the owner's Monday morning briefing as a two-link chain — business-pulse for the cross-connector snapshot of cash, sales, and pipeline, and report-builder for any saved KPI reports the owner has already defined — then reads the week ahead straight from Calendar and mail and merges all three parts into a single one-page Monday document, delivered per the owner's stored output preference. Requires no connectors and degrades gracefully, building from whatever of the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books), Calendar, DocuSign, Expensify, Gmail or M365, HubSpot, PayPal, Ramp, RingEx Chat, Shopify, Slack, Stripe, and TikTok Ads is connected, or from pasted and uploaded data when none are. Trigger on \"Monday brief,\" \"start my week,\" \"what do I need to know this week,\" \"weekly briefing,\" \"catch me up before Monday,\" or when the owner schedules a recurring start-of-week update.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2015,"sizeBytes":8856},{"name":"close-packet-format.md","path":"small-business/skills/month-end-prep/reference/close-packet-format.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/close-packet-format.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fclose-packet-format.md -->","isInternal":false,"tokens":1085,"sizeBytes":4618},{"name":"pl-narrative.md","path":"small-business/skills/month-end-prep/reference/examples/pl-narrative.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/examples/pl-narrative.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fexamples%2Fpl-narrative.md -->","isInternal":false,"tokens":540,"sizeBytes":2089},{"name":"gotchas.md","path":"small-business/skills/month-end-prep/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":949,"sizeBytes":4004},{"name":"paypal-settlements.md","path":"small-business/skills/month-end-prep/reference/paypal-settlements.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/paypal-settlements.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fpaypal-settlements.md -->","isInternal":false,"tokens":878,"sizeBytes":3822},{"name":"quickbooks-reconcile.md","path":"small-business/skills/month-end-prep/reference/quickbooks-reconcile.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/quickbooks-reconcile.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fquickbooks-reconcile.md -->","isInternal":false,"tokens":653,"sizeBytes":2821},{"name":"v2_sources.md","path":"small-business/skills/month-end-prep/reference/v2_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/v2_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fv2_sources.md -->","isInternal":false,"tokens":1468,"sizeBytes":6207},{"name":"xero-reconcile.md","path":"small-business/skills/month-end-prep/reference/xero-reconcile.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/xero-reconcile.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fxero-reconcile.md -->","isInternal":false,"tokens":1716,"sizeBytes":7259},{"name":"zoho-books-reconcile.md","path":"small-business/skills/month-end-prep/reference/zoho-books-reconcile.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/reference/zoho-books-reconcile.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2Freference%2Fzoho-books-reconcile.md -->","isInternal":false,"tokens":1659,"sizeBytes":6846},{"name":"SKILL.md","path":"small-business/skills/month-end-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/month-end-prep/SKILL.md","title":"month-end-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fmonth-end-prep%2FSKILL.md -->","frontmatter":{"name":"month-end-prep","description":"Reconciles the accounting ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) against PayPal, Shopify, Square, and Stripe settlements, flags transactions that need attention, suspicious duplicates, and missing receipts, then writes a plain-English P&L narrative and exports a close packet (xlsx + one-page PDF). This is the first link of the /close-month command; a request to close the month or the books routes there, and the command runs this skill before refreshing the forecast and distributing the packet. Use this skill directly only when the owner wants the reconciliation alone, with no forecast refresh and no distribution: \"just reconcile, no packet,\" \"what's missing from the books,\" \"flag the duplicates and missing receipts,\" or \"write the P&L narrative for this month.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":4426,"sizeBytes":19025},{"name":"gotchas.md","path":"small-business/skills/outreach-composer/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/outreach-composer/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1374,"sizeBytes":5873},{"name":"output_template.md","path":"small-business/skills/outreach-composer/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/outreach-composer/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":1014,"sizeBytes":4127},{"name":"sequence_patterns.md","path":"small-business/skills/outreach-composer/reference/sequence_patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/outreach-composer/reference/sequence_patterns.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fsequence_patterns.md -->","isInternal":false,"tokens":1061,"sizeBytes":4373},{"name":"slop_test.md","path":"small-business/skills/outreach-composer/reference/slop_test.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/outreach-composer/reference/slop_test.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2Freference%2Fslop_test.md -->","isInternal":false,"tokens":1274,"sizeBytes":5493},{"name":"SKILL.md","path":"small-business/skills/outreach-composer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/outreach-composer/SKILL.md","title":"outreach-composer","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Foutreach-composer%2FSKILL.md -->","frontmatter":{"name":"outreach-composer","description":"Writes prospect outreach and follow-up sequences that sound like the owner wrote them, not like an AI did. Learns a voice profile from the owner's own sent mail, grounds every message in something specific about that prospect, builds the follow-up sequence behind it, queues every send for approval, and logs each touch to the CRM. Runs draft-only when no mail connector is available, so the copy can be pasted anywhere. Use this whenever the owner needs to reach out to prospects or customers — including phrasings like \"write this cold email,\" \"draft a follow-up,\" \"reach out to these leads,\" \"what do I say to them,\" \"I need a sequence for this list,\" \"nudge the people who didn't reply,\" or \"write it but don't make it sound like a robot.\" Reach for it whenever outreach copy is the deliverable, even for a single message.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2301,"sizeBytes":10459},{"name":"SKILL.md","path":"small-business/skills/pay-the-bills/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/pay-the-bills/SKILL.md","title":"pay-the-bills","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpay-the-bills%2FSKILL.md -->","frontmatter":{"name":"pay-the-bills","description":"Works the bill pile from the AP inbox all the way to a staged payment run — reads and codes every bill, then checks the cash position before a dollar is committed, then stages the run for one-click approval and keeps the books tidy for close. Coding and paying are two separate decisions with two separate approvals, and the cash check sits between them on purpose. Runs on the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) and a mail connector (Gmail or M365), deepens with Expensify and Ramp, and works from uploaded PDFs or phone photos with the run sheet exported for manual entry. Use it when the owner says \"pay the bills,\" \"the bills are piling up,\" \"what do I owe,\" \"who needs to get paid this week,\" \"can I afford to pay these,\" or forwards a stack of vendor invoices.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1982,"sizeBytes":8711},{"name":"anomaly_rules.md","path":"small-business/skills/payroll-prep/reference/anomaly_rules.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/reference/anomaly_rules.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fanomaly_rules.md -->","isInternal":false,"tokens":1237,"sizeBytes":5213},{"name":"books_sync.md","path":"small-business/skills/payroll-prep/reference/books_sync.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/reference/books_sync.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fbooks_sync.md -->","isInternal":false,"tokens":707,"sizeBytes":3224},{"name":"gotchas.md","path":"small-business/skills/payroll-prep/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1110,"sizeBytes":4699},{"name":"run_sheet_format.md","path":"small-business/skills/payroll-prep/reference/run_sheet_format.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/reference/run_sheet_format.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Frun_sheet_format.md -->","isInternal":false,"tokens":783,"sizeBytes":3178},{"name":"timesheet_intake.md","path":"small-business/skills/payroll-prep/reference/timesheet_intake.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/reference/timesheet_intake.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2Freference%2Ftimesheet_intake.md -->","isInternal":false,"tokens":1497,"sizeBytes":6304},{"name":"SKILL.md","path":"small-business/skills/payroll-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/payroll-prep/SKILL.md","title":"payroll-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fpayroll-prep%2FSKILL.md -->","frontmatter":{"name":"payroll-prep","description":"Gets payroll ready to run without anyone getting shorted: pulls timesheets from Gusto, QuickBooks Payroll, or an uploaded spreadsheet, totals regular, overtime, and PTO hours by person, flags every anomaly it finds — missed punches, overtime spikes, rate changes, mid-period hires and terminations, hours off the schedule — and stages the run for the owner to approve line by line before a dollar moves. Anomalies are always raised, never quietly corrected. Once the owner runs it, the journal posts to the ledger or goes to the bookkeeper. Reach for this whenever payroll comes up at all — \"run payroll,\" \"payroll is due,\" \"check the timecards,\" \"did everyone clock out,\" \"how many hours did the crew put in,\" \"why is payroll so high this week,\" \"I need to pay the guys Friday\" — and use it after cash-flow-snapshot when the owner is worried about whether payroll clears.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3659,"sizeBytes":16290},{"name":"SKILL.md","path":"small-business/skills/plan-payroll/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/plan-payroll/SKILL.md","title":"plan-payroll","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fplan-payroll%2FSKILL.md -->","frontmatter":{"name":"plan-payroll","description":"Runs the payroll-confidence chain end to end — forecasts cash across the payroll window with cash-flow-snapshot, ranks and drafts overdue-invoice reminders with invoice-chase to close any gap, then assembles timesheets, flags every anomaly, and stages the run with payroll-prep. On Gusto the run is staged for the owner to submit; on QuickBooks Payroll, or with no payroll system, the last step is a validated run sheet the owner keys in. This chain never presses the payroll button. Builds on the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books), with Gmail or M365, PayPal, Square, Stripe, and either Gusto or QuickBooks Payroll adding detail, and falls back to CSV and timesheet uploads. Use it whenever payroll is the worry, including \"can I make payroll,\" \"payroll is due Friday,\" \"plan payroll,\" \"will I have enough to pay the crew,\" or \"I need to run payroll but money is tight.\" Accepts optional horizon and payroll-date arguments.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2014,"sizeBytes":8688},{"name":"discovery_extraction.md","path":"small-business/skills/proposal-builder/reference/discovery_extraction.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/reference/discovery_extraction.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fdiscovery_extraction.md -->","isInternal":false,"tokens":1358,"sizeBytes":6214},{"name":"gotchas.md","path":"small-business/skills/proposal-builder/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1188,"sizeBytes":5311},{"name":"output_template.md","path":"small-business/skills/proposal-builder/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":999,"sizeBytes":4033},{"name":"pricing_method.md","path":"small-business/skills/proposal-builder/reference/pricing_method.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/reference/pricing_method.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fpricing_method.md -->","isInternal":false,"tokens":1143,"sizeBytes":5222},{"name":"proposal_structure.md","path":"small-business/skills/proposal-builder/reference/proposal_structure.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/reference/proposal_structure.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2Freference%2Fproposal_structure.md -->","isInternal":false,"tokens":1007,"sizeBytes":4760},{"name":"SKILL.md","path":"small-business/skills/proposal-builder/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/proposal-builder/SKILL.md","title":"proposal-builder","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fproposal-builder%2FSKILL.md -->","frontmatter":{"name":"proposal-builder","description":"Turns whatever came out of a discovery conversation — a call transcript, a voice memo, jobsite photos, an RFP document, a set of drawings, or scrappy notes — into a branded, costed proposal, estimate, or statement of work built on the owner's own templates and historical pricing. Routes it for signature and triggers the deposit invoice once it's accepted. Works entirely from uploaded files when no connector is available, producing DOCX and PDF the owner can send themselves. Use this whenever a quote, bid, estimate, proposal, or SOW is the deliverable — including phrasings like \"write this up for them,\" \"put together a quote,\" \"I need to bid this job,\" \"turn my notes into a proposal,\" \"respond to this RFP,\" or \"price this out.\" Reach for it when the owner describes a job they just looked at, even without saying the word quote.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3339,"sizeBytes":15265},{"name":"SKILL.md","path":"small-business/skills/reactivate/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/reactivate/SKILL.md","title":"reactivate","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freactivate%2FSKILL.md -->","frontmatter":{"name":"reactivate","description":"Wins back customers who have quietly stopped buying — finds the ones whose gap has stretched past their own normal rhythm or who are showing churn signals, ranks them by what the relationship was worth, drafts a win-back message per customer in the owner's voice, and sends and logs only what the owner approves. Chains review-reputation, outreach-composer, and crm-autopilot, and keeps the rule that the first touch acknowledges the gap without pitching. Use this whenever the owner is worried about customers drifting away, including phrasings like \"who hasn't ordered in a while,\" \"win back my old customers,\" \"which customers have gone quiet,\" \"we lost some regulars,\" \"reach out to the people who stopped calling,\" or \"how do I get them back.\" Reach for it when the owner names a customer they have not heard from, as readily as for a full win-back campaign.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2476,"sizeBytes":11342},{"name":"data_sources.md","path":"small-business/skills/report-builder/reference/data_sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/reference/data_sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fdata_sources.md -->","isInternal":false,"tokens":2258,"sizeBytes":10126},{"name":"gotchas.md","path":"small-business/skills/report-builder/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":948,"sizeBytes":4037},{"name":"output_template.md","path":"small-business/skills/report-builder/reference/output_template.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/reference/output_template.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Foutput_template.md -->","isInternal":false,"tokens":818,"sizeBytes":3414},{"name":"report_spec.md","path":"small-business/skills/report-builder/reference/report_spec.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/reference/report_spec.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Freport_spec.md -->","isInternal":false,"tokens":895,"sizeBytes":3896},{"name":"saved_reports.md","path":"small-business/skills/report-builder/reference/saved_reports.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/reference/saved_reports.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2Freference%2Fsaved_reports.md -->","isInternal":false,"tokens":466,"sizeBytes":1993},{"name":"SKILL.md","path":"small-business/skills/report-builder/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-builder/SKILL.md","title":"report-builder","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-builder%2FSKILL.md -->","frontmatter":{"name":"report-builder","description":"Turns a plain-English description of a recurring report into a real, repeatable report — defines the metrics, pulls them from whatever data sources are connected, delivers a chat summary plus an XLSX workbook, and saves the definition so the same report reruns on demand or on a schedule. Handles anything from \"sales by location versus last year\" to AR aging to labor as a percentage of revenue. Works fully from an uploaded CSV or XLSX when no connector is available. Use this whenever the owner asks for a report, dashboard, KPI pack, metrics summary, or recurring numbers — including phrasings like \"can you track this every week,\" \"I need to see these numbers monthly,\" \"build me a report on,\" \"same report as last time,\" or \"put together a KPI dashboard.\" Reach for it even when the owner names the metrics without using the word report.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2312,"sizeBytes":10269},{"name":"SKILL.md","path":"small-business/skills/report-pack/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/report-pack/SKILL.md","title":"report-pack","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freport-pack%2FSKILL.md -->","frontmatter":{"name":"report-pack","description":"Delivers the owner's custom recurring report pack on a set cadence — runs the saved report definition from report-builder, wraps it in a business-pulse snapshot so the numbers have context, and hands over one chat summary plus the workbook. Defined once, then delivered on schedule without being asked again. Runs on any single connected data source, or entirely from an uploaded CSV or XLSX. Use it when the owner asks for their report pack, their weekly or monthly numbers, \"send me the usual report,\" \"run my report pack,\" \"set this up to come every Monday,\" or \"I want these numbers on a schedule.\"","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1395,"sizeBytes":6199},{"name":"SKILL.md","path":"small-business/skills/restock/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/restock/SKILL.md","title":"restock","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Frestock%2FSKILL.md -->","frontmatter":{"name":"restock","description":"Turns what is actually selling into a reorder decision and gets it all the way into the books — computes sales velocity and conservative stockout dates per item, sizes the reorder, drafts the purchase order and the vendor email, and then stages the matching entry so the bill matches against the PO when it arrives. Flags the money sitting still too, so dead stock gets cleared instead of reordered. Runs on Shopify, Square, or an uploaded sales and stock CSV, and deepens with QuickBooks, Gmail or M365, Calendar, and NetSuite. No PO is sent and no vendor is emailed without approval. Use it when the owner says \"what do I need to reorder,\" \"am I going to run out,\" \"restock,\" \"we keep running out of filters,\" \"draft a PO for my supplier,\" or \"how much cash is sitting in the warehouse.\"","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1842,"sizeBytes":8116},{"name":"churn-signals.md","path":"small-business/skills/review-reputation/reference/churn-signals.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/reference/churn-signals.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fchurn-signals.md -->","isInternal":false,"tokens":916,"sizeBytes":4090},{"name":"example-report.md","path":"small-business/skills/review-reputation/reference/examples/example-report.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/reference/examples/example-report.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fexamples%2Fexample-report.md -->","isInternal":false,"tokens":1263,"sizeBytes":4883},{"name":"gotchas.md","path":"small-business/skills/review-reputation/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1285,"sizeBytes":5562},{"name":"response-patterns.md","path":"small-business/skills/review-reputation/reference/response-patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/reference/response-patterns.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fresponse-patterns.md -->","isInternal":false,"tokens":960,"sizeBytes":4051},{"name":"sources.md","path":"small-business/skills/review-reputation/reference/sources.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/reference/sources.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2Freference%2Fsources.md -->","isInternal":false,"tokens":1135,"sizeBytes":4910},{"name":"SKILL.md","path":"small-business/skills/review-reputation/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/review-reputation/SKILL.md","title":"review-reputation","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Freview-reputation%2FSKILL.md -->","frontmatter":{"name":"review-reputation","description":"Watches what customers are saying in public and in private, then does something about it. Aggregates Google, Yelp, and Facebook reviews alongside disputes, tickets, and email into themes backed by verbatim quotes; drafts a reply to every review in the owner's own voice for approval; spots customers who have gone quiet or look likely to leave; and drafts win-back offers for the ones worth keeping. With Shopify connected, order and fulfillment patterns become a sentiment signal too. Works from pasted or exported reviews when nothing is connected. Use this whenever the owner asks about reviews, ratings, reputation, complaints, or repeat business — including \"what are people saying about us,\" \"did we get any bad reviews,\" \"how do I respond to this one-star,\" \"our rating dropped,\" \"which customers have gone quiet,\" \"who hasn't ordered in a while,\" \"how do I win them back,\" or \"are customers happy.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2297,"sizeBytes":10672},{"name":"ai_visibility.md","path":"small-business/skills/seo-ai-visibility/reference/ai_visibility.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/reference/ai_visibility.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fai_visibility.md -->","isInternal":false,"tokens":1662,"sizeBytes":7112},{"name":"audit_checklist.md","path":"small-business/skills/seo-ai-visibility/reference/audit_checklist.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/reference/audit_checklist.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Faudit_checklist.md -->","isInternal":false,"tokens":1222,"sizeBytes":5536},{"name":"catalog_refresh.md","path":"small-business/skills/seo-ai-visibility/reference/catalog_refresh.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/reference/catalog_refresh.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcatalog_refresh.md -->","isInternal":false,"tokens":1301,"sizeBytes":5675},{"name":"content_rewrite.md","path":"small-business/skills/seo-ai-visibility/reference/content_rewrite.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/reference/content_rewrite.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fcontent_rewrite.md -->","isInternal":false,"tokens":1113,"sizeBytes":4879},{"name":"gotchas.md","path":"small-business/skills/seo-ai-visibility/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1471,"sizeBytes":6363},{"name":"SKILL.md","path":"small-business/skills/seo-ai-visibility/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/seo-ai-visibility/SKILL.md","title":"seo-ai-visibility","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fseo-ai-visibility%2FSKILL.md -->","frontmatter":{"name":"seo-ai-visibility","description":"Audits and fixes both halves of being found — classic search and AI answers. Search side: rankings, site structure, page speed, titles and descriptions, and content that answers what customers search for. AI side: whether assistant crawlers can reach the site, pages render without JavaScript, an llms.txt file, schema.org data, and presence in the directories assistants read. For online stores it also runs a bulk catalog cleanup, rewriting product titles, descriptions, alt text, and SEO fields in approved batches. Works on any public website with no connector. Use this whenever the owner talks about being found online, including \"nobody finds us on Google,\" \"how do I show up in ChatGPT,\" \"make my website AI friendly,\" \"SEO audit,\" \"GEO,\" \"AEO,\" \"AI search visibility,\" \"my competitor ranks above me,\" \"fix my product listings,\" or \"I asked an AI about my industry and we weren't in the answer.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2433,"sizeBytes":11074},{"name":"happy-path.md","path":"small-business/skills/smb-onboard/reference/examples/happy-path.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-onboard/reference/examples/happy-path.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fexamples%2Fhappy-path.md -->","isInternal":false,"tokens":1925,"sizeBytes":8193},{"name":"gotchas.md","path":"small-business/skills/smb-onboard/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-onboard/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1209,"sizeBytes":5248},{"name":"onboard-checklist.md","path":"small-business/skills/smb-onboard/reference/onboard-checklist.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-onboard/reference/onboard-checklist.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fonboard-checklist.md -->","isInternal":false,"tokens":2234,"sizeBytes":9662},{"name":"website-research.md","path":"small-business/skills/smb-onboard/reference/website-research.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-onboard/reference/website-research.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2Freference%2Fwebsite-research.md -->","isInternal":false,"tokens":814,"sizeBytes":3615},{"name":"SKILL.md","path":"small-business/skills/smb-onboard/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-onboard/SKILL.md","title":"smb-onboard","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-onboard%2FSKILL.md -->","frontmatter":{"name":"smb-onboard","description":"Claude as the trainer. Walks an SMB owner through connecting their first two tools, runs one recipe to prove immediate value, interviews them about their business (industry, size, top three headaches), stores that context persistently so every other skill benefits, and sets a weekly check-in cadence. Use when the owner is getting started or says any of: \"set me up,\" \"setup,\" \"help me get set up,\" \"get started,\" \"help me get started,\" \"get me started,\" \"what can you do,\" \"I'm new to this,\" or is in their first session.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2364,"sizeBytes":10760},{"name":"connector-map.md","path":"small-business/skills/smb-router/reference/connector-map.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-router/reference/connector-map.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2Freference%2Fconnector-map.md -->","isInternal":false,"tokens":2664,"sizeBytes":10601},{"name":"SKILL.md","path":"small-business/skills/smb-router/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/smb-router/SKILL.md","title":"smb-router","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsmb-router%2FSKILL.md -->","frontmatter":{"name":"smb-router","description":"The front door to the Small Business plugin. Listens to what the owner needs right now — vague or specific — and routes them to the best skill or slash command for the moment. Also serves as a guide: explains what's available, suggests what to try next, and adapts recommendations based on stored business context. Trigger whenever the owner asks \"what can you do,\" \"help me with my business,\" \"what should I focus on,\" \"I don't know where to start,\" or any open-ended business request that doesn't clearly match a single skill.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3772,"sizeBytes":14987},{"name":"calendar.md","path":"small-business/skills/social-content-engine/reference/calendar.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/calendar.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcalendar.md -->","isInternal":false,"tokens":1162,"sizeBytes":4748},{"name":"canva-api.md","path":"small-business/skills/social-content-engine/reference/canva-api.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/canva-api.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fcanva-api.md -->","isInternal":false,"tokens":1810,"sizeBytes":6763},{"name":"okonkwo-campaign.md","path":"small-business/skills/social-content-engine/reference/examples/okonkwo-campaign.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/examples/okonkwo-campaign.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fexamples%2Fokonkwo-campaign.md -->","isInternal":false,"tokens":1544,"sizeBytes":6046},{"name":"gotchas.md","path":"small-business/skills/social-content-engine/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":3555,"sizeBytes":15019},{"name":"publishing.md","path":"small-business/skills/social-content-engine/reference/publishing.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/publishing.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fpublishing.md -->","isInternal":false,"tokens":1221,"sizeBytes":4662},{"name":"shopify-assets.md","path":"small-business/skills/social-content-engine/reference/shopify-assets.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/reference/shopify-assets.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2Freference%2Fshopify-assets.md -->","isInternal":false,"tokens":693,"sizeBytes":3005},{"name":"SKILL.md","path":"small-business/skills/social-content-engine/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/social-content-engine/SKILL.md","title":"social-content-engine","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fsocial-content-engine%2FSKILL.md -->","frontmatter":{"name":"social-content-engine","description":"Runs the owner's content operation as a standing thing rather than a one-off: keeps a rolling posting calendar, learns the owner's voice, generates on-brand Canva graphics, writes captions that sound like them, repurposes one asset into every channel format, and stages posts for approval instead of publishing on its own. Pulls product photos and prices from Shopify when connected; with no connectors, drafts the calendar and asset briefs for manual posting. Use this whenever the owner talks about posting, content, or social — including \"I need to post more,\" \"we've gone quiet on Instagram,\" \"what should we post this month,\" \"make the content,\" \"give me a month of posts,\" \"write this in my voice,\" \"repurpose this,\" or \"set up our content calendar.\" Reach for it for a single post as readily as for a full quarter. One handoff: a finished, approved campaign brief goes to canva-creator; this skill owns the standing operation.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":2935,"sizeBytes":13400},{"name":"approval.md","path":"small-business/skills/speed-to-lead/reference/approval.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/speed-to-lead/reference/approval.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fapproval.md -->","isInternal":false,"tokens":853,"sizeBytes":3805},{"name":"gotchas.md","path":"small-business/skills/speed-to-lead/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/speed-to-lead/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":1137,"sizeBytes":5086},{"name":"qualification.md","path":"small-business/skills/speed-to-lead/reference/qualification.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/speed-to-lead/reference/qualification.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fqualification.md -->","isInternal":false,"tokens":1249,"sizeBytes":5437},{"name":"response_patterns.md","path":"small-business/skills/speed-to-lead/reference/response_patterns.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/speed-to-lead/reference/response_patterns.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2Freference%2Fresponse_patterns.md -->","isInternal":false,"tokens":1409,"sizeBytes":5773},{"name":"SKILL.md","path":"small-business/skills/speed-to-lead/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/speed-to-lead/SKILL.md","title":"speed-to-lead","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fspeed-to-lead%2FSKILL.md -->","frontmatter":{"name":"speed-to-lead","description":"Makes sure no inbound lead goes unanswered. Watches web forms, the shared inbox, and the CRM for new inquiries, qualifies each one against the owner's criteria, drafts a reply in the owner's voice with real meeting times for the owner to approve and send, routes anything hot to a human right away, and logs the whole thing to the CRM. Never sends on its own. Built to run on a schedule so overnight inquiries are drafted and sorted by morning, and works from forwarded or pasted inquiries when no connector is available. Use this whenever the owner is worried about inbound leads or response time — including phrasings like \"leads are going cold,\" \"did anyone answer that inquiry,\" \"I keep missing form submissions,\" \"nothing falls through the cracks,\" \"handle my inbound,\" \"respond to this lead,\" or \"we lose people because nobody gets back fast enough.\" Reach for it for a single unanswered inquiry as readily as for a standing setup.\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3031,"sizeBytes":13729},{"name":"SKILL.md","path":"small-business/skills/tax-prep/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-prep/SKILL.md","title":"tax-prep","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-prep%2FSKILL.md -->","frontmatter":{"name":"tax-prep","description":"Prepares tax materials as a two-link chain — month-end-prep confirms the books are closed and reconciled first, then tax-season-organizer calculates the quarterly estimated payment or builds the year-end 1099-NEC list and accountant packet from those closed numbers. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); uses Gusto, PayPal, and Stripe when connected, else CSV upload. US federal tax math; a non-US business gets the closed-books packet. Prep material for a CPA, never tax advice, nothing filed. Trigger on \"quarterly taxes,\" \"estimated tax payment,\" \"how much should I set aside,\" \"1099s,\" \"1099-NEC,\" \"W-9s,\" \"year-end tax prep,\" \"get my books ready for my accountant,\" any phrasing that suggests a tax deadline is coming, or a question about net profit or YTD income that sounds like worry about a tax bill. An owner who says the period's books are already closed routes to tax-season-organizer directly.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":1841,"sizeBytes":7938},{"name":"calculation-assumptions.md","path":"small-business/skills/tax-season-organizer/reference/calculation-assumptions.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/calculation-assumptions.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fcalculation-assumptions.md -->","isInternal":false,"tokens":1804,"sizeBytes":7133},{"name":"connector-queries.md","path":"small-business/skills/tax-season-organizer/reference/connector-queries.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/connector-queries.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fconnector-queries.md -->","isInternal":false,"tokens":2836,"sizeBytes":11978},{"name":"quarterly-estimate.md","path":"small-business/skills/tax-season-organizer/reference/examples/quarterly-estimate.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/examples/quarterly-estimate.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fquarterly-estimate.md -->","isInternal":false,"tokens":867,"sizeBytes":2915},{"name":"year-end-1099.md","path":"small-business/skills/tax-season-organizer/reference/examples/year-end-1099.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/examples/year-end-1099.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fexamples%2Fyear-end-1099.md -->","isInternal":false,"tokens":1324,"sizeBytes":4540},{"name":"gotchas.md","path":"small-business/skills/tax-season-organizer/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":842,"sizeBytes":3242},{"name":"output-formats.md","path":"small-business/skills/tax-season-organizer/reference/output-formats.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/reference/output-formats.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2Freference%2Foutput-formats.md -->","isInternal":false,"tokens":754,"sizeBytes":3105},{"name":"SKILL.md","path":"small-business/skills/tax-season-organizer/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/tax-season-organizer/SKILL.md","title":"tax-season-organizer","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Ftax-season-organizer%2FSKILL.md -->","frontmatter":{"name":"tax-season-organizer","description":"Prepares tax-season materials for the owner's accountant, not tax advice. US federal tax; a non-US business gets its closed-books packet instead. Two modes: (1) quarterly estimated tax from YTD net income in the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); (2) year-end 1099 prep, scanning the ledger, PayPal, and Stripe for contractors paid over USD 600 into a 1099-NEC list with missing W-9 flags.\nAny tax request routes first to /tax-prep, which confirms the books are closed and reconciled before running this skill. Use this skill directly only when the owner says the period's books are already closed: \"books are closed, now do the 1099s,\" \"run the quarterly estimate off the closed numbers,\" or \"just the contractor W-9 list.\"\n","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3464,"sizeBytes":14588},{"name":"deny-refund-request.md","path":"small-business/skills/ticket-deflector/reference/examples/deny-refund-request.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ticket-deflector/reference/examples/deny-refund-request.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Fdeny-refund-request.md -->","isInternal":false,"tokens":1015,"sizeBytes":4338},{"name":"respond-refund-request.md","path":"small-business/skills/ticket-deflector/reference/examples/respond-refund-request.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ticket-deflector/reference/examples/respond-refund-request.md","title":"Examples Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fexamples%2Frespond-refund-request.md -->","isInternal":false,"tokens":522,"sizeBytes":1997},{"name":"gotchas.md","path":"small-business/skills/ticket-deflector/reference/gotchas.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ticket-deflector/reference/gotchas.md","title":"Reference Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2Freference%2Fgotchas.md -->","isInternal":false,"tokens":533,"sizeBytes":2382},{"name":"SKILL.md","path":"small-business/skills/ticket-deflector/SKILL.md","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/skills/ticket-deflector/SKILL.md","title":"ticket-deflector","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2Fskills%2Fticket-deflector%2FSKILL.md -->","frontmatter":{"name":"ticket-deflector","description":"Reads a forwarded customer email or ticket, pulls order and refund status from a payments connector (PayPal, Square, or Stripe) or Shopify, account history from the CRM, and open tickets from a support desk (Zoho Desk), drafts a tone-matched reply in the owner's writing voice, and can issue a refund through the payments connector with explicit owner approval. With Shopify connected it also runs a proactive order-triage mode that surfaces orders needing attention — unfulfilled past the promised window, payment problems, pending refunds, stuck shipments — and drafts the next action for each before the customer has to ask. Use when the user says \"draft a response,\" \"answer this customer,\" \"where's my order,\" \"I want a refund,\" \"check my orders,\" or \"anything about to blow up.\"\n","compatibility":"Works from pasted or forwarded text alone. Atlassian, HubSpot, Mail, PayPal, Shopify, Square, Stripe, Zoho Desk all optional and deepen the workflow.","allowed-tools":"Read, WebFetch","allowedTools":["Read,","WebFetch"]},"allowedTools":["Read,","WebFetch"],"isInternal":false,"tokens":3919,"sizeBytes":17790},{"name":"marketplace.json","path":".claude-plugin/marketplace.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/.claude-plugin/marketplace.json","title":"Claude Plugin Marketplace Catalog","category":"marketplace","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=.claude-plugin%2Fmarketplace.json -->","isInternal":false,"tokens":13124,"sizeBytes":50086},{"name":"marketplace.json","path":"partner-built/brand-voice/.claude-plugin/marketplace.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/.claude-plugin/marketplace.json","title":"brand-voice","category":"marketplace","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fmarketplace.json -->","frontmatter":{"name":"brand-voice","owner":{"name":"TribeAI"},"metadata":{"description":"Discover brand materials across enterprise platforms, generate LLM-ready guidelines, and enforce brand voice on AI content","version":"1.0.0","pluginRoot":"."},"plugins":[{"name":"brand-voice","source":".","description":"Discover brand materials across enterprise platforms, generate LLM-ready guidelines, and enforce brand voice on AI content","version":"1.0.0","keywords":["brand-voice","sales","marketing","content-creation","guidelines","discovery","enterprise"]}]},"isInternal":false,"tokens":172,"sizeBytes":652},{"name":"plugin.json","path":"bio-research/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/bio-research/.claude-plugin/plugin.json","title":"bio-research","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=bio-research%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"bio-research","version":"1.2.0","description":"Connect to preclinical research tools and databases (literature search, genomics analysis, target prioritization) to accelerate early-stage life sciences R&D","author":{"name":"Anthropic"}},"isInternal":false,"tokens":72,"sizeBytes":272},{"name":"plugin.json","path":"cowork-plugin-management/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/cowork-plugin-management/.claude-plugin/plugin.json","title":"cowork-plugin-management","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=cowork-plugin-management%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"cowork-plugin-management","version":"0.2.2","description":"Create, customize, and manage plugins tailored to your organization's tools and workflows. Configure MCP servers, adjust plugin behavior, and adapt templates to match how your team works.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":77,"sizeBytes":314},{"name":"plugin.json","path":"customer-support/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/customer-support/.claude-plugin/plugin.json","title":"customer-support","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=customer-support%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"customer-support","version":"1.3.0","description":"Triage tickets, draft responses, escalate issues, and build your knowledge base. Research customer context and turn resolved issues into self-service content.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":69,"sizeBytes":277},{"name":"plugin.json","path":"data/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/data/.claude-plugin/plugin.json","title":"data","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=data%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"data","version":"1.1.0","description":"Write SQL, explore datasets, and generate insights faster. Build visualizations and dashboards, and turn raw data into clear stories for stakeholders.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":68,"sizeBytes":257},{"name":"plugin.json","path":"design/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/design/.claude-plugin/plugin.json","title":"design","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=design%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"design","version":"1.2.0","description":"Accelerate design workflows — critique, design system management, UX writing, accessibility audits, research synthesis, and dev handoff. From exploration to pixel-perfect specs.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":73,"sizeBytes":288},{"name":"plugin.json","path":"engineering/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/engineering/.claude-plugin/plugin.json","title":"engineering","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=engineering%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"engineering","version":"1.2.0","description":"Streamline engineering workflows — standups, code review, architecture decisions, incident response, and technical documentation. Works with your existing tools or standalone.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":69,"sizeBytes":291},{"name":"plugin.json","path":"enterprise-search/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/enterprise-search/.claude-plugin/plugin.json","title":"enterprise-search","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=enterprise-search%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"enterprise-search","version":"1.3.0","description":"Search across all of your company's tools in one place. Find anything across email, chat, documents, and wikis without switching between apps.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":70,"sizeBytes":262},{"name":"plugin.json","path":"finance/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/finance/.claude-plugin/plugin.json","title":"finance","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=finance%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"finance","version":"1.3.0","description":"Streamline finance and accounting workflows, from journal entries and reconciliation to financial statements and variance analysis. Speed up audit prep, month-end close, and keeping your books clean.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":74,"sizeBytes":309},{"name":"plugin.json","path":"human-resources/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/human-resources/.claude-plugin/plugin.json","title":"human-resources","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=human-resources%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"human-resources","version":"1.3.0","description":"Streamline people operations — recruiting, onboarding, performance reviews, compensation analysis, and policy guidance. Maintain compliance and keep your team running smoothly.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":70,"sizeBytes":296},{"name":"plugin.json","path":"legal/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/legal/.claude-plugin/plugin.json","title":"legal","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=legal%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"legal","version":"1.3.0","description":"Speed up contract review, NDA triage, and compliance workflows for in-house legal teams. Draft legal briefs, organize precedent research, and manage institutional knowledge.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":73,"sizeBytes":281},{"name":"plugin.json","path":"marketing/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/marketing/.claude-plugin/plugin.json","title":"marketing","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=marketing%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"marketing","version":"1.2.0","description":"Create content, plan campaigns, and analyze performance across marketing channels. Maintain brand voice consistency, track competitors, and report on what's working.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":68,"sizeBytes":277},{"name":"plugin.json","path":"operations/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/operations/.claude-plugin/plugin.json","title":"operations","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=operations%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"operations","version":"1.3.0","description":"Optimize business operations — vendor management, process documentation, change management, capacity planning, and compliance tracking. Keep your organization running efficiently.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":67,"sizeBytes":294},{"name":"plugin.json","path":"partner-built/apollo/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/apollo/.claude-plugin/plugin.json","title":"apollo","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fapollo%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"apollo","version":"0.1.0","description":"3 pre-built skills that chain multiple Apollo APIs into complete sales workflows — no manual steps, no tab switching. Enrich any contact from a name, email, or LinkedIn URL. Prospect by describing your ICP in plain English and get ranked leads. Find, enrich, and load contacts into a sequence in one shot.","author":{"name":"Apollo.io","url":"https://www.apollo.io/"},"repository":"https://github.com/apolloio/apollo-mcp-plugin","homepage":"https://www.apollo.io/","license":"MIT","keywords":["apollo","sales","prospecting","icp","enrichment","sequences","mcp"]},"isInternal":false,"tokens":184,"sizeBytes":668},{"name":"plugin.json","path":"partner-built/brand-voice/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/brand-voice/.claude-plugin/plugin.json","title":"brand-voice","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fbrand-voice%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"brand-voice","version":"1.1.0","description":"Brand Voice transforms scattered brand materials into enforceable AI guardrails — automatically. It searches across Notion, Google Drive, Confluence, Gong, Slack, and meeting transcripts to distill your strongest brand signals into a single source of truth, then applies them to every piece of AI-generated content. The more your team creates with Claude, the more consistent your brand becomes.","author":{"name":"Tribe AI"},"keywords":["brand-voice","sales","marketing","content-creation","guidelines","discovery","enterprise"]},"isInternal":false,"tokens":148,"sizeBytes":624},{"name":"plugin.json","path":"partner-built/common-room/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/common-room/.claude-plugin/plugin.json","title":"common-room","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fcommon-room%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"common-room","version":"1.0.0","description":"Turn Common Room into your GTM copilot. Research accounts and contacts, prep for calls with attendee profiles and talking points, and draft personalized outreach across email, LinkedIn, and phone. Build targeted prospect lists, generate weekly briefings for every upcoming call, and create strategic account plans — all grounded in real signal data from product usage, engagement and intent signals, so every output reflects what's actually happening in your accounts.","author":{"name":"Common Room"},"keywords":["common-room","sales","gtm","account-research","prospecting","outreach"]},"isInternal":false,"tokens":154,"sizeBytes":680},{"name":"plugin.json","path":"partner-built/slack/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/slack/.claude-plugin/plugin.json","title":"slack-by-salesforce","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fslack%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"slack-by-salesforce","description":"Official Slack MCP server for interactive and collaborative workflows. Surface insights, draft messages, and engage teams directly within Slack from Claude Cowork.","version":"1.0.0","author":{"name":"Salesforce","url":"https://slack.com"},"homepage":"https://github.com/slackapi/slack-mcp-plugin","license":"MIT"},"isInternal":false,"tokens":105,"sizeBytes":400},{"name":"plugin.json","path":"partner-built/zoom-plugin/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/partner-built/zoom-plugin/.claude-plugin/plugin.json","title":"zoom-plugin","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=partner-built%2Fzoom-plugin%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"zoom-plugin","description":"Claude plugin for planning, building, and debugging Zoom integrations across REST APIs, SDKs, webhooks, bots, and MCP workflows","version":"1.1.0","homepage":"https://developers.zoom.us/","repository":"https://github.com/zoom/zoom-plugin","license":"MIT","keywords":["zoom","claude-plugin","rest-api","meeting-sdk","video-sdk","webhooks","oauth","mcp"],"author":{"name":"Zoom","url":"https://github.com/zoom/zoom-plugin"}},"isInternal":false,"tokens":163,"sizeBytes":551},{"name":"plugin.json","path":"pdf-viewer/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/pdf-viewer/.claude-plugin/plugin.json","title":"pdf-viewer","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=pdf-viewer%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"pdf-viewer","version":"0.2.0","description":"View, annotate, and sign PDFs in a live interactive viewer. Mark up contracts, fill forms with visual feedback, stamp approvals, and place signatures — then download the annotated copy.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":79,"sizeBytes":300},{"name":"plugin.json","path":"product-management/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/product-management/.claude-plugin/plugin.json","title":"product-management","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=product-management%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"product-management","version":"1.2.0","description":"Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":67,"sizeBytes":264},{"name":"plugin.json","path":"productivity/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/productivity/.claude-plugin/plugin.json","title":"productivity","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=productivity%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"productivity","version":"1.3.1","description":"Manage tasks, plan your day, and build up memory of important context about your work. Syncs with your calendar, email, and chat to keep everything organized and on track.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":77,"sizeBytes":286},{"name":"plugin.json","path":"sales/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/sales/.claude-plugin/plugin.json","title":"sales","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=sales%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"sales","version":"2.1.0","description":"Sales skills that work with the tools your team already uses - your CRM, email, calendar, chat and call recorder - or with uploaded files. Prep calls, summarize and follow up, research accounts, review deals and pipeline, and write the forecast. When you ask, it can update CRM records, create email drafts or send email, post to chat and book meetings through your connected tools.","author":{"name":"Anthropic"}},"isInternal":false,"tokens":118,"sizeBytes":490},{"name":"plugin.json","path":"small-business/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/HEAD/small-business/.claude-plugin/plugin.json","title":"small-business","category":"plugin-manifest","format":"json","content":"<!-- Skill available on-demand via /api/skills/anthropics/knowledge-work-plugins?path=small-business%2F.claude-plugin%2Fplugin.json -->","frontmatter":{"name":"small-business","displayName":"Small Business","version":"1.35.1","description":"Pre-built small business workflows to help you run and grow your business. Supports a majority of the tools you already use. You approve every step that touches money or customers. Install and then ask Claude to help you get onboarded.","author":{"name":"Anthropic"},"keywords":["all-in-one","automation","finance","growth","hr","marketing","operations","sales","small-business","smb","taxes","workflow","zapier"]},"isInternal":false,"tokens":160,"sizeBytes":607}],"systemPromptSnippet":"<yakaai_skills repo=\"anthropics/knowledge-work-plugins\">\n<!-- File: bio-research/skills/instrument-data-to-allotrope/references/asm_schema_overview.md (Tokens: ~1672 | Category: anthropic-skill) -->\n# ASM Schema Overview\n\nThe Allotrope Simple Model (ASM) is a JSON-based standard for representing laboratory instrument data with semantic consistency.\n\n## Core Concepts\n\n### Structure\nASM uses a hierarchical document structure:\n- **Manifest** - Links to ontologies and schemas\n- **Data** - The actual measurement data organized by technique\n\n### Key Components\n\n```json\n{\n  \"$asm.manifest\": {\n    \"vocabulary\": [\"http://purl.allotrope.org/voc/afo/REC/2023/09/\"],\n    \"contexts\": [\"http://purl.allotrope.org/json-ld/afo-context-REC-2023-09.jsonld\"]\n  },\n  \"<technique>-aggregate-document\": {\n    \"device-system-document\": { ... },\n    \"<technique>-document\": [\n      {\n        \"measurement-aggregate-document\": {\n          \"measurement-document\": [ ... ]\n        }\n      }\n    ]\n  }\n}\n```\n\n## Required Metadata Documents\n\n### data system document\nEvery ASM output MUST include this document with:\n- `ASM file identifier`: Output filename\n- `data system instance identifier`: System ID or \"N/A\"\n- `file name`: Source input filename\n- `UNC path`: Path to source file\n- `ASM converter name`: Parser identifier (e.g., \"allotropy_beckman_coulter_biomek\")\n- `ASM converter version`: Version string\n- `software name`: Instrument software that generated the source file\n\n### device system document\nEvery ASM output MUST include this document with:\n- `equipment serial number`: Main instrument serial\n- `product manufacturer`: Vendor name\n- `device document`: Array of sub-components (probes, pods, etc.)\n  - `device type`: Standardized type (e.g., \"liquid handler probe head\")\n  - `device identifier`: Logical name (e.g., \"Pod1\", not serial number)\n  - `equipment serial number`: Component serial\n  - `product manufacturer`: Component vendor\n\n## Available ASM Techniques\n\nThe official ASM repository includes **65 technique schemas**:\n\n```\nabsorbance, automated-reactors, balance, bga, binding-affinity, bulk-density,\ncell-counting, cell-culture-analyzer, chromatography, code-reader, conductance,\nconductivity, disintegration, dsc, dvs, electronic-lab-notebook,\nelectronic-spectrometry, electrophoresis, flow-cytometry, fluorescence,\nfoam-height, foam-qualification, fplc, ftir, gas-chromatography, gc-ms, gloss,\nhot-tack, impedance, lc-ms, light-obscuration, liquid-chromatography,\nloss-on-drying, luminescence, mass-spectrometry, metabolite-analyzer,\nmulti-analyte-profiling, nephelometry, nmr, optical-imaging, optical-microscopy,\nosmolality, oven-kf, pcr, ph, plate-reader, pressure-monitoring, psd, pumping,\nraman, rheometry, sem, solution-analyzer, specific-rotation, spectrophotometry,\nstirring, surface-area-analysis, tablet-hardness, temperature-monitoring,\ntensile-test, thermogravimetric-analysis, titration, ultraviolet-absorbance,\nx-ray-powder-diffraction\n```\n\nSee: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\n## Common ASM Schemas by Technique\n\nBelow are details for frequently-used techniques:\n\n### Cell Counting\nSchema: `cell-counting/REC/2024/09/cell-counting.schema.json`\n\nKey fields:\n- `viable-cell-density` (cells/mL)\n- `viability` (percentage)\n- `total-cell-count`\n- `dead-cell-count`\n- `cell-diameter-distribution-datum`\n\n### Spectrophotometry (UV-Vis)\nSchema: `spectrophotometry/REC/2024/06/spectrophotometry.schema.json`\n\nKey fields:\n- `absorbance` (dimensionless)\n- `wavelength` (nm)\n- `transmittance` (percentage)\n- `pathlength` (cm)\n- `concentration` with units\n\n### Plate Reader\nSchema: `plate-reader/REC/2024/06/plate-reader.schema.json`\n\nKey fields:\n- `absorbance`\n- `fluorescence`\n- `luminescence`\n- `well-location` (A1-H12)\n- `plate-identifier`\n\n### qPCR\nSchema: `pcr/REC/2024/06/pcr.schema.json`\n\nKey fields:\n- `cycle-threshold-result`\n- `amplification-efficiency`\n- `melt-curve-datum`\n- `target-DNA-description`\n\n### Chromatography\nSchema: `liquid-chromatography/REC/2023/09/liquid-chromatography.schema.json`\n\nKey fields:\n- `retention-time` (minutes)\n- `peak-area`\n- `peak-height`\n- `peak-width`\n- `chromatogram-data-cube`\n\n## Data Patterns\n\n### Value Datum\nSimple value with unit:\n```json\n{\n  \"value\": 1.5,\n  \"unit\": \"mL\"\n}\n```\n\n### Aggregate Datum\nCollection of related values:\n```json\n{\n  \"measurement-aggregate-document\": {\n    \"measurement-document\": [\n      { \"viable-cell-density\": {\"value\": 2.5e6, \"unit\": \"(cell/mL)\"} },\n      { \"viability\": {\"value\": 95.2, \"unit\": \"%\"} }\n    ]\n  }\n}\n```\n\n### Data Cube\nMulti-dimensional array data:\n```json\n{\n  \"cube-structure\": {\n    \"dimensions\": [{\"@componentDatatype\": \"double\", \"concept\": \"elapsed time\"}],\n    \"measures\": [{\"@componentDatatype\": \"double\", \"concept\": \"absorbance\"}]\n  },\n  \"data\": {\n    \"dimensions\": [[0, 1, 2, 3, 4]],\n    \"measures\": [[0.1, 0.2, 0.3, 0.4, 0.5]]\n  }\n}\n```\n\n## Validation\n\nValidate ASM output against official schemas:\n\n```python\nimport json\nimport jsonschema\nfrom urllib.request import urlopen\n\n# Load ASM output\nwith open(\"output.json\") as f:\n    asm = json.load(f)\n\n# Get schema URL from manifest\nschema_url = asm.get(\"$asm.manifest\", {}).get(\"$ref\")\n\n# Validate (simplified - real validation more complex)\n# Note: Full validation requires resolving $ref references\n```\n\n## Schema Repository\n\nOfficial schemas: https://gitlab.com/allotrope-public/asm/-/tree/main/json-schemas/adm\n\nSchema structure:\n```\njson-schemas/adm/\n├── cell-counting/\n│   └── REC/2024/09/\n│       └── cell-counting.schema.json\n├── spectrophotometry/\n│   └── REC/2024/06/\n│       └── spectrophotometry.schema.json\n├── plate-reader/\n│   └── REC/2024/06/\n│       └── plate-reader.schema.json\n└── ...\n```\n\n## Common Issues\n\n### Missing Fields\nNot all instrument exports contain all ASM fields. Report completeness:\n```python\ndef report_completeness(asm, expected_fields):\n    found = set(extract_all_fields(asm))\n    missing = expected_fields - found\n    return len(found) / len(expected_fields) * 100\n```\n\n### Unit Variations\nInstruments may use different unit formats. The allotropy library normalizes these:\n- \"cells/mL\" → \"(cell/mL)\"\n- \"%\" → \"%\"\n- \"nm\" → \"nm\"\n\n### Date Formats\nASM uses ISO 8601: `2024-01-15T10:30:00Z`\n\n<!-- File: bio-research/skills/instrument-data-to-allotrope/references/field_classification_guide.md (Tokens: ~4311 | Category: anthropic-skill) -->\n# Field Classification Guide\n\nThis guide helps classify instrument data fields into the correct ASM document locations. Use this when mapping raw instrument output to Allotrope Simple Model structure.\n\n## ASM Document Hierarchy\n\n```\n<technique>-aggregate-document\n├── device-system-document          # Instrument hardware info\n├── data-system-document            # Software/conversion info\n├── <technique>-document[]          # Per-run/sequence data\n│   ├── analyst                     # Who performed the analysis\n│   ├── measurement-aggregate-document\n│   │   ├── measurement-time\n│   │   ├── measurement-document[]  # Individual measurements\n│   │   │   ├── sample-document\n│   │   │   ├── device-control-aggregate-document\n│   │   │   └── [measurement fields]\n│   │   └── [aggregate-level metadata]\n│   ├── processed-data-aggregate-document\n│   │   └── processed-data-document[]\n│   │       ├── data-processing-document\n│   │       └── [processed results]\n│   └── calculated-data-aggregate-document\n│       └── calculated-data-document[]\n```\n\n## Field Classification Categories\n\n### 1. Device/Instrument Information → `device-system-document`\n\nHardware and firmware details about the physical instrument.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Instrument name | `model-number` | \"Vi-CELL BLU\", \"NanoDrop One\" |\n| Serial number | `equipment-serial-number` | \"VCB-12345\", \"SN001234\" |\n| Manufacturer | `product-manufacturer` | \"Beckman Coulter\", \"Thermo Fisher\" |\n| Firmware version | `firmware-version` | \"v2.1.3\" |\n| Device ID | `device-identifier` | \"Instrument_01\" |\n| Brand | `brand-name` | \"Beckman Coulter\" |\n\n**Rule:** If the value describes the physical instrument and doesn't change between runs, it goes in `device-system-document`.\n\n---\n\n### 2. Software/Data System Information → `data-system-document`\n\nInformation about software used for acquisition, analysis, or conversion.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Software name | `software-name` | \"Chromeleon\", \"Gen5\" |\n| Software version | `software-version` | \"7.3.2\" |\n| File name | `file-name` | \"experiment_001.xlsx\" |\n| File path | `file-identifier` | \"/data/runs/2024-01-15/\" |\n| Database ID | `ASM-converter-name` | \"allotropy v0.1.55\" |\n\n**Rule:** If the value describes software, file metadata, or data provenance, it goes in `data-system-document`.\n\n---\n\n### 3. Sample Information → `sample-document`\n\nMetadata about the biological/chemical sample being analyzed.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Sample ID | `sample-identifier` | \"Sample_A\", \"LIMS-001234\" |\n| Sample name | `written-name` | \"CHO Cell Culture Day 5\" |\n| Sample type/role | `sample-role-type` | \"unknown sample role\", \"control sample role\" |\n| Batch ID | `batch-identifier` | \"Batch-2024-001\" |\n| Description | `description` | \"Protein expression sample\" |\n| Well position | `location-identifier` | \"A1\", \"B3\" |\n\n**Rule:** If the value identifies or describes what was measured (not how), it goes in `sample-document`.\n\n---\n\n### 4. Device Control Settings → `device-control-aggregate-document`\n\nInstrument settings and parameters used during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Injection volume | `sample-volume-setting` | 10 µL |\n| Wavelength | `detector-wavelength-setting` | 254 nm |\n| Temperature | `compartment-temperature` | 37°C |\n| Flow rate | `flow-rate` | 1.0 mL/min |\n| Exposure time | `exposure-duration-setting` | 500 ms |\n| Detector gain | `detector-gain-setting` | 1.5 |\n| Illumination | `illumination-setting` | 80% |\n\n**Rule:** If the value is a configurable instrument parameter that affects measurement, it goes in `device-control-aggregate-document`.\n\n---\n\n### 5. Environmental Conditions → `device-control-document` or technique-specific\n\nAmbient or controlled environmental parameters during measurement.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Ambient temperature | `ambient-temperature` | 22.5°C |\n| Humidity | `ambient-relative-humidity` | 45% |\n| Column temperature | `compartment-temperature` | 30°C |\n| Sample temperature | `sample-temperature` | 4°C |\n| Electrophoresis temp | (technique-specific) | 26.4°C |\n\n**Rule:** Environmental conditions that affect measurement quality go with device control or in technique-specific locations.\n\n---\n\n### 6. Raw Measurement Data → `measurement-document`\n\nDirect instrument readings - the \"ground truth\" data.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Absorbance | `absorbance` | 0.523 AU |\n| Fluorescence | `fluorescence` | 12500 RFU |\n| Cell count | `total-cell-count` | 2.5e6 cells |\n| Peak area | `peak-area` | 1234.5 mAU·min |\n| Retention time | `retention-time` | 5.67 min |\n| Ct value | `cycle-threshold-result` | 24.5 |\n| Concentration (measured) | `mass-concentration` | 1.5 mg/mL |\n\n**Rule:** If the value is a direct instrument reading that wasn't computed from other values in this analysis, it goes in `measurement-document`.\n\n---\n\n### 7. Calculated/Derived Data → `calculated-data-aggregate-document`\n\nValues computed from raw measurements.\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Viability % | `calculated-result` | 95.2% |\n| Concentration (from std curve) | `calculated-result` | 125 ng/µL |\n| Ratio (260/280) | `calculated-result` | 1.89 |\n| Relative quantity | `calculated-result` | 2.5x |\n| % Recovery | `calculated-result` | 98.7% |\n| CV% | `calculated-result` | 2.3% |\n\n**Calculated data document structure:**\n```json\n{\n  \"calculated-data-name\": \"viability\",\n  \"calculated-result\": {\"value\": 95.2, \"unit\": \"%\"},\n  \"calculation-description\": \"viable cells / total cells * 100\"\n}\n```\n\n**Rule:** If the value was computed from other measurements in this analysis, it goes in `calculated-data-aggregate-document`. Include `calculation-description` when possible.\n\n---\n\n### 8. Processed/Analyzed Data → `processed-data-aggregate-document`\n\nResults from data processing algorithms (peak integration, cell classification, etc.).\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Peak list | `peak-list` | Integrated peak results |\n| Cell size distribution | `cell-diameter-distribution` | Histogram data |\n| Baseline-corrected data | (in processed-data-document) | Corrected spectra |\n| Fitted curve | (in processed-data-document) | Standard curve fit |\n\n**Associated `data-processing-document`:**\n```json\n{\n  \"cell-type-processing-method\": \"trypan blue exclusion\",\n  \"cell-density-dilution-factor\": {\"value\": 2, \"unit\": \"(unitless)\"},\n  \"minimum-cell-diameter-setting\": {\"value\": 5, \"unit\": \"µm\"},\n  \"maximum-cell-diameter-setting\": {\"value\": 50, \"unit\": \"µm\"}\n}\n```\n\n**Rule:** If the value results from an algorithm or processing method applied to raw data, it goes in `processed-data-aggregate-document` with its processing parameters in `data-processing-document`.\n\n---\n\n### 9. Timing/Timestamps → Various locations\n\n| Timestamp Type | Location | ASM Field |\n|----------------|----------|-----------|\n| Measurement time | `measurement-document` | `measurement-time` |\n| Run start time | `analysis-sequence-document` | `analysis-sequence-start-time` |\n| Run end time | `analysis-sequence-document` | `analysis-sequence-end-time` |\n| Data export time | `data-system-document` | (custom) |\n\n**Rule:** Use ISO 8601 format: `2024-01-15T10:30:00Z`\n\n---\n\n### 10. Analyst/Operator Information → `<technique>-document`\n\n| Field Type | ASM Field | Examples |\n|------------|-----------|----------|\n| Operator name | `analyst` | \"jsmith\" |\n| Reviewer | (custom or extension) | \"Pending\" |\n\n**Rule:** Analyst goes at the technique-document level, not in individual measurements.\n\n---\n\n## Decision Tree\n\n```\nIs this field about...\n\nTHE INSTRUMENT ITSELF?\n├── Hardware specs → device-system-document\n└── Software/files → data-system-document\n\nTHE SAMPLE?\n└── Sample ID, name, type, batch → sample-document\n\nINSTRUMENT SETTINGS?\n└── Configurable parameters → device-control-aggregate-document\n\nENVIRONMENTAL CONDITIONS?\n└── Temp, humidity, etc. → device-control-document\n\nA DIRECT READING?\n└── Raw instrument output → measurement-document\n\nA COMPUTED VALUE?\n├── From other measurements → calculated-data-document\n└── From processing algorithm → processed-data-document\n\nTIMING?\n├── When measured → measurement-document.measurement-time\n└── When run started/ended → analysis-sequence-document\n\nWHO DID IT?\n└── Operator/analyst → <technique>-document.analyst\n```\n\n## Common Instrument-to-ASM Mappings\n\n> **Note:** These mappings are derived from the [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy/tree/main/src/allotropy/parsers). For authoritative mappings, consult the parser source code for your specific instrument.\n\n### Cell Counter (Vi-CELL BLU)\n*Source: `allotropy/parsers/beckman_vi_cell_blu/vi_cell_blu_structure.py`*\n\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Analysis date/time | `measurement_time` |\n| Analysis by | `analyst` |\n| Viability (%) | `viability` |\n| Viable (x10^6) cells/mL | `viable_cell_density` |\n| Total (x10^6) cells/mL | `total_cell_density` |\n| Cell count | `total_cell_count` |\n| Viable cells | `viable_cell_count` |\n| Average diameter (μm) | `average_total_cell_diameter` |\n| Average viable diameter (μm) | `average_live_cell_diameter` |\n| Average circularity | `average_total_cell_circularity` |\n| Cell type | `cell_type_processing_method` (data-processing) |\n| Dilution | `cell_density_dilution_factor` (data-processing) |\n| Min/Max Diameter | `minimum/maximum_cell_diameter_setting` (data-processing) |\n\n### Spectrophotometer (NanoDrop)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample Name | `sample_identifier` |\n| A260, A280 | `absorbance` (with wavelength) |\n| Concentration | `mass_concentration` |\n| 260/280 ratio | `a260_a280_ratio` |\n| Pathlength | `pathlength` |\n\n### Plate Reader\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Well | `location_identifier` |\n| Sample Type | `sample_role_type` |\n| Absorbance/OD | `absorbance` |\n| Fluorescence | `fluorescence` |\n| Plate ID | `container_identifier` |\n\n### Chromatography (HPLC)\n| Instrument Field | ASM Field |\n|-----------------|-----------|\n| Sample ID | `sample_identifier` |\n| Injection Volume | `injection_volume` |\n| Retention Time | `retention_time` |\n| Peak Area | `peak_area` |\n| Peak Height | `peak_height` |\n| Column Temp | `column_oven_temperature` |\n| Flow Rate | `flow_rate` |\n\n## Unit Handling\n\nOnly use units explicitly present in source data. If a value has no unit specified:\n- Use `(unitless)` as the unit value\n- Do NOT infer units based on domain knowledge\n\n## Calculated Data Traceability\n\nWhen creating calculated values, always link them to their source data using `data-source-aggregate-document`:\n\n```json\n{\n    \"calculated-data-name\": \"DIN\",\n    \"calculated-result\": {\"value\": 5.8, \"unit\": \"(unitless)\"},\n    \"calculated-data-identifier\": \"TEST_ID_147\",\n    \"data-source-aggregate-document\": {\n        \"data-source-document\": [{\n            \"data-source-identifier\": \"TEST_ID_145\",\n            \"data-source-feature\": \"sample\"\n        }]\n    }\n}\n```\n\nThis declares: \"DIN 5.8 was calculated from the sample at `TEST_ID_145`.\"\n\n**Why this matters:**\n- **Audits**: Prove a value came from specific raw data\n- **Debugging**: Trace unexpected results back to their source\n- **Reprocessing**: Know which inputs to re-analyze if algorithms change\n\n**Assign unique IDs to:**\n- Measurements, peaks, regions, and calculated values\n- Use a consistent naming pattern (e.g., `INSTRUMENT_TYPE_TEST_ID_N`)\n\nThis enables bidirectional traversal: trace from calculated → raw, or raw → all derived values.\n\n---\n\n## Nested Document Structure (Critical)\n\nA common mistake is \"flattening\" fields directly onto measurement documents when they should be wrapped in nested structures. This breaks schema compliance and loses semantic context.\n\n### Why Nesting Matters\n\nASM uses nested documents for semantic grouping:\n\n| Document | Purpose | Contains |\n|----------|---------|----------|\n| `sample document` | What was measured | Sample ID, locations, plate identifiers |\n| `device control aggregate document` | How instrument operated | Settings, parameters, techniques |\n| `custom information document` | Vendor-specific fields | Non-standard fields that don't map to ASM |\n\n### Sample Document Fields\n\nThese fields MUST be inside `sample document`, not flattened on measurement:\n\n```json\n// ❌ WRONG - Fields flattened on measurement\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample identifier\": \"Sample_A\",\n  \"location identifier\": \"A1\",\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n\n// ✅ CORRECT - Fields nested in sample document\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"sample document\": {\n    \"sample identifier\": \"Sample_A\",\n    \"location identifier\": \"A1\",\n    \"well plate identifier\": \"96WP001\"\n  },\n  \"absorbance\": {\"value\": 0.5, \"unit\": \"(unitless)\"}\n}\n```\n\n**Fields belonging in sample document:**\n- `sample identifier` - Sample ID/name\n- `written name` - Descriptive sample name\n- `batch identifier` - Batch/lot number\n- `sample role type` - Standard, blank, control, unknown\n- `location identifier` - Well position (A1, B3, etc.)\n- `well plate identifier` - Plate barcode\n- `description` - Sample description\n\n### Device Control Document Fields\n\nInstrument settings MUST be inside `device control aggregate document`:\n\n```json\n// ❌ WRONG - Device settings flattened\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device identifier\": \"Pod1\",\n  \"technique\": \"Custom\",\n  \"volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n\n// ✅ CORRECT - Settings nested in device control\n{\n  \"measurement identifier\": \"TEST_001\",\n  \"device control aggregate document\": {\n    \"device control document\": [{\n      \"device type\": \"liquid handler\",\n      \"device identifier\": \"Pod1\"\n    }]\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Fields belonging in device control:**\n- `device type` - Type of device\n- `device identifier` - Device ID\n- `detector wavelength setting` - Wavelength for detection\n- `compartment temperature` - Temperature setting\n- `sample volume setting` - Volume setting\n- `flow rate` - Flow rate setting\n\n### Custom Information Document\n\nVendor-specific fields that don't map to standard ASM terms go in `custom information document`:\n\n```json\n\"device control document\": [{\n  \"device type\": \"liquid handler\",\n  \"custom information document\": {\n    \"probe\": \"2\",\n    \"pod\": \"Pod1\",\n    \"source labware name\": \"Inducer\",\n    \"destination labware name\": \"GRP1\"\n  }\n}]\n```\n\n### Liquid Handler: Transfer Pairing\n\nFor liquid handlers, a measurement represents a complete transfer (aspirate + dispense), not separate operations:\n\n```json\n// ❌ WRONG - Separate records for aspirate and dispense\n[\n  {\"measurement identifier\": \"OP_001\", \"transfer type\": \"Aspirate\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}},\n  {\"measurement identifier\": \"OP_002\", \"transfer type\": \"Dispense\", \"volume\": {\"value\": 26, \"unit\": \"μL\"}}\n]\n\n// ✅ CORRECT - Single record with source and destination\n{\n  \"measurement identifier\": \"TRANSFER_001\",\n  \"sample document\": {\n    \"source well location identifier\": \"1\",\n    \"destination well location identifier\": \"2\",\n    \"source well plate identifier\": \"96WP001\",\n    \"destination well plate identifier\": \"96WP002\"\n  },\n  \"aspiration volume\": {\"value\": 26, \"unit\": \"μL\"},\n  \"transfer volume\": {\"value\": 26, \"unit\": \"μL\"}\n}\n```\n\n**Pairing logic:**\n1. Match aspirate and dispense operations by probe number\n2. Create one measurement per matched pair\n3. Use `source_*` fields for aspirate location\n4. Use `destination_*` fields for dispense location\n5. Include both `aspiration volume` and `transfer volume`\n\n### Quick Reference: Nesting Decision\n\n```\nIs this field about...\n\nTHE SAMPLE BEING MEASURED?\n├── Sample ID, name, batch → sample document\n├── Well position → sample document.location identifier\n├── Plate barcode → sample document.well plate identifier\n└── Source/destination locations → sample document (with prefixes)\n\nINSTRUMENT SETTINGS?\n├── Standard settings → device control aggregate document\n└── Vendor-specific → custom information document\n\nA MEASUREMENT VALUE?\n└── Direct on measurement document (e.g., absorbance, volume)\n\nTRANSFER OPERATION TYPE?\n└── DON'T use \"transfer type\" - pair into single measurement\n    with source/destination fields instead\n```\n\n### Validation\n\nUse `validate_asm.py` to check for nesting issues:\n```bash\npython scripts/validate_asm.py output.json --reference known_good.json\n```\n\nThe validator checks for:\n- Fields incorrectly flattened on measurements\n- Missing `sample document` wrapper\n- Missing `device control aggregate document` wrapper\n- Missing `custom information document` for vendor fields\n- Liquid handler: separate transfer types instead of paired records\n\n## Sources\n\n- [Allotrope Simple Model Introduction](https://www.allotrope.org/introduction-to-allotrope-simple-model)\n- [Benchling allotropy library](https://github.com/Benchling-Open-Source/allotropy)\n- [Allotrope Foundation ASM Overview](https://www.allotrope.org/asm)\n\n<!-- File: bio-research/skills/instrument-data-to-allotrope/references/flattening_guide.md (Tokens: ~1820 | Category: anthropic-skill) -->\n# Flattening ASM to 2D CSV\n\nConverting hierarchical ASM JSON to flat 2D tables for LIMS import, spreadsheet analysis, or data engineering pipelines.\n\n## Why Flatten?\n\nASM is semantically rich but hierarchical. Many systems need flat tables:\n- LIMS import (Benchling, STARLIMS, LabWare)\n- Excel/CSV analysis\n- Database loading\n- Quick visual inspection\n\n## Flattening Strategy\n\n### Core Principle\nEach **measurement** becomes one **row**. Metadata is repeated per row.\n\n### What's Excluded\nThe flattening intentionally **omits top-level ASM metadata** such as:\n- `$asm.manifest` (model version, schema URIs)\n- Root-level fields outside the technique aggregate document\n\nThis keeps the output focused on experimental data. If you need schema version tracking for compliance or audit purposes, consider storing the original ASM JSON alongside the flattened CSV, or modify the flattening script to include these fields.\n\n### Hierarchy to Columns\n```\nASM Hierarchy                    → Flat Column\n─────────────────────────────────────────────────\ndevice-system-document.\n  device-identifier              → instrument_serial_number\n  model-number                   → instrument_model\n  \nmeasurement-aggregate-document.\n  analyst                        → analyst\n  measurement-time               → measurement_datetime\n  \nmeasurement-document[].\n  sample-identifier              → sample_id\n  viable-cell-density.value      → viable_cell_density\n  viable-cell-density.unit       → viable_cell_density_unit\n  viability.value                → viability_percent\n```\n\n## Column Naming Convention\n\nUse snake_case with descriptive suffixes:\n\n| ASM Field | Flat Column |\n|-----------|-------------|\n| `viable-cell-density` | `viable_cell_density` |\n| `.value` | `_value` (or omit if obvious) |\n| `.unit` | `_unit` |\n| `measurement-time` | `measurement_datetime` |\n\n## Example: Cell Counting\n\n### ASM Input (simplified)\n```json\n{\n  \"cell-counting-aggregate-document\": {\n    \"device-system-document\": {\n      \"device-identifier\": \"VCB001\",\n      \"model-number\": \"Vi-CELL BLU\"\n    },\n    \"cell-counting-document\": [{\n      \"measurement-aggregate-document\": {\n        \"analyst\": \"jsmith\",\n        \"measurement-time\": \"2024-01-15T10:30:00Z\",\n        \"measurement-document\": [\n          {\n            \"sample-identifier\": \"Sample_A\",\n            \"viable-cell-density\": {\"value\": 2500000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 95.2, \"unit\": \"%\"}\n          },\n          {\n            \"sample-identifier\": \"Sample_B\",\n            \"viable-cell-density\": {\"value\": 1800000, \"unit\": \"(cell/mL)\"},\n            \"viability\": {\"value\": 88.7, \"unit\": \"%\"}\n          }\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nsample_id,viable_cell_density,viable_cell_density_unit,viability_percent,analyst,measurement_datetime,instrument_serial_number,instrument_model\nSample_A,2500000,(cell/mL),95.2,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\nSample_B,1800000,(cell/mL),88.7,jsmith,2024-01-15T10:30:00Z,VCB001,Vi-CELL BLU\n```\n\n## Example: Plate Reader\n\n### ASM Input (simplified)\n```json\n{\n  \"plate-reader-aggregate-document\": {\n    \"plate-reader-document\": [{\n      \"measurement-aggregate-document\": {\n        \"plate-identifier\": \"ELISA_001\",\n        \"measurement-document\": [\n          {\"well-location\": \"A1\", \"absorbance\": {\"value\": 0.125, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A2\", \"absorbance\": {\"value\": 0.892, \"unit\": \"mAU\"}},\n          {\"well-location\": \"A3\", \"absorbance\": {\"value\": 1.456, \"unit\": \"mAU\"}}\n        ]\n      }\n    }]\n  }\n}\n```\n\n### Flattened Output\n```csv\nplate_id,well_position,absorbance,absorbance_unit\nELISA_001,A1,0.125,mAU\nELISA_001,A2,0.892,mAU\nELISA_001,A3,1.456,mAU\n```\n\n## Handling Data Cubes\n\nData cubes (time series, spectra) need special handling:\n\n### Option 1: Expand to rows\nEach point becomes a row:\n```csv\nsample_id,time_seconds,absorbance\nSample_A,0,0.100\nSample_A,60,0.125\nSample_A,120,0.150\n```\n\n### Option 2: Wide format\nMeasurements as columns:\n```csv\nsample_id,abs_0s,abs_60s,abs_120s\nSample_A,0.100,0.125,0.150\n```\n\n### Option 3: JSON array in cell\nKeep as array (some systems support this):\n```csv\nsample_id,absorbance_timeseries\nSample_A,\"[0.100,0.125,0.150]\"\n```\n\n## Standard Column Sets by Technique\n\n### Cell Counting\n```\nsample_id, viable_cell_density, viable_cell_density_unit, total_cell_count,\nviability_percent, average_cell_diameter, average_cell_diameter_unit,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Spectrophotometry\n```\nsample_id, wavelength_nm, absorbance, pathlength_cm, concentration,\nconcentration_unit, a260_a280_ratio, a260_a230_ratio,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### Plate Reader / ELISA\n```\nplate_id, well_position, sample_type, sample_id, absorbance, absorbance_unit,\nconcentration, concentration_unit, dilution_factor, cv_percent,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n### qPCR\n```\nsample_id, target_name, well_position, ct_value, ct_mean, ct_sd,\nquantity, quantity_unit, amplification_efficiency,\nanalyst, measurement_datetime, instrument_serial_number\n```\n\n## Python Implementation\n\n```python\nimport json\nimport pandas as pd\n\ndef flatten_asm(asm_dict, technique=\"cell-counting\"):\n    \"\"\"\n    Flatten ASM JSON to pandas DataFrame.\n    \n    Args:\n        asm_dict: Parsed ASM JSON\n        technique: ASM technique type\n        \n    Returns:\n        pandas DataFrame with one row per measurement\n    \"\"\"\n    rows = []\n    \n    # Get aggregate document\n    agg_key = f\"{technique}-aggregate-document\"\n    agg_doc = asm_dict.get(agg_key, {})\n    \n    # Extract device info\n    device = agg_doc.get(\"device-system-document\", {})\n    device_info = {\n        \"instrument_serial_number\": device.get(\"device-identifier\"),\n        \"instrument_model\": device.get(\"model-number\")\n    }\n    \n    # Get technique documents\n    doc_key = f\"{technique}-document\"\n    for doc in agg_doc.get(doc_key, []):\n        meas_agg = doc.get(\"measurement-aggregate-document\", {})\n        \n        # Extract common metadata\n        common = {\n            \"analyst\": meas_agg.get(\"analyst\"),\n            \"measurement_datetime\": meas_agg.get(\"measurement-time\"),\n            **device_info\n        }\n        \n        # Extract each measurement\n        for meas in meas_agg.get(\"measurement-document\", []):\n            row = {**common}\n            \n            # Flatten measurement fields\n            for key, value in meas.items():\n                if isinstance(value, dict) and \"value\" in value:\n                    # Value datum pattern\n                    col = key.replace(\"-\", \"_\")\n                    row[col] = value[\"value\"]\n                    if \"unit\" in value:\n                        row[f\"{col}_unit\"] = value[\"unit\"]\n                else:\n                    row[key.replace(\"-\", \"_\")] = value\n            \n            rows.append(row)\n    \n    return pd.DataFrame(rows)\n\n# Usage\nwith open(\"asm_output.json\") as f:\n    asm = json.load(f)\n\ndf = flatten_asm(asm, \"cell-counting\")\ndf.to_csv(\"flattened_output.csv\", index=False)\n```\n\n## LIMS Import Considerations\n\nWhen importing flattened data into a LIMS:\n- Match column names to your LIMS schema field names\n- Use ISO 8601 date format for timestamps\n- Ensure sample IDs match existing LIMS sample identifiers\n- Check if your LIMS expects units in separate columns or embedded in values\n\n<!-- File: bio-research/skills/instrument-data-to-allotrope/references/supported_instruments.md (Tokens: ~1527 | Category: anthropic-skill) -->\n# Supported Instruments\n\n## What Can This Skill Convert?\n\n**Any instrument data that maps to an Allotrope schema can be converted.** The skill uses a tiered parsing approach:\n\n1. **Native allotropy parsers** (listed below) - Highest fidelity, validated against vendor-specific formats\n2. **Flexible fallback parser** - Handles any tabular data (CSV, Excel, TXT) by mapping columns to ASM fields\n3. **PDF extraction** - Extracts tables from PDFs, then applies flexible parsing\n\nIf your instrument isn't listed below, the skill can still convert it as long as your data contains recognizable measurement fields (sample IDs, values, units, timestamps, etc.) that map to an ASM technique schema.\n\n---\n\n## Instruments with Native Allotropy Parsers\n\nThe following instruments have optimized parsers in the allotropy library with their Vendor enum values.\n\n## Cell Counting\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Beckman Coulter Vi-CELL BLU | `BECKMAN_VI_CELL_BLU` | .csv |\n| Beckman Coulter Vi-CELL XR | `BECKMAN_VI_CELL_XR` | .txt, .xls, .xlsx |\n| ChemoMetec NucleoView NC-200 | `CHEMOMETEC_NUCLEOVIEW` | .xlsx |\n| ChemoMetec NC-View | `CHEMOMETEC_NC_VIEW` | .xlsx |\n| Revvity Matrix | `REVVITY_MATRIX` | .csv |\n\n## Spectrophotometry (UV-Vis)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Thermo Fisher NanoDrop One | `THERMO_FISHER_NANODROP_ONE` | .csv, .xlsx |\n| Thermo Fisher NanoDrop Eight | `THERMO_FISHER_NANODROP_EIGHT` | .tsv, .txt |\n| Thermo Fisher NanoDrop 8000 | `THERMO_FISHER_NANODROP_8000` | .csv |\n| Unchained Labs Lunatic | `UNCHAINED_LABS_LUNATIC` | .csv, .xlsx |\n| Thermo Fisher Genesys 30 | `THERMO_FISHER_GENESYS30` | .csv |\n\n## Plate Readers (Multi-mode, Absorbance, Fluorescence)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| PerkinElmer EnVision | `PERKIN_ELMER_ENVISION` | .csv |\n| Agilent Gen5 (BioTek) | `AGILENT_GEN5` | .xlsx |\n| Agilent Gen5 Image | `AGILENT_GEN5_IMAGE` | .xlsx |\n| BMG MARS (CLARIOstar) | `BMG_MARS` | .csv, .txt |\n| BMG LabTech Smart Control | `BMG_LABTECH_SMART_CONTROL` | .csv |\n| Thermo SkanIt | `THERMO_SKANIT` | .xlsx |\n| Revvity Kaleido | `REVVITY_KALEIDO` | .csv |\n| Tecan Magellan | `TECAN_MAGELLAN` | .xlsx |\n\n## ELISA / Immunoassay\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Molecular Devices SoftMax Pro | `MOLDEV_SOFTMAX_PRO` | .txt |\n| MSD Discovery Workbench | `MSD_WORKBENCH` | .txt |\n| MSD Methodical Mind | `METHODICAL_MIND` | .xlsx |\n| BMG MARS | `BMG_MARS` | .csv, .txt |\n\n## qPCR / PCR\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Applied Biosystems QuantStudio | `APPBIO_QUANTSTUDIO` | .xlsx |\n| Applied Biosystems QuantStudio Design & Analysis | `APPBIO_QUANTSTUDIO_DESIGNANALYSIS` | .xlsx, .csv |\n| Bio-Rad CFX Maestro | `BIORAD_CFX_MAESTRO` | .csv, .xlsx |\n| Roche LightCycler | `ROCHE_LIGHTCYCLER` | .txt |\n\n## Chromatography (HPLC, LC)\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Waters Empower | `WATERS_EMPOWER` | .xml |\n| Thermo Fisher Chromeleon | `THERMO_FISHER_CHROMELEON` | .xml |\n| Agilent ChemStation | `AGILENT_CHEMSTATION` | .csv |\n\n## Electrophoresis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Agilent TapeStation | `AGILENT_TAPESTATION` | .csv |\n| PerkinElmer LabChip | `PERKIN_ELMER_LABCHIP` | .csv |\n\n## Flow Cytometry\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| BD Biosciences FACSDiva | `BD_BIOSCIENCES_FACSDIVA` | .xml |\n| FlowJo | `FLOWJO` | .wsp |\n\n## Solution Analysis\n\n| Instrument | Vendor Enum | File Types |\n|------------|-------------|------------|\n| Roche Cedex BioHT | `ROCHE_CEDEX_BIOHT` | .xlsx |\n| Beckman Coulter Biomek | `BECKMAN_COULTER_BIOMEK` | .csv |\n\n## Auto-Detection Patterns\n\nThe skill attempts to identify instrument type from file contents using these patterns:\n\n### Vi-CELL BLU\n- Column headers: \"Sample ID\", \"Viable cells (x10^6 cells/mL)\", \"Viability (%)\"\n- File structure: CSV with specific column order\n\n### Vi-CELL XR\n- Column headers: \"Sample\", \"Total cells/ml\", \"Viable cells/ml\"\n- Multiple export formats supported\n\n### NanoDrop\n- Column headers: \"Sample Name\", \"Nucleic Acid Conc.\", \"A260\", \"A280\"\n- 260/280 and 260/230 ratio columns\n\n### Plate Readers (General)\n- Well identifiers (A1-H12 pattern)\n- \"Plate\", \"Well\", \"Sample\" columns\n- Block-based structure with metadata headers\n\n### ELISA\n- Standard curve data with concentrations\n- OD/absorbance readings\n- Sample/blank/standard classification\n\n## Using Vendor Enums\n\n```python\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}: {v.value}\")\n\n# Convert file\nasm = allotrope_from_file(\"data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Checking Supported Status\n\n```python\nfrom allotropy.parser_factory import get_parser\n\n# Check if a vendor/file combo is supported\ntry:\n    parser = get_parser(Vendor.BECKMAN_VI_CELL_BLU)\n    print(\"Supported!\")\nexcept Exception as e:\n    print(f\"Not supported: {e}\")\n```\n\n<!-- File: bio-research/skills/instrument-data-to-allotrope/SKILL.md (Tokens: ~2416 | Category: anthropic-skill) -->\n---\nname: instrument-data-to-allotrope\ndescription: Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.\n---\n\n# Instrument Data to Allotrope Converter\n\nConvert instrument files into standardized Allotrope Simple Model (ASM) format for LIMS upload, data lakes, or handoff to data engineering teams.\n\n> **Note: This is an Example Skill**\n>\n> This skill demonstrates how skills can support your data engineering tasks—automating schema transformations, parsing instrument outputs, and generating production-ready code.\n>\n> **To customize for your organization:**\n> - Modify the `references/` files to include your company's specific schemas or ontology mappings\n> - Use an MCP server to connect to systems that define your schemas (e.g., your LIMS, data catalog, or schema registry)\n> - Extend the `scripts/` to handle proprietary instrument formats or internal data standards\n>\n> This pattern can be adapted for any data transformation workflow where you need to convert between formats or validate against organizational standards.\n\n## Workflow Overview\n\n1. **Detect instrument type** from file contents (auto-detect or user-specified)\n2. **Parse file** using allotropy library (native) or flexible fallback parser\n3. **Generate outputs**:\n   - ASM JSON (full semantic structure)\n   - Flattened CSV (2D tabular format)\n   - Python parser code (for data engineer handoff)\n4. **Deliver** files with summary and usage instructions\n\n> **When Uncertain:** If you're unsure how to map a field to ASM (e.g., is this raw data or calculated? device setting or environmental condition?), ask the user for clarification. Refer to `references/field_classification_guide.md` for guidance, but when ambiguity remains, confirm with the user rather than guessing.\n\n## Quick Start\n\n```python\n# Install requirements first\npip install allotropy pandas openpyxl pdfplumber --break-system-packages\n\n# Core conversion\nfrom allotropy.parser_factory import Vendor\nfrom allotropy.to_allotrope import allotrope_from_file\n\n# Convert with allotropy\nasm = allotrope_from_file(\"instrument_data.csv\", Vendor.BECKMAN_VI_CELL_BLU)\n```\n\n## Output Format Selection\n\n**ASM JSON (default)** - Full semantic structure with ontology URIs\n- Best for: LIMS systems expecting ASM, data lakes, long-term archival\n- Validates against Allotrope schemas\n\n**Flattened CSV** - 2D tabular representation\n- Best for: Quick analysis, Excel users, systems without JSON support\n- Each measurement becomes one row with metadata repeated\n\n**Both** - Generate both formats for maximum flexibility\n\n## Calculated Data Handling\n\n**IMPORTANT:** Separate raw measurements from calculated/derived values.\n\n- **Raw data** → `measurement-document` (direct instrument readings)\n- **Calculated data** → `calculated-data-aggregate-document` (derived values)\n\nCalculated values MUST include traceability via `data-source-aggregate-document`:\n\n```json\n\"calculated-data-aggregate-document\": {\n  \"calculated-data-document\": [{\n    \"calculated-data-identifier\": \"SAMPLE_B1_DIN_001\",\n    \"calculated-data-name\": \"DNA integrity number\",\n    \"calculated-result\": {\"value\": 9.5, \"unit\": \"(unitless)\"},\n    \"data-source-aggregate-document\": {\n      \"data-source-document\": [{\n        \"data-source-identifier\": \"SAMPLE_B1_MEASUREMENT\",\n        \"data-source-feature\": \"electrophoresis trace\"\n      }]\n    }\n  }]\n}\n```\n\n**Common calculated fields by instrument type:**\n| Instrument | Calculated Fields |\n|------------|-------------------|\n| Cell counter | Viability %, cell density dilution-adjusted values |\n| Spectrophotometer | Concentration (from absorbance), 260/280 ratio |\n| Plate reader | Concentrations from standard curve, %CV |\n| Electrophoresis | DIN/RIN, region concentrations, average sizes |\n| qPCR | Relative quantities, fold change |\n\nSee `references/field_classification_guide.md` for detailed guidance on raw vs. calculated classification.\n\n## Validation\n\nAlways validate ASM output before delivering to the user:\n\n```bash\npython scripts/validate_asm.py output.json\npython scripts/validate_asm.py output.json --reference known_good.json  # Compare to reference\npython scripts/validate_asm.py output.json --strict  # Treat warnings as errors\n```\n\n**Validation Rules:**\n- Based on Allotrope ASM specification (December 2024)\n- Last updated: 2026-01-07\n- Source: https://gitlab.com/allotrope-public/asm\n\n**Soft Validation Approach:**\nUnknown techniques, units, or sample roles generate **warnings** (not errors) to allow for forward compatibility. If Allotrope adds new values after December 2024, the validator won't block them—it will flag them for manual verification. Use `--strict` mode to treat warnings as errors if you need stricter validation.\n\n**What it checks:**\n- Correct technique selection (e.g., multi-analyte profiling vs plate reader)\n- Field naming conventions (space-separated, not hyphenated)\n- Calculated data has traceability (`data-source-aggregate-document`)\n- Unique identifiers exist for measurements and calculated values\n- Required metadata present\n- Valid units and sample roles (with soft validation for unknown values)\n\n## Supported Instruments\n\nSee `references/supported_instruments.md` for complete list. Key instruments:\n\n| Category | Instruments |\n|----------|-------------|\n| Cell Counting | Vi-CELL BLU, Vi-CELL XR, NucleoCounter |\n| Spectrophotometry | NanoDrop One/Eight/8000, Lunatic |\n| Plate Readers | SoftMax Pro, EnVision, Gen5, CLARIOstar |\n| ELISA | SoftMax Pro, BMG MARS, MSD Workbench |\n| qPCR | QuantStudio, Bio-Rad CFX |\n| Chromatography | Empower, Chromeleon |\n\n## Detection & Parsing Strategy\n\n### Tier 1: Native allotropy parsing (PREFERRED)\n**Always try allotropy first.** Check available vendors directly:\n\n```python\nfrom allotropy.parser_factory import Vendor\n\n# List all supported vendors\nfor v in Vendor:\n    print(f\"{v.name}\")\n\n# Common vendors:\n# AGILENT_TAPESTATION_ANALYSIS  (for TapeStation XML)\n# BECKMAN_VI_CELL_BLU\n# THERMO_FISHER_NANODROP_EIGHT\n# MOLDEV_SOFTMAX_PRO\n# APPBIO_QUANTSTUDIO\n# ... many more\n```\n\n**When the user provides a file, check if allotropy supports it before falling back to manual parsing.** The `scripts/convert_to_asm.py` auto-detection only covers a subset of allotropy vendors.\n\n### Tier 2: Flexible fallback parsing\n**Only use if allotropy doesn't support the instrument.** This fallback:\n- Does NOT generate `calculated-data-aggregate-document`\n- Does NOT include full traceability\n- Produces simplified ASM structure\n\nUse flexible parser with:\n- Column name fuzzy matching\n- Unit extraction from headers\n- Metadata extraction from file structure\n\n### Tier 3: PDF extraction\nFor PDF-only files, extract tables using pdfplumber, then apply Tier 2 parsing.\n\n## Pre-Parsing Checklist\n\nBefore writing a custom parser, ALWAYS:\n\n1. **Check if allotropy supports it** - Use native parser if available\n2. **Find a reference ASM file** - Check `references/examples/` or ask user\n3. **Review instrument-specific guide** - Check `references/instrument_guides/`\n4. **Validate against reference** - Run `validate_asm.py --reference <file>`\n\n## Common Mistakes to Avoid\n\n| Mistake | Correct Approach |\n|---------|------------------|\n| Manifest as object | Use URL string |\n| Lowercase detection types | Use \"Absorbance\" not \"absorbance\" |\n| \"emission wavelength setting\" | Use \"detector wavelength setting\" for emission |\n| All measurements in one document | Group by well/sample location |\n| Missing procedure metadata | Extract ALL device settings per measurement |\n\n## Code Export for Data Engineers\n\nGenerate standalone Python scripts that scientists can hand off:\n\n```python\n# Export parser code\npython scripts/export_parser.py --input \"data.csv\" --vendor \"VI_CELL_BLU\" --output \"parser_script.py\"\n```\n\nThe exported script:\n- Has no external dependencies beyond pandas/allotropy\n- Includes inline documentation\n- Can run in Jupyter notebooks\n- Is production-ready for data pipelines\n\n## File Structure\n\n```\ninstrument-data-to-allotrope/\n├── SKILL.md                          # This file\n├── scripts/\n│   ├── convert_to_asm.py            # Main conversion script\n│   ├── flatten_asm.py               # ASM → 2D CSV conversion\n│   ├── export_parser.py             # Generate standalone parser code\n│   └── validate_asm.py              # Validate ASM output quality\n└── references/\n    ├── supported_instruments.md     # Full instrument list with Vendor enums\n    ├── asm_schema_overview.md       # ASM structure reference\n    ├── field_classification_guide.md # Where to put different field types\n    └── flattening_guide.md          # How flattening works\n```\n\n## Usage Examples\n\n### Example 1: Vi-CELL BLU file\n```\nUser: \"Convert this cell counting data to Allotrope format\"\n[uploads viCell_Results.xlsx]\n\nClaude:\n1. Detects Vi-CELL BLU (95% confidence)\n2. Converts using allotropy native parser\n3. Outputs:\n   - viCell_Results_asm.json (full ASM)\n   - viCell_Results_flat.csv (2D format)\n   - viCell_parser.py (exportable code)\n```\n\n### Example 2: Request for code handoff\n```\nUser: \"I need to give our data engineer code to parse NanoDrop files\"\n\nClaude:\n1. Generates self-contained Python script\n2. Includes sample input/output\n3. Documents all assumptions\n4. Provides Jupyter notebook version\n```\n\n### Example 3: LIMS-ready flattened output\n```\nUser: \"Convert this ELISA data to a CSV I can upload to our LIMS\"\n\nClaude:\n1. Parses plate reader data\n2. Generates flattened CSV with columns:\n   - sample_identifier, well_position, measurement_value, measurement_unit\n   - instrument_serial_number, analysis_datetime, assay_type\n3. Validates against common LIMS import requirements\n```\n\n## Implementation Notes\n\n### Installing allotropy\n```bash\npip install allotropy --break-system-packages\n```\n\n### Handling parse failures\nIf allotropy native parsing fails:\n1. Log the error for debugging\n2. Fall back to flexible parser\n3. Report reduced metadata completeness to user\n4. Suggest exporting different format from instrument\n\n### ASM Schema Validation\nValidate output against Allotrope schemas when available:\n```python\nimport jsonschema\n# Schema URLs in references/asm_schema_overview.md\n```\n\n<!-- File: bio-research/skills/nextflow-development/references/geo-sra-acquisition.md (Tokens: ~3096 | Category: anthropic-skill) -->\n# GEO/SRA Data Acquisition\n\nDownload raw sequencing data from NCBI GEO/SRA and prepare it for nf-core pipelines.\n\n**Use this when:** Reanalyzing published datasets, validating findings, or comparing results against public cohorts.\n\n## Table of Contents\n\n- [Workflow Overview](#workflow-overview)\n- [Step 1: Fetch Study Information](#step-1-fetch-study-information)\n- [Step 2: Review Sample Groups](#step-2-review-sample-groups)\n- [Step 3: Download FASTQ Files](#step-3-download-fastq-files)\n- [Step 4: Generate Samplesheet](#step-4-generate-samplesheet)\n- [Step 5: Run nf-core Pipeline](#step-5-run-nf-core-pipeline)\n- [Supported Pipelines](#supported-pipelines)\n- [Supported Organisms](#supported-organisms)\n- [Complete Example](#complete-example)\n- [Troubleshooting](#troubleshooting)\n\n---\n\n## Workflow Overview\n\nExample: \"Find differentially expressed genes in GSE309891 (drug-treated vs control)\"\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                    GEO/SRA DATA ACQUISITION                     │\n└─────────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Fetch study info     │\n                 │   • Query NCBI/SRA     │\n                 │   • Get metadata       │\n                 │   • Detect organism    │\n                 │   • Identify data type │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Present summary      │\n                 │   • Organism: Human    │\n                 │   • Genome: GRCh38     │\n                 │   • Type: RNA-Seq      │\n                 │   • Pipeline: rnaseq   │\n                 │   • Samples: 12        │\n                 │     (6 treated,        │\n                 │      6 control)        │\n                 │   • Size: ~24 GB       │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER CONFIRMS  │◄──── Decision point\n                    │  genome/pipeline│\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Select samples       │\n                 │   • Group by condition │\n                 │   • Show treated/ctrl  │\n                 └────────────────────────┘\n                              │\n                              ▼\n                    ┌─────────────────┐\n                    │  USER SELECTS   │◄──── Decision point\n                    │  sample subset  │\n                    └─────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Download FASTQs      │\n                 │   • 24 files (R1+R2)   │\n                 │   • Parallel transfers │\n                 │   • Auto-resume        │\n                 └────────────────────────┘\n                              │\n                              ▼\n                 ┌────────────────────────┐\n                 │   Generate samplesheet │\n                 │   • Map SRR to files   │\n                 │   • Pair R1/R2         │\n                 │   • Assign conditions  │\n                 └────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                    NF-CORE PIPELINE EXECUTION                   │\n│              (Continue with Step 1 of main workflow)            │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Instructions for Claude\n\nWhen assisting users with GEO/SRA data acquisition:\n\n1. **Always fetch study info first** to show the user what data is available\n2. **Ask for confirmation before downloading** - Present the sample groups and sizes, then ask which subset to download using AskUserQuestion\n3. **Suggest appropriate genome and pipeline** based on the organism and data type\n4. **Return to main SKILL.md workflow** after data preparation is complete\n\nExample confirmation question:\n```\nQuestion: \"Which sample group would you like to download?\"\nOptions:\n  - \"RNA-Seq:PAIRED (42 samples, ~87 GB)\"\n  - \"RNA-Seq:SINGLE (7 samples, ~4.5 GB)\"\n  - \"All samples (49 samples, ~92 GB)\"\n```\n\n---\n\n## Step 1: Fetch Study Information\n\nGet metadata about a GEO study before downloading.\n\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004\n```\n\n**Output includes:**\n- Study title and summary\n- Organism (with auto-suggested genome)\n- Number of samples and runs\n- Data types (RNA-Seq, ATAC-seq, etc.)\n- Estimated download size\n- Suggested nf-core pipeline\n\n**Save info to JSON:**\n```bash\npython scripts/sra_geo_fetch.py info GSE110004 -o study_info.json\n```\n\n---\n\n## Step 2: Review Sample Groups\n\nView sample groups organized by data type and layout. This is useful for studies with mixed data types.\n\n```bash\npython scripts/sra_geo_fetch.py groups <GEO_ID>\n```\n\n**Example output:**\n```\nSample Group          Count Layout     GSM Range                    Est. Size\n--------------------------------------------------------------------------------\nRNA-Seq                  42 PAIRED     GSM2879618...(42 samples)      87.4 GB\nRNA-Seq                   7 SINGLE     GSM2976181-GSM2976187           4.5 GB\n--------------------------------------------------------------------------------\nTOTAL                    49                                           91.9 GB\n\nAvailable groups for --subset option:\n  1. \"RNA-Seq:PAIRED\" - 42 samples (~87.4 GB)\n  2. \"RNA-Seq:SINGLE\" - 7 samples (~4.5 GB)\n```\n\n**List individual runs:**\n```bash\npython scripts/sra_geo_fetch.py list <GEO_ID>\n\n# Filter by data type\npython scripts/sra_geo_fetch.py list GSE110004 --filter \"RNA-Seq:PAIRED\"\n```\n\n**DECISION POINT:** Review the sample groups. Decide which subset to download if the study has multiple data types.\n\n---\n\n## Step 3: Download FASTQ Files\n\nDownload FASTQ files from ENA (faster than SRA).\n\n```bash\npython scripts/sra_geo_fetch.py download <GEO_ID> -o <OUTPUT_DIR>\n```\n\n**Options:**\n- `-o, --output`: Output directory (required)\n- `-i, --interactive`: Interactively select sample group to download\n- `-s, --subset`: Filter by data type (e.g., \"RNA-Seq:PAIRED\")\n- `-p, --parallel`: Parallel downloads (default: 4)\n- `-t, --timeout`: Download timeout in seconds (default: 600)\n\n### Interactive Mode (Recommended)\n\nUse `-i` flag for interactive sample selection when the study has multiple data types:\n\n```bash\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n```\n\n**Interactive output:**\n```\n============================================================\n  SELECT SAMPLE GROUP TO DOWNLOAD\n============================================================\n\n  [1] RNA-Seq (paired)\n      Samples: 42\n      GSM: GSM2879618...(42 samples)\n      Size: ~87.4 GB\n\n  [2] RNA-Seq (single)\n      Samples: 7\n      GSM: GSM2976181-GSM2976187\n      Size: ~4.5 GB\n\n  [0] Download ALL (49 samples)\n------------------------------------------------------------\n\nEnter selection (0-2):\n```\n\n### Direct Subset Selection\n\nAlternatively, specify the subset directly:\n\n```bash\n# Download only RNA-Seq paired-end data\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq \\\n    --subset \"RNA-Seq:PAIRED\" --parallel 6\n```\n\n**Note:** Downloads automatically skip existing files. Resume interrupted downloads by re-running the command.\n\n---\n\n## Step 4: Generate Samplesheet\n\nCreate a samplesheet compatible with nf-core pipelines.\n\n```bash\npython scripts/sra_geo_fetch.py samplesheet <GEO_ID> \\\n    --fastq-dir <FASTQ_DIR> \\\n    -o samplesheet.csv\n```\n\n**Options:**\n- `-f, --fastq-dir`: Directory containing downloaded FASTQ files (required)\n- `-o, --output`: Output samplesheet path (default: samplesheet.csv)\n- `-p, --pipeline`: Target pipeline (auto-detected if not specified)\n\n**Example:**\n```bash\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n```\n\n**Output:** The script will:\n1. Create samplesheet in the format required by the target pipeline\n2. Display suggested genome reference\n3. Show suggested nf-core command\n\n---\n\n## Step 5: Run nf-core Pipeline\n\nAfter generating the samplesheet, the script provides a suggested command.\n\n**Example output:**\n```\nSuggested command:\n   nextflow run nf-core/rnaseq \\\n       --input samplesheet.csv \\\n       --outdir results \\\n       --genome R64-1-1 \\\n       -profile docker\n```\n\n**DECISION POINT:** Review and confirm:\n1. Is the suggested pipeline correct?\n2. Is the genome reference correct for your organism?\n3. Do you need additional pipeline options?\n\nThen return to the main SKILL.md workflow (Step 1: Environment Check) to proceed with pipeline execution.\n\n---\n\n## Supported Pipelines\n\nThe skill auto-detects appropriate pipelines based on library strategy. Pipelines marked with ★ are fully supported with configs, samplesheet generation, and documentation. Others are suggested but require manual setup following nf-core documentation.\n\n| Library Strategy | Suggested Pipeline | Support |\n|------------------|--------------------|---------|\n| RNA-Seq          | nf-core/rnaseq     | ★ Full  |\n| ATAC-seq         | nf-core/atacseq    | ★ Full  |\n| WGS/WXS          | nf-core/sarek      | ★ Full  |\n| ChIP-seq         | nf-core/chipseq    | Manual  |\n| Bisulfite-Seq    | nf-core/methylseq  | Manual  |\n| miRNA-Seq        | nf-core/smrnaseq   | Manual  |\n| Amplicon         | nf-core/ampliseq   | Manual  |\n\n---\n\n## Supported Organisms\n\nCommon organisms with auto-suggested genomes:\n\n| Organism | Genome | Notes |\n|----------|--------|-------|\n| Homo sapiens | GRCh38 | Human reference |\n| Mus musculus | GRCm39 | Mouse reference |\n| Saccharomyces cerevisiae | R64-1-1 | Yeast S288C |\n| Drosophila melanogaster | BDGP6 | Fruit fly |\n| Caenorhabditis elegans | WBcel235 | C. elegans |\n| Danio rerio | GRCz11 | Zebrafish |\n| Arabidopsis thaliana | TAIR10 | Arabidopsis |\n| Rattus norvegicus | Rnor_6.0 | Rat |\n\nSee `scripts/config/genomes.yaml` for the full list.\n\n---\n\n## Complete Example\n\nReanalyze GSE110004 (yeast RNA-seq):\n\n```bash\n# 1. Get study info and sample groups\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download with interactive selection\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n# Select option [1] for RNA-Seq paired-end samples\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 \\\n    --fastq-dir ./fastq \\\n    -o samplesheet.csv\n\n# 4. Run nf-core/rnaseq (continue with main SKILL.md workflow)\nnextflow run nf-core/rnaseq \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome R64-1-1 \\\n    -profile docker\n```\n\n### Alternative: Non-interactive Download\n\n```bash\n# Review sample groups first\npython scripts/sra_geo_fetch.py groups GSE110004\n\n# Download specific subset directly\npython scripts/sra_geo_fetch.py download GSE110004 \\\n    --subset \"RNA-Seq:PAIRED\" \\\n    -o ./fastq \\\n    --parallel 4\n```\n\n---\n\n## Troubleshooting\n\n### ENA Download Fails\nIf ENA downloads fail, the data may need to be fetched directly from SRA:\n\n```bash\n# Create SRA tools environment\nconda create -n sra_tools -c bioconda sra-tools\n\n# Download with prefetch + fasterq-dump\nconda run -n sra_tools prefetch SRR6357070\nconda run -n sra_tools fasterq-dump SRR6357070 -O ./fastq\n```\n\n### No SRA Runs Found\nSome GEO datasets only have processed data, not raw sequencing reads. Check:\n```bash\npython scripts/sra_geo_fetch.py info <GEO_ID>\n```\nIf \"Runs: 0\", the dataset may not have raw data in SRA.\n\n### SuperSeries Support\nGEO SuperSeries (which contain multiple SubSeries) are automatically handled. The tool will:\n1. Detect that a GEO ID is a SuperSeries\n2. Find the linked BioProject accession\n3. Fetch all SRA runs from the BioProject\n\nExample: GSE110004 is a SuperSeries that links to BioProject PRJNA432544.\n\n### Genome Not Recognized\nIf the organism is not in the genome mapping, manually specify the genome:\n```bash\n# Check available iGenomes\npython scripts/manage_genomes.py list\n\n# Or provide custom reference files to nf-core\nnextflow run nf-core/rnaseq --fasta /path/to/genome.fa --gtf /path/to/genes.gtf\n```\n\n---\n\n## Requirements\n\n- Python 3.8+\n- `requests` library (optional but recommended)\n- `pyyaml` library (optional, for genome config)\n- Network access to NCBI and ENA\n\nInstall optional dependencies:\n```bash\npip install requests pyyaml\n```\n\n<!-- File: bio-research/skills/nextflow-development/references/installation.md (Tokens: ~497 | Category: anthropic-skill) -->\n# Installation\n\n## Contents\n- [Quick install](#quick-install)\n- [Docker setup](#docker-setup)\n- [Singularity setup (HPC)](#singularity-setup-hpc)\n- [nf-core tools (optional)](#nf-core-tools-optional)\n- [Verify installation](#verify-installation)\n- [Common issues](#common-issues)\n\n## Quick install\n\n```bash\n# Nextflow\ncurl -s https://get.nextflow.io | bash\nmv nextflow ~/bin/\nexport PATH=\"$HOME/bin:$PATH\"\n\n# Verify\nnextflow -version\njava -version  # Requires 11+\n```\n\n## Docker setup\n\n### Linux\n```bash\nsudo apt-get update && sudo apt-get install docker.io\nsudo systemctl enable --now docker\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n### macOS\nDownload Docker Desktop: https://docker.com/products/docker-desktop\n\n### Verify\n```bash\ndocker run hello-world\n```\n\n## Singularity setup (HPC)\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install singularity-container\n\n# Or via conda\nconda install -c conda-forge singularity\n```\n\n### Configure cache\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\necho 'export NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"' >> ~/.bashrc\n```\n\n## nf-core tools (optional)\n\n```bash\npip install nf-core\n```\n\nUseful commands:\n```bash\nnf-core list                    # Available pipelines\nnf-core launch rnaseq           # Interactive parameter selection\nnf-core download rnaseq -r 3.14.0  # Download for offline use\n```\n\n## Verify installation\n\n```bash\nnextflow run nf-core/demo -profile test,docker --outdir test_demo\nls test_demo/\n```\n\n## Common issues\n\n**Java version wrong:**\n```bash\nexport JAVA_HOME=/path/to/java11\n```\n\n**Docker permission denied:**\n```bash\nsudo usermod -aG docker $USER\n# Log out and back in\n```\n\n**Nextflow not found:**\n```bash\necho 'export PATH=\"$HOME/bin:$PATH\"' >> ~/.bashrc\nsource ~/.bashrc\n```\n\n<!-- File: bio-research/skills/nextflow-development/references/pipelines/atacseq.md (Tokens: ~1248 | Category: anthropic-skill) -->\n# nf-core/atacseq\n\n**Version:** 2.1.2\n\n**Official Documentation:** https://nf-co.re/atacseq/2.1.2/\n**GitHub:** https://github.com/nf-core/atacseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/atacseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Quality metrics](#quality-metrics)\n\n## Test command\n\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\n```\n\nExpected: ~15 min, creates peaks and BigWig tracks.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/path/to/ctrl_rep1_R1.fq.gz,/path/to/ctrl_rep1_R2.fq.gz,1\nCONTROL,/path/to/ctrl_rep2_R1.fq.gz,/path/to/ctrl_rep2_R2.fq.gz,2\nTREATMENT,/path/to/treat_rep1_R1.fq.gz,/path/to/treat_rep1_R2.fq.gz,1\nTREATMENT,/path/to/treat_rep2_R1.fq.gz,/path/to/treat_rep2_R2.fq.gz,2\n```\n\n| Column | Required | Description |\n|--------|----------|-------------|\n| sample | Yes | Condition/group identifier |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | Yes | Absolute path to R2 (paired-end required) |\n| replicate | Yes | Replicate number (integer) |\n\n### Design file for differential analysis\n```csv\nsample,condition\nCONTROL,control\nTREATMENT,treatment\n```\n\nUse with `--deseq2_design design.csv`.\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/atacseq -r 2.1.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 --read_length 50\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10` |\n| `--read_length` | 50 | Read length for MACS2 optimization |\n| `--narrow_peak` | true | Narrow peaks (false for broad) |\n| `--mito_name` | chrM | Mitochondrial chromosome name |\n| `--keep_mito` | false | Keep mitochondrial reads |\n| `--min_reps_consensus` | 1 | Min replicates for consensus peaks |\n\n### Differential accessibility\n```bash\n--deseq2_design design.csv\n```\n\n## Output files\n\n```\nresults/\n├── bwa/mergedLibrary/\n│   ├── *.mLb.mkD.sorted.bam     # Filtered, deduplicated alignments\n│   └── bigwig/\n│       └── *.bigWig             # Coverage tracks\n├── macs2/narrowPeak/\n│   ├── *.narrowPeak             # Peak calls\n│   └── consensus/\n│       └── consensus_peaks.bed  # Merged peaks across replicates\n├── deeptools/\n│   ├── plotFingerprint/         # Library complexity\n│   └── plotProfile/             # TSS enrichment\n├── deseq2/                      # If --deseq2_design provided\n└── multiqc/\n```\n\n**Key outputs:**\n- `*.mLb.mkD.sorted.bam`: Analysis-ready alignments\n- `*.narrowPeak`: MACS2 peak calls (BED format)\n- `consensus_peaks.bed`: Consensus peaks across replicates\n- `*.bigWig`: Genome browser tracks\n\n## Quality metrics\n\n| Metric | Good | Acceptable | Poor |\n|--------|------|------------|------|\n| Mapped reads | >80% | 60-80% | <60% |\n| Mitochondrial | <20% | 20-40% | >40% |\n| Duplicates | <30% | 30-50% | >50% |\n| FRiP | >30% | 15-30% | <15% |\n| TSS enrichment | >6 | 4-6 | <4 |\n\n**Fragment size**: Should show nucleosomal periodicity (~50bp nucleosome-free, ~200bp mono-nucleosome).\n\n## Downstream analysis\n\n```r\nlibrary(ChIPseeker)\nlibrary(GenomicRanges)\npeaks <- import(\"consensus_peaks.bed\")\npeakAnno <- annotatePeak(peaks, TxDb = TxDb.Hsapiens.UCSC.hg38.knownGene)\n```\n\n**Motif analysis:**\n```bash\nfindMotifsGenome.pl consensus_peaks.bed hg38 motifs/ -size 200\n```\n\n## Troubleshooting\n\n**Low FRiP**: Check library complexity in `plotFingerprint/`. May indicate over-transposition.\n\n**Few peaks**: Lower threshold with `--macs_qvalue 0.1` or use `--narrow_peak false` for broader peaks.\n\n**High duplicates**: Normal for low-input; pipeline removes by default.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/atacseq/2.1.2/parameters/\n- **Output documentation:** https://nf-co.re/atacseq/2.1.2/docs/output/\n- **Usage documentation:** https://nf-co.re/atacseq/2.1.2/docs/usage/\n\n<!-- File: bio-research/skills/nextflow-development/references/pipelines/rnaseq.md (Tokens: ~1057 | Category: anthropic-skill) -->\n# nf-core/rnaseq\n\n**Version:** 3.22.2\n\n**Official Documentation:** https://nf-co.re/rnaseq/3.22.2/\n**GitHub:** https://github.com/nf-core/rnaseq\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/rnaseq/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n- [Downstream analysis](#downstream-analysis)\n\n## Test command\n\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\n```\n\nExpected: ~15 min, creates `multiqc/multiqc_report.html`.\n\n## Samplesheet format\n\n```csv\nsample,fastq_1,fastq_2,strandedness\nCONTROL_REP1,/path/to/ctrl1_R1.fq.gz,/path/to/ctrl1_R2.fq.gz,auto\nCONTROL_REP2,/path/to/ctrl2_R1.fq.gz,/path/to/ctrl2_R2.fq.gz,auto\nTREATMENT_REP1,/path/to/treat1_R1.fq.gz,/path/to/treat1_R2.fq.gz,auto\n```\n\n| Column | Required | Values |\n|--------|----------|--------|\n| sample | Yes | Alphanumeric, underscores allowed |\n| fastq_1 | Yes | Absolute path to R1 |\n| fastq_2 | No | Absolute path to R2 (empty for single-end) |\n| strandedness | Yes | `auto`, `forward`, `reverse`, `unstranded` |\n\n**Strandedness guide:**\n- `auto`: Inferred from data (recommended)\n- `forward`: TruSeq Stranded, dUTP protocols\n- `reverse`: Ligation-based protocols\n- `unstranded`: Non-stranded protocols\n\n## Parameters\n\n### Minimal run\n```bash\nnextflow run nf-core/rnaseq -r 3.22.2 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38\n```\n\n### Common parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--aligner` | `star_salmon` | Options: `star_salmon`, `star_rsem`, `hisat2` |\n| `--genome` | - | `GRCh38`, `GRCh37`, `mm10`, `BDGP6` |\n| `--pseudo_aligner` | - | Set to `salmon` for pseudo-alignment only |\n| `--skip_trimming` | false | Skip adapter trimming |\n| `--skip_alignment` | false | Pseudo-alignment only |\n\n### Custom reference\n```bash\n--fasta /path/to/genome.fa \\\n--gtf /path/to/annotation.gtf \\\n--star_index /path/to/star/  # Optional, builds if absent\n```\n\n## Output files\n\n```\nresults/\n├── star_salmon/\n│   ├── salmon.merged.gene_counts.tsv    # Raw counts for DESeq2\n│   ├── salmon.merged.gene_tpm.tsv       # TPM values\n│   └── *.bam                            # Alignments\n├── multiqc/\n│   └── multiqc_report.html              # QC summary\n└── pipeline_info/\n```\n\n**Key outputs:**\n- `salmon.merged.gene_counts.tsv`: Input for DESeq2/edgeR\n- `salmon.merged.gene_tpm.tsv`: Normalized expression\n\n## Downstream analysis\n\n```r\nlibrary(DESeq2)\ncounts <- read.delim(\"salmon.merged.gene_counts.tsv\", row.names=1)\ncoldata <- data.frame(\n    condition = factor(c(\"control\", \"control\", \"treatment\", \"treatment\"))\n)\ndds <- DESeqDataSetFromMatrix(\n    countData = round(counts),\n    colData = coldata,\n    design = ~ condition\n)\ndds <- DESeq(dds)\nres <- results(dds, contrast = c(\"condition\", \"treatment\", \"control\"))\n```\n\n## Troubleshooting\n\n**STAR index fails**: Increase memory with `--max_memory '64.GB'` or provide pre-built `--star_index`.\n\n**Low alignment rate**: Verify genome matches species; check FastQC for adapter contamination.\n\n**Strandedness detection fails**: Specify explicitly with `--strandedness reverse`.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/rnaseq/3.22.2/parameters/\n- **Output documentation:** https://nf-co.re/rnaseq/3.22.2/docs/output/\n- **Usage documentation:** https://nf-co.re/rnaseq/3.22.2/docs/usage/\n\n<!-- File: bio-research/skills/nextflow-development/references/pipelines/sarek.md (Tokens: ~1242 | Category: anthropic-skill) -->\n# nf-core/sarek\n\n**Version:** 3.7.1\n\n**Official Documentation:** https://nf-co.re/sarek/3.7.1/\n**GitHub:** https://github.com/nf-core/sarek\n\n> **Note:** When updating to a new version, check the [releases page](https://github.com/nf-core/sarek/releases) for breaking changes and update the version in commands below.\n\n## Contents\n- [Test command](#test-command)\n- [Samplesheet format](#samplesheet-format)\n- [Variant calling modes](#variant-calling-modes)\n- [Parameters](#parameters)\n- [Output files](#output-files)\n\n## Test command\n\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\n```\n\nExpected: ~20 min, creates aligned BAMs and variant calls.\n\n## Samplesheet format\n\n### From FASTQ\n```csv\npatient,sample,lane,fastq_1,fastq_2\npatient1,tumor,L001,/path/to/tumor_L001_R1.fq.gz,/path/to/tumor_L001_R2.fq.gz\npatient1,tumor,L002,/path/to/tumor_L002_R1.fq.gz,/path/to/tumor_L002_R2.fq.gz\npatient1,normal,L001,/path/to/normal_R1.fq.gz,/path/to/normal_R2.fq.gz\n```\n\n### From BAM/CRAM\n```csv\npatient,sample,bam,bai\npatient1,tumor,/path/to/tumor.bam,/path/to/tumor.bam.bai\npatient1,normal,/path/to/normal.bam,/path/to/normal.bam.bai\n```\n\n### With tumor/normal status\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,tumor_R1.fq.gz,tumor_R2.fq.gz,1\npatient1,normal,L001,normal_R1.fq.gz,normal_R2.fq.gz,0\n```\n\n`status`: 0 = normal, 1 = tumor\n\n## Variant calling modes\n\n### Germline (single sample)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools haplotypecaller,snpeff\n```\n\n### Somatic (tumor-normal pair)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --tools mutect2,strelka,snpeff\n```\n\n### WES (exome)\n```bash\nnextflow run nf-core/sarek -r 3.7.1 -profile docker \\\n    --input samplesheet.csv --outdir results --genome GRCh38 \\\n    --wes --intervals /path/to/targets.bed \\\n    --tools haplotypecaller,snpeff\n```\n\n### Joint germline (cohort)\n```bash\n--tools haplotypecaller --joint_germline\n```\n\n## Parameters\n\n### Available tools\n\n**Germline callers:**\n- `haplotypecaller`: GATK HaplotypeCaller\n- `freebayes`: FreeBayes\n- `deepvariant`: DeepVariant (GPU optional)\n- `strelka`: Strelka2 germline\n\n**Somatic callers:**\n- `mutect2`: GATK Mutect2\n- `strelka`: Strelka2 somatic\n- `manta`: Structural variants\n\n**CNV callers:**\n- `ascat`: Copy number\n- `controlfreec`: CNV detection\n- `tiddit`: SV calling\n\n**Annotation:**\n- `snpeff`: Functional annotation\n- `vep`: Variant Effect Predictor\n\n### Key parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `--tools` | - | Comma-separated list of tools |\n| `--genome` | - | `GRCh38`, `GRCh37` |\n| `--wes` | false | Exome mode (requires `--intervals`) |\n| `--intervals` | - | BED file for targeted regions |\n| `--joint_germline` | false | Joint calling for cohorts |\n| `--skip_bqsr` | false | Skip base quality recalibration |\n\n## Output files\n\n```\nresults/\n├── preprocessing/\n│   └── recalibrated/           # Analysis-ready BAMs\n│       └── *.recal.bam\n├── variant_calling/\n│   ├── haplotypecaller/        # Germline VCFs\n│   ├── mutect2/                # Somatic VCFs (filtered)\n│   └── strelka/\n├── annotation/\n│   └── snpeff/                 # Annotated VCFs\n└── multiqc/\n```\n\n## Troubleshooting\n\n**BQSR fails**: Check known sites available for genome. Skip with `--skip_bqsr` for non-standard references.\n\n**Mutect2 no variants**: Verify tumor/normal pairing in samplesheet (check `status` column).\n\n**Out of memory**: `--max_memory '128.GB'` for WGS.\n\n**DeepVariant GPU**: Ensure NVIDIA Docker runtime configured.\n\n## More Information\n\n- **Full parameter list:** https://nf-co.re/sarek/3.7.1/parameters/\n- **Output documentation:** https://nf-co.re/sarek/3.7.1/docs/output/\n- **Usage documentation:** https://nf-co.re/sarek/3.7.1/docs/usage/\n\n<!-- File: bio-research/skills/nextflow-development/references/troubleshooting.md (Tokens: ~940 | Category: anthropic-skill) -->\n# Troubleshooting\n\nQuick fixes for common nf-core pipeline issues.\n\n## Contents\n- [Exit Codes](#exit-codes)\n- [HPC/Singularity Issues](#hpcsingularity-issues)\n- [Pipeline Failures](#pipeline-failures)\n- [RNA-seq Specific](#rna-seq-specific)\n- [Sarek Specific](#sarek-specific)\n- [ATAC-seq Specific](#atac-seq-specific)\n- [Resource Management](#resource-management)\n- [Getting Help](#getting-help)\n\n## Exit Codes\n\nCommon exit codes indicating resource issues (per [nf-core docs](https://nf-co.re/docs/usage/troubleshooting/crash_halfway)):\n\n| Code | Cause | Fix |\n|------|-------|-----|\n| 137 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 143 | Out of memory | `--max_memory '32.GB'` or `'64.GB'` for WGS |\n| 104, 134, 139, 247 | Out of memory | Increase `--max_memory` |\n| 1 | General error | Check `.nextflow.log` for details |\n\nMost pipelines auto-retry with 2x then 3x resources before failing.\n\n## HPC/Singularity Issues\n\n### Singularity cache issues\n```bash\nexport NXF_SINGULARITY_CACHEDIR=\"$HOME/.singularity/cache\"\nmkdir -p $NXF_SINGULARITY_CACHEDIR\n```\n\n### Using Singularity instead of Docker\nOn HPC systems without Docker, use Singularity:\n```bash\nnextflow run nf-core/<pipeline> -profile singularity ...\n```\n\n> **Note**: For basic environment setup (Docker, Nextflow, Java installation), see the inline instructions in Step 1 of SKILL.md.\n\n## Pipeline Failures\n\n### Container pull failed\n- Check network connectivity\n- Try: `-profile singularity` instead of docker\n- For offline: `nf-core download <pipeline> -r <version>`\n\n### \"No such file\" errors\n- Use **absolute paths** in samplesheet\n- Verify files exist: `ls /path/to/file`\n\n### Resume not working\n```bash\n# Check work directory exists\nls -la work/\n\n# Force clean restart (loses cache)\nrm -rf work/ .nextflow*\nnextflow run nf-core/<pipeline> ...\n```\n\n## RNA-seq Specific\n\n### STAR index fails\n- Increase memory: `--max_memory '64.GB'`\n- Or provide pre-built: `--star_index /path/to/star/`\n\n### Low alignment rate\n- Verify genome matches species\n- Check FastQC for adapter contamination\n- Try different aligner: `--aligner hisat2`\n\n### Strandedness detection fails\n- Specify explicitly: `--strandedness reverse`\n- Common values: `forward`, `reverse`, `unstranded`\n\n## Sarek Specific\n\n### BQSR fails\n- Check known sites for genome\n- Skip for non-standard references: `--skip_bqsr`\n\n### Mutect2 no variants\n- Verify tumor/normal pairing\n- Check samplesheet `status` column: 0=normal, 1=tumor\n\n### Out of memory for WGS\n```bash\n--max_memory '128.GB' --max_cpus 16\n```\n\n### DeepVariant GPU issues\n- Ensure NVIDIA Docker runtime configured\n- Or use CPU mode (slower)\n\n## ATAC-seq Specific\n\n### Low FRiP score\n- Check library complexity in `plotFingerprint/`\n- May indicate over-transposition\n\n### Few peaks called\n- Lower threshold: `--macs_qvalue 0.1`\n- Use broad peaks: `--narrow_peak false`\n\n### High duplicates\n- Normal for low-input samples\n- Pipeline removes by default\n- Consider deeper sequencing\n\n## Resource Management\n\n### Set resource limits\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n### Check available resources\n```bash\n# CPUs\nnproc\n\n# Memory\nfree -h\n\n# Disk\ndf -h .\n```\n\n## Getting Help\n\n1. Check `.nextflow.log` for error details\n2. Search nf-core Slack: https://nf-co.re/join\n3. Open issue on GitHub: https://github.com/nf-core/<pipeline>/issues\n\n<!-- File: bio-research/skills/nextflow-development/scripts/config/genomes.yaml (Tokens: ~1288 | Category: anthropic-skill) -->\n# Organism to Genome Mapping for nf-core Pipelines\n# Maps organism names (as they appear in GEO/SRA) to iGenomes keys\n\norganisms:\n  # Human\n  \"Homo sapiens\":\n    genome: \"GRCh38\"\n    taxid: 9606\n    aliases: [\"human\", \"hg38\", \"GRCh38\"]\n    notes: \"Primary human reference genome\"\n\n  \"Homo sapiens (legacy)\":\n    genome: \"GRCh37\"\n    taxid: 9606\n    aliases: [\"hg19\", \"GRCh37\"]\n    notes: \"Legacy human reference, still used for some clinical data\"\n\n  # Mouse\n  \"Mus musculus\":\n    genome: \"GRCm39\"\n    taxid: 10090\n    aliases: [\"mouse\", \"mm39\", \"GRCm39\"]\n    notes: \"Current mouse reference genome\"\n\n  \"Mus musculus (legacy)\":\n    genome: \"GRCm38\"\n    taxid: 10090\n    aliases: [\"mm10\", \"GRCm38\"]\n    notes: \"Legacy mouse reference\"\n\n  # Yeast\n  \"Saccharomyces cerevisiae\":\n    genome: \"R64-1-1\"\n    taxid: 4932\n    aliases: [\"yeast\", \"sacCer3\", \"S288C\", \"budding yeast\"]\n    notes: \"S288C reference strain\"\n\n  # Fruit fly\n  \"Drosophila melanogaster\":\n    genome: \"BDGP6\"\n    taxid: 7227\n    aliases: [\"fly\", \"dm6\", \"fruit fly\", \"Dmel\"]\n    notes: \"Berkeley Drosophila Genome Project release 6\"\n\n  # Worm\n  \"Caenorhabditis elegans\":\n    genome: \"WBcel235\"\n    taxid: 6239\n    aliases: [\"worm\", \"ce11\", \"C. elegans\", \"Cele\"]\n    notes: \"WormBase reference\"\n\n  # Zebrafish\n  \"Danio rerio\":\n    genome: \"GRCz11\"\n    taxid: 7955\n    aliases: [\"zebrafish\", \"danRer11\", \"Drer\"]\n    notes: \"Genome Reference Consortium Zebrafish Build 11\"\n\n  # Arabidopsis\n  \"Arabidopsis thaliana\":\n    genome: \"TAIR10\"\n    taxid: 3702\n    aliases: [\"arabidopsis\", \"thale cress\", \"Atha\"]\n    notes: \"The Arabidopsis Information Resource v10\"\n\n  # Rat\n  \"Rattus norvegicus\":\n    genome: \"Rnor_6.0\"\n    taxid: 10116\n    aliases: [\"rat\", \"rn6\", \"Rnor\"]\n    notes: \"Rnor 6.0 reference\"\n\n  # Chicken\n  \"Gallus gallus\":\n    genome: \"GRCg6a\"\n    taxid: 9031\n    aliases: [\"chicken\", \"galGal6\", \"Ggal\"]\n    notes: \"Genome Reference Consortium Chicken Build 6a\"\n\n  # Pig\n  \"Sus scrofa\":\n    genome: \"Sscrofa11.1\"\n    taxid: 9823\n    aliases: [\"pig\", \"susScr11\", \"Sscr\"]\n    notes: \"Swine genome assembly 11.1\"\n\n  # Cow\n  \"Bos taurus\":\n    genome: \"ARS-UCD1.2\"\n    taxid: 9913\n    aliases: [\"cow\", \"bosTau9\", \"cattle\", \"Btau\"]\n    notes: \"USDA ARS assembly\"\n\n  # Dog\n  \"Canis lupus familiaris\":\n    genome: \"CanFam3.1\"\n    taxid: 9615\n    aliases: [\"dog\", \"canFam3\", \"Clup\"]\n    notes: \"Broad Institute CanFam3.1\"\n\n  # Frog\n  \"Xenopus tropicalis\":\n    genome: \"JGI_4.2\"\n    taxid: 8364\n    aliases: [\"frog\", \"xenTro9\", \"Xtro\"]\n    notes: \"JGI assembly version 4.2\"\n\n  # Maize/Corn\n  \"Zea mays\":\n    genome: \"Zm-B73-REFERENCE-NAM-5.0\"\n    taxid: 4577\n    aliases: [\"maize\", \"corn\", \"Zmay\"]\n    notes: \"B73 reference genome v5\"\n\n  # Rice\n  \"Oryza sativa\":\n    genome: \"IRGSP-1.0\"\n    taxid: 39947\n    aliases: [\"rice\", \"Osat\"]\n    notes: \"International Rice Genome Sequencing Project\"\n\n  # E. coli (common bacterial model)\n  \"Escherichia coli\":\n    genome: null\n    taxid: 562\n    aliases: [\"E. coli\", \"Ecol\"]\n    notes: \"Use specific strain reference; K-12 MG1655 common\"\n\n  # Fission yeast\n  \"Schizosaccharomyces pombe\":\n    genome: \"ASM294v2\"\n    taxid: 4896\n    aliases: [\"fission yeast\", \"S. pombe\", \"Spom\"]\n    notes: \"PomBase reference\"\n\n# Pipeline mapping based on library strategy\npipeline_suggestions:\n  \"RNA-SEQ\": \"rnaseq\"\n  \"ATAC-SEQ\": \"atacseq\"\n  \"CHIP-SEQ\": \"chipseq\"\n  \"WGS\": \"sarek\"\n  \"WXS\": \"sarek\"\n  \"EXOME\": \"sarek\"\n  \"AMPLICON\": \"ampliseq\"\n  \"BISULFITE-SEQ\": \"methylseq\"\n  \"HI-C\": \"hic\"\n  \"MIRNA-SEQ\": \"smrnaseq\"\n  \"RRBS\": \"methylseq\"\n\n<!-- File: bio-research/skills/nextflow-development/scripts/config/pipelines/atacseq.yaml (Tokens: ~1410 | Category: anthropic-skill) -->\nname: atacseq\nversion: \"2.1.2\"\ndescription: \"Chromatin accessibility analysis and peak calling\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/atacseq/{version}/\"\n  parameters: \"https://nf-co.re/atacseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/atacseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/atacseq\"\n  releases: \"https://github.com/nf-core/atacseq/releases\"\n\ndata_types:\n  - ATAC-seq\n  - chromatin accessibility\n  - open chromatin\n\ndetection_hints:\n  filename:\n    - atac\n    - atacseq\n    - chromatin\n    - accessibility\n  directory:\n    - atac\n    - atacseq\n    - chromatin\n    - epigenome\n    - epigenetics\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Condition/group identifier (replicates share same name)\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (paired-end required)\"\n\n    - name: replicate\n      required: true\n      type: integer\n      default: 1\n      inference: filename\n      description: \"Replicate number (integer)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: read_length\n    prompt: \"What is the read length of your sequencing data?\"\n    options:\n      - value: 50\n        label: \"50 bp\"\n        description: \"Short reads\"\n      - value: 75\n        label: \"75 bp\"\n        description: \"Standard length\"\n      - value: 100\n        label: \"100 bp\"\n        description: \"Common for modern sequencers\"\n      - value: 150\n        label: \"150 bp\"\n        description: \"Long reads\"\n    default: 50\n    recommendation: \"Check FASTQ files or sequencing report for exact length\"\n\n  - parameter: narrow_peak\n    prompt: \"What type of peaks are you expecting?\"\n    options:\n      - value: \"true\"\n        label: \"Narrow peaks (default for ATAC-seq)\"\n        description: \"Standard ATAC-seq open chromatin regions\"\n      - value: \"false\"\n        label: \"Broad peaks\"\n        description: \"For histone marks or broader accessibility regions\"\n    default: \"true\"\n    recommendation: \"Use narrow peaks for standard ATAC-seq\"\n\ntest_profile:\n  command: \"nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_atacseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/atacseq \\\n        -r 2.1.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --read_length {read_length} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"bwa/mergedLibrary/*.mLb.mkD.sorted.bam\"\n      description: \"Filtered, deduplicated alignments\"\n    - path: \"bwa/mergedLibrary/bigwig/*.bigWig\"\n      description: \"Coverage tracks for genome browsers\"\n    - path: \"macs2/narrowPeak/*.narrowPeak\"\n      description: \"Peak calls (BED format)\"\n    - path: \"macs2/narrowPeak/consensus/consensus_peaks.bed\"\n      description: \"Consensus peaks across replicates\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"macs2/narrowPeak\"\n      check: exists\n      description: \"Peak calls directory\"\n\nquality_metrics:\n  - name: mapped_reads\n    good: \">80%\"\n    acceptable: \"60-80%\"\n    poor: \"<60%\"\n  - name: mitochondrial\n    good: \"<20%\"\n    acceptable: \"20-40%\"\n    poor: \">40%\"\n  - name: duplicates\n    good: \"<30%\"\n    acceptable: \"30-50%\"\n    poor: \">50%\"\n  - name: frip\n    good: \">30%\"\n    acceptable: \"15-30%\"\n    poor: \"<15%\"\n  - name: tss_enrichment\n    good: \">6\"\n    acceptable: \"4-6\"\n    poor: \"<4\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"Low FRiP score\"\n    fix: \"Check library complexity in plotFingerprint. May indicate over-transposition or low quality\"\n  - error: \"Few peaks called\"\n    fix: \"Lower threshold with --macs_qvalue 0.1 or use --narrow_peak false for broader peaks\"\n  - error: \"High duplicates\"\n    fix: \"Normal for low-input samples. Pipeline removes by default. Consider deeper sequencing\"\n  - error: \"High mitochondrial reads\"\n    fix: \"Sample quality issue. Pipeline filters mito by default (--keep_mito false)\"\n\nreplicate_patterns:\n  - \"_rep(\\\\d+)\"\n  - \"_R(\\\\d+)_\"\n  - \"_(\\\\d+)$\"\n  - \"_replicate(\\\\d+)\"\n\n<!-- File: bio-research/skills/nextflow-development/scripts/config/pipelines/rnaseq.yaml (Tokens: ~1107 | Category: anthropic-skill) -->\nname: rnaseq\nversion: \"3.22.2\"\ndescription: \"Gene expression quantification and differential expression analysis\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/rnaseq/{version}/\"\n  parameters: \"https://nf-co.re/rnaseq/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/rnaseq/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/rnaseq\"\n  releases: \"https://github.com/nf-core/rnaseq/releases\"\n\ndata_types:\n  - RNA-seq\n  - mRNA-seq\n  - bulk RNA-seq\n\ndetection_hints:\n  filename:\n    - rna\n    - rnaseq\n    - mrna\n    - expression\n  directory:\n    - rnaseq\n    - rna\n    - expression\n    - transcriptome\n\nsamplesheet:\n  input_types:\n    - fastq\n\n  columns:\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      description: \"Absolute path to R2 FASTQ (empty for single-end)\"\n\n    - name: strandedness\n      required: true\n      type: enum\n      allowed:\n        - auto\n        - forward\n        - reverse\n        - unstranded\n      default: \"auto\"\n      inference: default\n      description: \"Library strandedness (auto recommended)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome matches your organism?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended for human)\"\n        description: \"Latest human reference assembly\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"Older human reference for compatibility\"\n      - value: mm10\n        label: \"Mouse mm10/GRCm38\"\n        description: \"Mouse reference genome\"\n      - value: BDGP6\n        label: \"Drosophila BDGP6\"\n        description: \"Fruit fly reference\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human samples\"\n\n  - parameter: aligner\n    prompt: \"Which alignment strategy would you prefer?\"\n    options:\n      - value: star_salmon\n        label: \"STAR + Salmon (recommended)\"\n        description: \"Most accurate, standard for differential expression\"\n      - value: star_rsem\n        label: \"STAR + RSEM\"\n        description: \"Better for isoform-level quantification\"\n      - value: hisat2\n        label: \"HISAT2\"\n        description: \"Lower memory requirements, faster\"\n    default: star_salmon\n    recommendation: \"Use star_salmon unless memory-constrained or need isoforms\"\n\ntest_profile:\n  command: \"nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq\"\n  duration: \"15 minutes\"\n  success_indicators:\n    - \"test_rnaseq/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/rnaseq \\\n        -r 3.22.2 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --aligner {aligner} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      description: \"Raw gene counts for DESeq2/edgeR\"\n    - path: \"star_salmon/salmon.merged.gene_tpm.tsv\"\n      description: \"TPM normalized expression values\"\n    - path: \"star_salmon/*.bam\"\n      description: \"Aligned reads\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"star_salmon/salmon.merged.gene_counts.tsv\"\n      check: non_empty\n      description: \"Count matrix must have data\"\n\nresources:\n  min_memory: \"8.GB\"\n  recommended_memory: \"32.GB\"\n  min_cpus: 4\n  recommended_cpus: 8\n  disk_space: \"100.GB\"\n\ntroubleshooting:\n  - error: \"STAR index fails\"\n    fix: \"Increase memory with --max_memory '64.GB' or provide pre-built --star_index\"\n  - error: \"Low alignment rate\"\n    fix: \"Verify genome matches species; check FastQC for adapter contamination\"\n  - error: \"Strandedness detection fails\"\n    fix: \"Specify explicitly with --strandedness reverse (or forward/unstranded)\"\n\n<!-- File: bio-research/skills/nextflow-development/scripts/config/pipelines/sarek.yaml (Tokens: ~1698 | Category: anthropic-skill) -->\nname: sarek\nversion: \"3.7.1\"\ndescription: \"Variant calling for WGS/WES data (germline and somatic)\"\n\n# Documentation and source - NOTE: Update version in URLs when upgrading pipeline\nurls:\n  documentation: \"https://nf-co.re/sarek/{version}/\"\n  parameters: \"https://nf-co.re/sarek/{version}/parameters/\"\n  output_docs: \"https://nf-co.re/sarek/{version}/docs/output/\"\n  github: \"https://github.com/nf-core/sarek\"\n  releases: \"https://github.com/nf-core/sarek/releases\"\n\ndata_types:\n  - WGS\n  - WES\n  - whole genome sequencing\n  - whole exome sequencing\n  - tumor-normal\n  - germline\n  - somatic\n\ndetection_hints:\n  filename:\n    - tumor\n    - normal\n    - germline\n    - wgs\n    - wes\n    - exome\n    - dna\n    - variant\n  directory:\n    - variant\n    - wgs\n    - wes\n    - exome\n    - germline\n    - somatic\n\nsamplesheet:\n  input_types:\n    - fastq\n    - bam\n    - cram\n\n  columns:\n    - name: patient\n      required: true\n      type: string\n      inference: filename\n      description: \"Patient/subject identifier for grouping samples\"\n\n    - name: sample\n      required: true\n      type: string\n      inference: filename\n      description: \"Sample identifier (e.g., tumor, normal)\"\n\n    - name: lane\n      required: false\n      type: string\n      default: \"L001\"\n      inference: filename\n      description: \"Sequencing lane\"\n\n    - name: fastq_1\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R1 FASTQ\"\n\n    - name: fastq_2\n      required: false\n      type: path\n      inference: auto\n      condition: \"input_type == 'fastq'\"\n      description: \"Absolute path to R2 FASTQ\"\n\n    - name: bam\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM file\"\n\n    - name: bai\n      required: true\n      type: path\n      inference: auto\n      condition: \"input_type in ['bam', 'cram']\"\n      description: \"Absolute path to BAM/CRAM index\"\n\n    - name: status\n      required: false\n      type: integer\n      allowed:\n        - 0\n        - 1\n      default: 0\n      inference: filename\n      description: \"0=normal, 1=tumor (critical for somatic calling)\"\n\ndecision_points:\n  - parameter: genome\n    prompt: \"Which reference genome should be used?\"\n    options:\n      - value: GRCh38\n        label: \"Human GRCh38/hg38 (recommended)\"\n        description: \"Latest human reference with most annotation support\"\n      - value: GRCh37\n        label: \"Human GRCh37/hg19 (legacy)\"\n        description: \"For compatibility with older datasets\"\n      - value: mm10\n        label: \"Mouse mm10\"\n        description: \"Mouse reference genome\"\n    default: GRCh38\n    recommendation: \"Default to GRCh38 for human data\"\n\n  - parameter: tools\n    prompt: \"What type of variant calling do you need?\"\n    options:\n      - value: \"haplotypecaller,snpeff\"\n        label: \"Germline variants (single samples)\"\n        description: \"For finding inherited variants in normal samples\"\n        condition: \"no tumor samples detected\"\n      - value: \"mutect2,strelka,snpeff\"\n        label: \"Somatic variants (tumor-normal pairs)\"\n        description: \"For finding cancer mutations with matched normal\"\n        condition: \"tumor-normal pairs detected\"\n      - value: \"haplotypecaller,deepvariant,snpeff\"\n        label: \"Germline with DeepVariant\"\n        description: \"Higher accuracy germline calling (requires GPU)\"\n      - value: \"mutect2,manta,snpeff\"\n        label: \"Somatic with structural variants\"\n        description: \"Comprehensive tumor analysis including SVs\"\n    default: \"haplotypecaller,snpeff\"\n    recommendation: \"Use somatic tools if tumor/normal pairs detected, otherwise germline\"\n\n  - parameter: wes\n    prompt: \"Is this whole exome sequencing (WES) data?\"\n    options:\n      - value: \"false\"\n        label: \"No - Whole Genome Sequencing (WGS)\"\n        description: \"Full genome coverage\"\n      - value: \"true\"\n        label: \"Yes - Whole Exome Sequencing (WES)\"\n        description: \"Requires --intervals BED file\"\n    default: \"false\"\n    recommendation: \"If WES, user must provide intervals BED file\"\n\ntest_profile:\n  command: \"nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek\"\n  duration: \"20 minutes\"\n  success_indicators:\n    - \"test_sarek/multiqc/multiqc_report.html\"\n  log_pattern: \"Pipeline completed successfully\"\n\nrun_command:\n  template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        -resume\n\n  wes_template: |\n    nextflow run nf-core/sarek \\\n        -r 3.7.1 \\\n        -profile docker \\\n        --input {samplesheet} \\\n        --outdir {outdir} \\\n        --genome {genome} \\\n        --tools {tools} \\\n        --wes \\\n        --intervals {intervals} \\\n        -resume\n\noutputs:\n  primary:\n    - path: \"preprocessing/recalibrated/*.recal.bam\"\n      description: \"Analysis-ready BAM files\"\n    - path: \"variant_calling/*/*.vcf.gz\"\n      description: \"Variant call files\"\n    - path: \"annotation/snpeff/*.ann.vcf.gz\"\n      description: \"Annotated variants\"\n\n  validation:\n    - file: \"multiqc/multiqc_report.html\"\n      check: exists\n      description: \"QC report must exist\"\n    - file: \"preprocessing/recalibrated\"\n      check: exists\n      description: \"Recalibrated BAMs directory\"\n\nresources:\n  min_memory: \"16.GB\"\n  recommended_memory: \"64.GB\"\n  wgs_memory: \"128.GB\"\n  min_cpus: 4\n  recommended_cpus: 16\n  disk_space: \"500.GB\"\n\ntroubleshooting:\n  - error: \"BQSR fails\"\n    fix: \"Check known sites available for genome. Skip with --skip_bqsr for non-standard references\"\n  - error: \"Mutect2 no variants\"\n    fix: \"Verify tumor/normal pairing in samplesheet (check status column: 0=normal, 1=tumor)\"\n  - error: \"Out of memory\"\n    fix: \"--max_memory '128.GB' for WGS data\"\n  - error: \"DeepVariant GPU issues\"\n    fix: \"Ensure NVIDIA Docker runtime configured, or use CPU mode\"\n\ntumor_normal_keywords:\n  tumor:\n    - tumor\n    - tumour\n    - met\n    - metastasis\n    - primary\n    - cancer\n    - malignant\n  normal:\n    - normal\n    - germline\n    - blood\n    - pbmc\n    - control\n    - healthy\n    - matched\n\n<!-- File: bio-research/skills/nextflow-development/SKILL.md (Tokens: ~2363 | Category: anthropic-skill) -->\n---\nname: nextflow-development\ndescription: Run nf-core bioinformatics pipelines (rnaseq, sarek, atacseq) on sequencing data. Use when analyzing RNA-seq, WGS/WES, or ATAC-seq data—either local FASTQs or public datasets from GEO/SRA. Triggers on nf-core, Nextflow, FASTQ analysis, variant calling, gene expression, differential expression, GEO reanalysis, GSE/GSM/SRR accessions, or samplesheet creation.\n---\n\n# nf-core Pipeline Deployment\n\nRun nf-core bioinformatics pipelines on local or public sequencing data.\n\n**Target users:** Bench scientists and researchers without specialized bioinformatics training who need to run large-scale omics analyses—differential expression, variant calling, or chromatin accessibility analysis.\n\n## Workflow Checklist\n\n```\n- [ ] Step 0: Acquire data (if from GEO/SRA)\n- [ ] Step 1: Environment check (MUST pass)\n- [ ] Step 2: Select pipeline (confirm with user)\n- [ ] Step 3: Run test profile (MUST pass)\n- [ ] Step 4: Create samplesheet\n- [ ] Step 5: Configure & run (confirm genome with user)\n- [ ] Step 6: Verify outputs\n```\n\n---\n\n## Step 0: Acquire Data (GEO/SRA Only)\n\n**Skip this step if user has local FASTQ files.**\n\nFor public datasets, fetch from GEO/SRA first. See [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) for the full workflow.\n\n**Quick start:**\n\n```bash\n# 1. Get study info\npython scripts/sra_geo_fetch.py info GSE110004\n\n# 2. Download (interactive mode)\npython scripts/sra_geo_fetch.py download GSE110004 -o ./fastq -i\n\n# 3. Generate samplesheet\npython scripts/sra_geo_fetch.py samplesheet GSE110004 --fastq-dir ./fastq -o samplesheet.csv\n```\n\n**DECISION POINT:** After fetching study info, confirm with user:\n- Which sample subset to download (if multiple data types)\n- Suggested genome and pipeline\n\nThen continue to Step 1.\n\n---\n\n## Step 1: Environment Check\n\n**Run first. Pipeline will fail without passing environment.**\n\n```bash\npython scripts/check_environment.py\n```\n\nAll critical checks must pass. If any fail, provide fix instructions:\n\n### Docker issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | Install from https://docs.docker.com/get-docker/ |\n| Permission denied | `sudo usermod -aG docker $USER` then re-login |\n| Daemon not running | `sudo systemctl start docker` |\n\n### Nextflow issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed | `curl -s https://get.nextflow.io \\| bash && mv nextflow ~/bin/` |\n| Version < 23.04 | `nextflow self-update` |\n\n### Java issues\n\n| Problem | Fix |\n|---------|-----|\n| Not installed / < 11 | `sudo apt install openjdk-11-jdk` |\n\n**Do not proceed until all checks pass.** For HPC/Singularity, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 2: Select Pipeline\n\n**DECISION POINT: Confirm with user before proceeding.**\n\n| Data Type | Pipeline | Version | Goal |\n|-----------|----------|---------|------|\n| RNA-seq | `rnaseq` | 3.22.2 | Gene expression |\n| WGS/WES | `sarek` | 3.7.1 | Variant calling |\n| ATAC-seq | `atacseq` | 2.1.2 | Chromatin accessibility |\n\nAuto-detect from data:\n```bash\npython scripts/detect_data_type.py /path/to/data\n```\n\nFor pipeline-specific details:\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md)\n- [references/pipelines/sarek.md](references/pipelines/sarek.md)\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md)\n\n---\n\n## Step 3: Run Test Profile\n\n**Validates environment with small data. MUST pass before real data.**\n\n```bash\nnextflow run nf-core/<pipeline> -r <version> -profile test,docker --outdir test_output\n```\n\n| Pipeline | Command |\n|----------|---------|\n| rnaseq | `nextflow run nf-core/rnaseq -r 3.22.2 -profile test,docker --outdir test_rnaseq` |\n| sarek | `nextflow run nf-core/sarek -r 3.7.1 -profile test,docker --outdir test_sarek` |\n| atacseq | `nextflow run nf-core/atacseq -r 2.1.2 -profile test,docker --outdir test_atacseq` |\n\nVerify:\n```bash\nls test_output/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\nIf test fails, see [references/troubleshooting.md](references/troubleshooting.md).\n\n---\n\n## Step 4: Create Samplesheet\n\n### Generate automatically\n\n```bash\npython scripts/generate_samplesheet.py /path/to/data <pipeline> -o samplesheet.csv\n```\n\nThe script:\n- Discovers FASTQ/BAM/CRAM files\n- Pairs R1/R2 reads\n- Infers sample metadata\n- Validates before writing\n\n**For sarek:** Script prompts for tumor/normal status if not auto-detected.\n\n### Validate existing samplesheet\n\n```bash\npython scripts/generate_samplesheet.py --validate samplesheet.csv <pipeline>\n```\n\n### Samplesheet formats\n\n**rnaseq:**\n```csv\nsample,fastq_1,fastq_2,strandedness\nSAMPLE1,/abs/path/R1.fq.gz,/abs/path/R2.fq.gz,auto\n```\n\n**sarek:**\n```csv\npatient,sample,lane,fastq_1,fastq_2,status\npatient1,tumor,L001,/abs/path/tumor_R1.fq.gz,/abs/path/tumor_R2.fq.gz,1\npatient1,normal,L001,/abs/path/normal_R1.fq.gz,/abs/path/normal_R2.fq.gz,0\n```\n\n**atacseq:**\n```csv\nsample,fastq_1,fastq_2,replicate\nCONTROL,/abs/path/ctrl_R1.fq.gz,/abs/path/ctrl_R2.fq.gz,1\n```\n\n---\n\n## Step 5: Configure & Run\n\n### 5a. Check genome availability\n\n```bash\npython scripts/manage_genomes.py check <genome>\n# If not installed:\npython scripts/manage_genomes.py download <genome>\n```\n\nCommon genomes: GRCh38 (human), GRCh37 (legacy), GRCm39 (mouse), R64-1-1 (yeast), BDGP6 (fly)\n\n### 5b. Decision points\n\n**DECISION POINT: Confirm with user:**\n\n1. **Genome:** Which reference to use\n2. **Pipeline-specific options:**\n   - **rnaseq:** aligner (star_salmon recommended, hisat2 for low memory)\n   - **sarek:** tools (haplotypecaller for germline, mutect2 for somatic)\n   - **atacseq:** read_length (50, 75, 100, or 150)\n\n### 5c. Run pipeline\n\n```bash\nnextflow run nf-core/<pipeline> \\\n    -r <version> \\\n    -profile docker \\\n    --input samplesheet.csv \\\n    --outdir results \\\n    --genome <genome> \\\n    -resume\n```\n\n**Key flags:**\n- `-r`: Pin version\n- `-profile docker`: Use Docker (or `singularity` for HPC)\n- `--genome`: iGenomes key\n- `-resume`: Continue from checkpoint\n\n**Resource limits (if needed):**\n```bash\n--max_cpus 8 --max_memory '32.GB' --max_time '24.h'\n```\n\n---\n\n## Step 6: Verify Outputs\n\n### Check completion\n\n```bash\nls results/multiqc/multiqc_report.html\ngrep \"Pipeline completed successfully\" .nextflow.log\n```\n\n### Key outputs by pipeline\n\n**rnaseq:**\n- `results/star_salmon/salmon.merged.gene_counts.tsv` - Gene counts\n- `results/star_salmon/salmon.merged.gene_tpm.tsv` - TPM values\n\n**sarek:**\n- `results/variant_calling/*/` - VCF files\n- `results/preprocessing/recalibrated/` - BAM files\n\n**atacseq:**\n- `results/macs2/narrowPeak/` - Peak calls\n- `results/bwa/mergedLibrary/bigwig/` - Coverage tracks\n\n---\n\n## Quick Reference\n\nFor common exit codes and fixes, see [references/troubleshooting.md](references/troubleshooting.md).\n\n### Resume failed run\n\n```bash\nnextflow run nf-core/<pipeline> -resume\n```\n\n---\n\n## References\n\n- [references/geo-sra-acquisition.md](references/geo-sra-acquisition.md) - Downloading public GEO/SRA data\n- [references/troubleshooting.md](references/troubleshooting.md) - Common issues and fixes\n- [references/installation.md](references/installation.md) - Environment setup\n- [references/pipelines/rnaseq.md](references/pipelines/rnaseq.md) - RNA-seq pipeline details\n- [references/pipelines/sarek.md](references/pipelines/sarek.md) - Variant calling details\n- [references/pipelines/atacseq.md](references/pipelines/atacseq.md) - ATAC-seq details\n\n---\n\n## Disclaimer\n\nThis skill is provided as a prototype example demonstrating how to integrate nf-core bioinformatics pipelines into Claude Code for automated analysis workflows. The current implementation supports three pipelines (rnaseq, sarek, and atacseq), serving as a foundation that enables the community to expand support to the full set of nf-core pipelines.\n\nIt is intended for educational and research purposes and should not be considered production-ready without appropriate validation for your specific use case. Users are responsible for ensuring their computing environment meets pipeline requirements and for verifying analysis results.\n\nAnthropic does not guarantee the accuracy of bioinformatics outputs, and users should follow standard practices for validating computational analyses. This integration is not officially endorsed by or affiliated with the nf-core community.\n\n## Attribution\n\nWhen publishing results, cite the appropriate pipeline. Citations are available in each nf-core repository's CITATIONS.md file (e.g., https://github.com/nf-core/rnaseq/blob/3.22.2/CITATIONS.md).\n\n## Licenses\n\n- **nf-core pipelines:** MIT License (https://nf-co.re/about)\n- **Nextflow:** Apache License, Version 2.0 (https://www.nextflow.io/about-us.html)\n- **NCBI SRA Toolkit:** Public Domain (https://github.com/ncbi/sra-tools/blob/master/LICENSE)\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/01-intuition-pumps.md (Tokens: ~2629 | Category: anthropic-skill) -->\n# SKILL: Intuition Pumps for Scientific Problem Ideation\n\n## Overview\nThis skill helps scientists generate high-quality research ideas by providing systematic prompts (\"intuition pumps\") and identifying common ideation traps. Based on the framework that most biological and chemical science projects involve **perturbing a system, measuring it, and analyzing the data**, this skill guides users through structured ideation that can significantly impact how they spend years of their career.\n\n## Core Framework\n\n### The Three Pillars of Scientific Work\nResearch advances generally fall into one of these categories, each with two dimensions:\n\n**PERTURBATION**\n- *Logic*: Novel ways to manipulate biological systems (e.g., using CRISPR for deep mutational scanning)\n- *Technology*: New tools for manipulation (e.g., developing base editors, creating whole-genome CRISPR libraries)\n\n**MEASUREMENT**  \n- *Logic*: Novel applications of existing measurement tools (e.g., using tissue clearing to study liver fibrosis)\n- *Technology*: New measurement capabilities (e.g., developing tissue-clearing techniques, super-resolution microscopy)\n\n**THEORY/COMPUTATION**\n- *Logic*: Using computational tools to make discoveries (e.g., applying AlphaFold to identify protein functions)\n- *Technology*: Building new algorithms or models (e.g., developing machine learning architectures for biological data)\n\nUnderstanding which quadrant resonates with the user can help identify their niche and guide ideation.\n\n## The Skill Workflow\n\n### Phase 1: Initial Discovery Questions (5-10 minutes)\n\nBefore diving into intuition pumps, Claude should gather context by asking the user:\n\n1. **What is the user's general research area or field?** (e.g., immunology, synthetic biology, neuroscience, protein engineering)\n\n2. **What excites the user most about science?**\n   - Building new tools/technologies?\n   - Discovering fundamental principles?\n   - Solving practical problems?\n   - Understanding dynamic processes?\n\n3. **What are the user's existing strengths?** (Select all that apply)\n   - Specific techniques (please list)\n   - Computational skills\n   - Access to unique systems/models\n   - Domain expertise in a particular area\n\n4. **Current constraints:**\n   - Time horizon for this project? (months/years)\n   - Resources available?\n   - Must it connect to existing work, or can the user start fresh?\n\n5. **On a scale of 1-5, how would the user rate their current idea?**\n   - Likelihood of success: 1 (very risky) to 5 (highly feasible)\n   - Potential impact: 1 (incremental) to 5 (transformative)\n\n### Phase 2: Applying Intuition Pumps\n\nBased on the user's responses, Claude should guide them through relevant intuition pumps from this list:\n\n#### Intuition Pump #1: Make It Systematic\n**Prompt:** Take any one-off perturbation or measurement and make it systematic.\n\n**Examples:**\n- Instead of mutating one enzyme, measure kinetic parameters across an entire enzyme family\n- Instead of one CRISPR mutant → genome-wide screen with transcriptomic readout\n- Instead of imaging one condition → high-throughput imaging across thousands of conditions\n\n**Prompt for User:** What one-off experiment in your field could become a systematic survey?\n\n#### Intuition Pump #2: Identify Technology Limitations\n**Prompt:** What are the fundamental limitations of technologies you use? These limitations are opportunities.\n\n**Examples:**\n- Microscopy can't resolve beyond diffraction limit → super-resolution microscopy\n- DNA synthesis can't make complete genomes → develop assembly methods\n- Genetic screens have precise input but imprecise output → develop high-dimensional readouts\n- We do single gene KOs but networks are complex → develop combinatorial perturbation methods\n\n**Prompt for User:** What technology limitation frustrates you most? How might you turn that limitation into an opportunity?\n\n#### Intuition Pump #3: The \"I Can't Imagine\" Test\n**Prompt:** I can't imagine a future in which we don't have ____, but it doesn't exist yet.\n\n**Examples:**\n- The ability to design highly efficient enzymes like we design other proteins\n- The ability to deliver genome editing payloads to any cell type in vivo\n- 3D tomographic imaging of live cells at molecular resolution\n- Proteome-scale sequencing with the throughput of RNA-seq\n\n**Prompt for User:** What capability seems inevitable but doesn't exist yet in your field?\n\n#### Intuition Pump #4: Static vs. Dynamic Understanding\n**Prompt:** We understand biological \"parts lists\" but rarely understand dynamic processes.\n\n**Key Insight:** Most observations are single-timepoint, single-perturbation format. But biological systems are dynamic—like humans flowing through Grand Central Station or money through financial systems.\n\n**Examples:**\n- Understanding growth factor signaling like we understand turning a key in a car engine\n- Time-resolved cell atlases with lineage tracing through entire development\n- Following metabolite flux through pathways in real-time\n\n**Prompt for User:** What dynamic process in your field do we observe as static snapshots? How might you capture the full temporal or spatial dynamics?\n\n#### Intuition Pump #5: Pick a New Axis\n**Prompt:** We almost always use time as the x-axis for dynamic processes. What other coordinate could you use?\n\n**Example:** Instead of time, use \"infection progression\" markers to enable monitoring asynchronous cells\n\n**Prompt for User:** What non-temporal coordinate could reveal new biology in your system?\n\n#### Intuition Pump #6: Create a Technology Platform\n**Prompt:** Instead of answering one question, could you build a platform that enables many questions?\n\n**Examples:**\n- Antibodies for intracellular targets (not just extracellular)\n- AI that predicts perturbations needed to reach desired cell states\n- Universal genome delivery vehicles\n\n**Prompt for User:** What platform would transform how your field asks questions?\n\n#### Intuition Pump #7: Dogs That Don't Bark\n**Prompt:** Why doesn't something exist or occur? Absence can be as informative as presence.\n\n**Examples:**\n- Why are there no Gram-negative bacteria on human skin?\n- Why do some catalytically inactive enzymes persist through evolution?\n- Why don't certain cell types exist in certain tissues?\n\n**Prompt for User:** What absence puzzles you in your field?\n\n### Phase 3: Avoiding Common Traps\n\nAfter generating ideas, we must evaluate them critically. Here are the most common traps:\n\n#### Trap #1: The Truffle Hound\n**Warning:** Don't become so good at one system or technique that you fail to ask questions of biological import.\n\n**Bad:** \"What is the role of p190 RhoGAP in wing development?\"  \n**Better:** \"How do signaling pathways and cytoskeleton coordinate to control wing development?\"\n\n**Self-Check:** Is the question driven by biological curiosity or by what the user is technically capable of?\n\n#### Trap #2: Applying Existing Tool to New System\n**Warning:** \"Let's use CRISPR in my organism\" can be valuable but risks crowding and incrementalism.\n\n**When It Works:** The user is enabling a field that truly needs this capability\n**When It Fails:** The tool is already widely applied; the contribution will be incremental\n\n**Self-Check:** Will this tool application open new biological questions, or just extend existing observations? Claude should help the user evaluate this honestly.\n\n#### Trap #3: Jumping on the First Idea\n**Warning:** Treating ideas with reverence instead of skepticism. Confirmation bias sets in quickly.\n\n**Better Approach:** Users should treat new ideas like leeches trying to steal their time. Look for the warts. Develop several ideas in parallel and comparison shop.\n\n**Self-Check:** Has the user critically evaluated at least 3-5 alternative approaches?\n\n#### Trap #4: Too Many Fixed Parameters\n**Warning:** Fixing too many parameters at the outset creates a poor technique-application match.\n\n**Example of Over-Constraining:** \"I will use spatial transcriptomics to study antigen-presenting cell and T cell interactions in the tumor microenvironment.\"\n- This fixes: technique (spatial transcriptomics), cell types, and context\n- If any assumption fails, the project fails\n\n**Self-Check:** Has the user fixed more than 2 parameters before starting?\n\n#### Trap #5: Too Few Fixed Parameters\n**Warning:** \"I want to do impactful work in cell engineering\" → paralysis\n\n**Resolution:** Constraints engender creativity. Fix ONE parameter at a time and let creativity flow.\n\n**Self-Check:** Does the user have at least one concrete constraint to work with?\n\n### Phase 4: Literature Integration\n\nTo ensure the idea has appropriate scope and hasn't been thoroughly explored, Claude should ask:\n\n1. **What are 2-3 key questions or gaps the idea addresses?**\n\n2. **What should be searched in PubMed to:**\n   - Understand the current state of the field?\n   - Identify related approaches?\n   - Find empirical knowledge from adjacent domains that could inform the approach?\n\nClaude should use PubMed to:\n- Assess how general/specific the problem is\n- Identify relevant methodological advances\n- Find analogous systems or approaches in other fields\n- Determine the degree of competition\n\n### Phase 5: Idea Refinement and Output\n\nAfter working through intuition pumps, avoiding traps, and reviewing literature, Claude should help the user:\n\n1. **Crystallize the Idea:**\n   - Biological question\n   - Technical approach (perturbation/measurement/theory: logic vs. technology)\n   - What's novel about this angle?\n\n2. **Articulate Fixed vs. Floating Parameters:**\n   - What MUST remain constant in the approach?\n   - What can be flexible if obstacles arise?\n\n3. **Identify Key Assumptions:**\n   - What must be true for this to work?\n   - Which assumptions are about biology vs. technology capabilities?\n\n4. **Sketch Alternative Paths:**\n   - If the primary approach fails, what's Plan B?\n   - Can the project be designed to succeed regardless of outcome?\n\n## Output Deliverable\n\nAt the end of this skill, Claude should produce a **2-page Problem Ideation Document** containing:\n\n### Page 1: Core Idea\n- **Title:** Concise project name\n- **The Question:** What biological question is being asked?\n- **The Approach:** How will it be answered? (Specify perturbation/measurement/computation: logic vs. technology)\n- **What's Novel:** The unique angle\n- **Why It Matters:** Potential impact (generality × learning, or technology development)\n- **Intuition Pump(s) Used:** Which prompted this idea\n\n### Page 2: Critical Analysis\n- **Fixed vs. Floating Parameters:**\n  - Fixed: What must stay constant\n  - Floating: What can adapt\n\n- **Key Assumptions & Risk Assessment:**\n  - Biological assumptions (risk level 1-5)\n  - Technical assumptions (risk level 1-5)\n\n- **Traps Avoided:** Which pitfalls were navigated around?\n\n- **Alternative Approaches:** Plan B and Plan C\n\n- **Literature Context:**\n  - 3-5 key papers that inform or relate to this work\n  - Degree of competition (low/medium/high)\n  - The user's edge/advantage\n\n- **Next Steps:** First 3 concrete experiments or analyses\n\n## Key Principles to Remember\n\n1. **Reversal of Polarity:** Treat ideas with skepticism, not reverence. Look for flaws before falling in love.\n\n2. **Comparison Shopping:** Develop multiple ideas in parallel. The act of comparison improves decision-making.\n\n3. **Fix One Parameter at a Time:** Constraints engender creativity, but too many constraints prevent it.\n\n4. **Think in Ensembles:** The user is picking a family of possible projects, not a singular path. Flexibility is essential.\n\n5. **Balance Logic and Technology:** Novel biology can come from new tools OR clever application of existing tools.\n\n6. **Systematic Over One-Off:** High-throughput and systematic approaches often reveal more than single observations.\n\n7. **Dynamic Over Static:** Biological systems are dynamic. How can process be captured rather than snapshot?\n\n## Getting Started\n\nWhen the user is ready, Claude should guide them through the Phase 1 questions to begin the systematic ideation process. The key message: spending extra time on problem choice is the highest-leverage activity in science. A well-chosen problem executed reasonably well will have more impact than a mediocre problem executed brilliantly.\n\n---\n\n*This skill is based on the problem choice framework developed by Michael A. Fischbach and Christopher T. Walsh, as described in \"Problem choice and decision trees in science and engineering\" (Cell, 2024).*\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/02-risk-assessment.md (Tokens: ~2987 | Category: anthropic-skill) -->\n# SKILL 2: Risk Assessment and Assumption Analysis\n\n## Overview\nThis skill helps scientists systematically identify, quantify, and manage project risk through rigorous assumption analysis. The goal is not to eliminate risk—risk-free projects tend to be incremental—but to name it, quantify it, and work steadily to chip away at it. This skill builds directly on the Problem Ideation Document from Skill 1.\n\n## Core Principle\n\n**\"Don't avoid risk; befriend it.\"**\n\nThe most important concept in problem choice is the two-axis evaluation:\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nThis skill focuses on the X-axis, helping users move their project rightward through systematic risk analysis.\n\n## Why This Matters\n\nA project with a high-risk assumption that won't read out for >2 years is problematic. One that requires multiple miracles to succeed should be avoided or refined. The human tendency is to stay in a safe local space, work laterally, and put off facing existential risks—like an ostrich burying its head in the sand. This skill helps users face risk head-on.\n\n## The Skill Workflow\n\n### Phase 1: Extract Project Assumptions (10-15 minutes)\n\nFirst, Claude should gather information about the user's project from Skill 1:\n\n1. **Project Summary** (from Skill 1):\n   - The biological question\n   - The technical approach\n   - What's novel about it\n\n2. **Project Horizon:**\n   - How long is this project expected to take? (months/years)\n   - What is the user's role? (graduate student, postdoc, PI, startup founder)\n\n3. **Initial Risk Sense:**\n   - What keeps the user up at night about this project?\n   - What's the scariest assumption?\n\n### Phase 2: Comprehensive Assumption Listing\n\nClaude should work with the user to list EVERY assumption the project makes from inception through conclusion. Assumptions fall into two categories:\n\n#### Type A: Assumptions About Biological Reality\nThese are facts about the world that either are or aren't true. They won't change during the project.\n\n**Examples:**\n- New cell types exist beyond what's currently known\n- A particular gene regulates the process being studied\n- Two proteins physically interact\n- A pathway functions in the organism of interest\n- The biological effect size is detectable\n\n#### Type B: Assumptions About Technical Capability\nThese are about whether technology can do what's needed. These CAN change during the project as methods improve.\n\n**Examples:**\n- A specific cell type can be isolated\n- Sequencing will generate high-quality data\n- An assay has sufficient throughput\n- Computational analysis can distinguish signal from noise\n- Gene editing will work in the system\n\n**Claude should ask:**\n1. What must be true about the biology for this to work?\n2. What must the technology be able to do?\n3. What about the experimental design—what assumptions are built in?\n4. What about the analysis—can it deliver what's needed?\n5. If everything works, can the findings be validated?\n6. Will the findings be interpretable and meaningful?\n\n### Phase 3: Risk Scoring (The Assumption Analysis Table)\n\nFor each assumption, Claude should help the user assign two scores:\n\n#### Risk Level (1-5 scale):\n- **1** = Very likely to be true/work (>90% confidence)\n- **2** = Likely (70-90% confidence)\n- **3** = Uncertain (40-70% confidence)\n- **4** = Unlikely (10-40% confidence)\n- **5** = Very unlikely (<10% confidence)\n\n#### Time to Test (months):\nHow long before the user will know if this assumption is valid?\n\n**Critical Rules:**\n1. Be brutally honest—try to convince oneself of being WRONG, not right\n2. Distinguish between biological vs. technical assumptions\n3. Consider whether technical assumptions might improve over time\n4. Note which assumptions depend on earlier assumptions succeeding\n\n### Phase 4: Risk Profile Evaluation\n\nOnce the complete table is ready, Claude should analyze the risk profile:\n\n#### Red Flags to Identify:\n1. **The Late High-Risk Problem:** Risk level 4-5 assumption that won't read out until >18 months\n2. **The Multiple Miracles:** More than 2-3 assumptions with risk level 4-5\n3. **The Dependency Chain:** High-risk assumptions stacked in sequence\n4. **The Ostrich Pattern:** Starting with low-risk work while avoiding the high-risk tests\n\n#### Green Lights:\n1. **Early Go/No-Go:** Highest-risk assumption testable in <6 months\n2. **Multiple Candidates:** Project can succeed with several different outcomes\n3. **Graceful Degradation:** If assumption X fails, assumption Y provides alternative path\n4. **Risk Distribution:** High-risk assumptions balanced across timeline\n\n**Rule of Thumb:** If you have a risk level 5 assumption three years out, pick another project.\n\n### Phase 5: Risk Mitigation Strategies\n\nFor each high-risk assumption (level 4-5), Claude should help develop mitigation strategies:\n\n#### Strategy 1: Move High-Risk Tests Earlier\n**Question:** Can a quicker, cruder test be designed that answers most of what's needed?\n\n**Example:** Instead of waiting 2 years to validate a new cell type exists, consider:\n- Using existing markers as a proxy\n- Testing in a simpler model system first\n- Using computational predictions to increase confidence\n\n#### Strategy 2: Multiple Candidates Approach\n**Question:** Can multiple candidates be tested in parallel to increase likelihood of success?\n\n**Example:** Instead of:\n- Testing one kinase → Test a panel of 10 kinases\n- Building one engineered organism → Build and test a library\n- Pursuing one therapeutic target → Pursue 3 related targets\n\n#### Strategy 3: Reframe the Question\n**Question:** Can the project scope be adjusted to reduce critical assumptions while maintaining impact?\n\n**Example from lecture:**\n- **Original:** Identify NEW enteroendocrine cell types (high risk: they may not exist)\n- **Reframed:** Better characterize KNOWN but incompletely understood cell types (lower risk)\n\n#### Strategy 4: Change the System\n**Question:** Is there a different biological system with similar scientific value but lower technical risk?\n\n**Example from lecture:**\n- **Original:** Intestinal epithelium (hard to manipulate genetically)\n- **Alternative:** Liver (easier genetic manipulation options exist)\n\n#### Strategy 5: Add Complementary Approaches\n**Question:** Can a parallel approach be added that de-risks the main assumption?\n\n**Example from lecture:**\n- Add spatial transcriptomics to scRNA-seq\n- This provides biogeographic context and validates cell type existence earlier\n\n### Phase 6: Go/No-Go Experiment Design\n\nFor the top 3 highest-risk assumptions, Claude should help design the critical go/no-go experiments:\n\n**For each, specify:**\n1. **The Question:** Exactly what is being tested?\n2. **The Experiment:** Most direct test possible (even if crude)\n3. **Success Criteria:** What result means \"go\"?\n4. **Failure Response:** What result means \"pivot\" or \"stop\"?\n5. **Timeline:** How soon can this be run?\n6. **Resources:** What is needed?\n\n**Key Principle:** Cut right to the critical go/no-go experiment. Don't just start with easy stuff—the risk points aren't going away.\n\n### Phase 7: Literature Validation\n\nClaude should search PubMed to help calibrate risk assessments:\n\n**Search for:**\n1. **Precedents:** Has anyone done something similar? (Reduces technical risk)\n2. **Biological Evidence:** What's known about the system? (Informs biological risk)\n3. **Technical Benchmarks:** How well do the methods work in practice?\n4. **Adjacent Successes:** Has anyone solved related problems?\n\n**Questions to ask the user:**\n- What specific searches would help calibrate risk?\n- Are there particular papers that informed the assumptions?\n- Are there technical benchmarks to look up?\n\n### Phase 8: Revised Project Plan\n\nBased on the risk analysis, Claude should help create a revised plan:\n\n#### Option A: De-Risk the Current Plan\n- Reorder experiments to test high-risk assumptions early\n- Add complementary approaches\n- Design multiple-candidate strategies\n\n#### Option B: Reframe the Project\n- Adjust scope while maintaining impact\n- Change biological system\n- Modify technical approach\n\n#### Option C: Pick a Different Project\nSometimes the honest answer is: \"This has too many miracles.\" That's valuable to know BEFORE investing years.\n\n## Output Deliverable\n\nClaude should produce a **2-page Risk Assessment Document**:\n\n### Page 1: Assumption Analysis Table\n\n| Assumption | Type* | Risk† | Time‡ | Notes |\n|------------|-------|-------|-------|-------|\n| [Assumption 1] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| [Assumption 2] | Bio/Tech | 1-5 | X mo | [Rationale for score] |\n| ... | ... | ... | ... | ... |\n\n*Bio = Biological reality, Tech = Technical capability  \n†Risk: 1=very likely to 5=very unlikely  \n‡Time to test in months\n\n#### Risk Profile Summary:\n- **Total Assumptions:** X\n- **High Risk (4-5):** X assumptions\n- **Late High Risk (>18mo):** X assumptions\n- **Critical Path:** [Identify the chain of dependent assumptions]\n- **Overall Assessment:** [Green/Yellow/Red light with explanation]\n\n### Page 2: Risk Mitigation Plan\n\n#### Top 3 High-Risk Assumptions:\nFor each:\n1. **The Assumption:** [Stated clearly]\n2. **Current Risk Level & Timeline:** X (risk) at Y months\n3. **Why This Risk Exists:** [Explanation]\n4. **Mitigation Strategy:** [From Strategies 1-5 above]\n5. **Go/No-Go Experiment:**\n   - Experiment design\n   - Success criteria\n   - Timeline\n   - What you'll do if it fails\n\n#### Revised Project Timeline:\n```\nMonth 0-6:   [Early go/no-go experiments]\nMonth 6-12:  [Based on go/no-go results]\nMonth 12-18: [...]\nMonth 18+:   [...]\n```\n\n#### Contingency Plans:\n- **If assumption X fails:** [Plan B]\n- **If assumption Y fails:** [Plan C]\n- **Multiple success paths:** [How project can succeed different ways]\n\n#### Decision Points:\n- **Month X:** Evaluate [assumptions A, B] → Go/Pivot/Stop decision\n- **Month Y:** Evaluate [assumptions C, D] → Go/Pivot/Stop decision\n\n## Practical Examples\n\n### Example 1: ScRNA-Seq for Enteroendocrine Cells\n\n**High-Risk Assumptions Identified:**\n1. \"New cell types can be validated experimentally\" (Risk 5, 24 months)\n2. \"Knockout will yield biologically relevant phenotype\" (Risk 5, 30 months)\n\n**Problem:** Two risk-5 assumptions at 24+ months = RED FLAG\n\n**Mitigation Applied:**\n- Reframe to study known but poorly characterized cells (reduces Risk 5→3)\n- Switch to liver instead of intestine (improves validation timeline: 30→18 months)\n- Add spatial transcriptomics (provides earlier validation checkpoint at 16 months)\n\n### Example 2: Bacterial Therapy for Chronic Kidney Disease\n\n**High-Risk Assumption Identified:**\n\"Key uremic toxins leading to effects can be determined\" (Risk 4, unknown timeline)\n\n**Problem:** Critical assumption with unclear path to resolution\n\n**Mitigation Applied:**\n- Focus on known lead toxins (IS and PCS) rather than discovering new ones\n- Add parallel track: test multiple toxin candidates\n- Design study where learning toxin identity IS the outcome (multiple success paths)\n\n## Key Principles to Remember\n\n1. **Try to Convince Yourself You're Wrong:** The goal is critical evaluation, not confirmation bias.\n\n2. **Ignore Everything But Key Risk Points:** Don't get distracted by easy tasks. The high-risk assumptions aren't going away.\n\n3. **Early and Often:** Design go/no-go experiments at the earliest feasible moment.\n\n4. **Be Candid About Risk:** When presenting ideas, acknowledging risk makes your case MORE convincing, not less.\n\n5. **No Risk, No Interest:** The goal isn't zero risk—it's understood, quantified, manageable risk.\n\n6. **Risk Can Change:** Technical assumptions may improve as methods advance. Build this into your planning.\n\n7. **Compare Risk Profiles:** Evaluate multiple projects in parallel to compare risk profiles and make better choices.\n\n8. **Watch for the Ostrich Pattern:** Are you avoiding the scary experiment? That's human nature, but a critical failure mode.\n\n## Warning Signs\n\n**Warning signs include:**\n- Risk level 5 assumptions >2 years out\n- More than 3 assumptions at risk level 4-5\n- Highest-risk assumptions at the END of the timeline\n- Rationalizing why high-risk assumptions will \"probably work out\"\n- Planning to \"start with the easy stuff\" while avoiding risk tests\n- Inability to articulate clear go/no-go criteria\n\n**Good shape indicators:**\n- Highest-risk tests happen in first 6 months\n- Multiple paths to success exist\n- Clear plans for what to do if key assumptions fail\n- Risk is distributed across the timeline\n- Testing assumptions, not confirming hopes\n\n## Getting Started\n\nClaude should begin with Phase 1 by asking for:\n1. The project summary from Skill 1\n2. Project timeline expectations\n3. What concerns the user most about this project\n\nTogether, Claude and the user will build a rigorous risk assessment that dramatically improves the likelihood of success by helping avoid years of work on projects with insurmountable obstacles.\n\n---\n\n*Remember: Spending time on risk analysis is the most valuable investment a scientist can make. A well-understood risk profile enables moving forward with confidence or pivoting with clarity—both are valuable outcomes.*\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/03-optimization-function.md (Tokens: ~4134 | Category: anthropic-skill) -->\n# SKILL 3: Optimization Function Selection\n\n## Overview\nThis skill helps scientists articulate HOW their project should be evaluated and define what success means. While Skill 2 focused on likelihood of success (the X-axis), this skill focuses on impact if successful (the Y-axis). The key insight: **value is in the eye of a belief system**—the value creation framework must be explicitly stated and led with.\n\n## Core Principle\n\n**\"Pick the right optimization function.\"**\n\nDifferent types of projects should be evaluated by different metrics. A common source of conflict between trainees and PIs, or authors and referees, is a misunderstanding about which category a project falls under. The root cause is often failure to articulate evaluation criteria clearly.\n\n## The Fundamental Truth\n\nThe default state of:\n1. Every new discovery is **irrelevance**\n2. Every new technology is **non-use**\n3. Every company is **death**\n\nScientists must actively work against these defaults by choosing the right metrics and scoring well on at least one axis.\n\n## The Skill Workflow\n\n### Phase 1: Project Categorization (5 minutes)\n\nFirst, Claude should determine what type of project the user is pursuing:\n\n**Question 1: What is the primary goal?**\nA. Understand how biology works (fundamental knowledge)\nB. Enable new experiments or capabilities (tool/technology)\nC. Solve a practical problem (invention/application)\nD. Something else (please describe)\n\n**Question 2: What would \"success\" look like in 3-5 years?**\n- 1-2 sentences describing the ideal outcome\n\n**Question 3: Who cares if this succeeds?**\n- Academic researchers in the subfield?\n- Broader scientific community across fields?\n- Clinicians or practitioners?\n- Industry partners or companies?\n- General public or specific communities?\n- All of the above?\n\nBased on the answers, Claude should help identify the right optimization function.\n\n### Phase 2: Understanding the Three Main Frameworks\n\n#### Framework 1: Basic Science\n**Axes:** How much did we learn? × How general/fundamental is the object of study?\n\n**Philosophy:** A high score on EITHER axis yields substantial impact. You don't need both.\n\n**Examples:**\n- **High Generality, Medium Learning:** Ribosome stalling complex\n  - Updates understanding of translation (fundamental process)\n  - Scores well because translation is universal\n  \n- **Medium Generality, High Learning:** Oxytricha germ-line nucleus\n  - Genomic acrobatics may not be common to other organisms\n  - BUT elegant mapping scores highly on how much we learned\n  - May yield tools for genome editing (bonus)\n  \n- **High on Both Axes (Landmark):** RNA interference, biomolecular condensates\n  - These are rare—don't expect every project to be here\n  - But aim to score well on at least one axis\n\n**Key Questions:**\n- How many systems/organisms does this apply to?\n- Does it update understanding of a fundamental process?\n- Will textbooks need to be rewritten?\n- What new questions does this open?\n\n#### Framework 2: Technology Development\n**Axes:** How widely will it be used? × How critical is it for the application?\n\n**Philosophy:** Again, high score on EITHER axis is sufficient.\n\n**Examples:**\n- **Widely Used, Not Critical:** BLAST\n  - Used in countless projects\n  - Rarely THE critical tool, but enormous cumulative impact\n  \n- **Not Widely Used, Highly Critical:** Cryo-electron tomography\n  - Too complicated for broad adoption\n  - But generates stunning data that's impossible to get otherwise\n  - When you need it, nothing else works\n  \n- **High on Both Axes (Game-Changing):** \n  - GFP, CRISPR, AlphaFold (the famous ones)\n  - But also: lentiviral delivery, cell sorting, massively parallel sequencing\n  - Technologies we cannot imagine living without\n\n**Key Questions:**\n- How many labs would adopt this?\n- For what fraction of experiments is this THE enabling technology?\n- What becomes possible that wasn't before?\n- How hard is it to implement?\n\n**Critical Rule:** A tool that won't be widely used AND isn't critical for an application probably isn't worth building.\n\n#### Framework 3: Typical Invention/Application\n**Axes:** How much good? × For how many people?\n\n**Philosophy:** Useful for translational work, frugal science, global health.\n\n**Examples:**\n- Foldscope: Paper microscope accessible to millions of students globally\n- Neglected tropical disease intervention: Quality-adjusted life years per $100\n- Medical device: Number of patients who can access treatment\n\n**Key Questions:**\n- What problem does this solve?\n- How many people have this problem?\n- How much better is their life if you solve it?\n- What's the cost per person helped?\n\n### Phase 3: Selecting and Articulating Your Framework\n\nBased on your Phase 1 responses, let me help you choose:\n\n**If you selected A (fundamental knowledge):** → Basic Science Framework\n**If you selected B (enable experiments):** → Technology Development Framework  \n**If you selected C (solve practical problem):** → Invention Framework\n\n**Now, let's be explicit:**\n\n1. **State Your Framework:** \"This project should be evaluated as [basic science/technology development/invention].\"\n\n2. **Define Your Axes:** \n   - X-axis measures: [specific metric]\n   - Y-axis measures: [specific metric]\n\n3. **Make Your Case:**\n   - X-axis score (Low/Medium/High): [Your assessment + reasoning]\n   - Y-axis score (Low/Medium/High): [Your assessment + reasoning]\n\n4. **Threshold Check:** \n   - Do you score at least MEDIUM-HIGH on one axis?\n   - If both are LOW-MEDIUM, you have a problem\n\n### Phase 4: Alternative or Custom Metrics\n\nSometimes standard frameworks don't fit. Examples where custom metrics work:\n\n**Alternative Metric Examples:**\n- **Frugal Science:** How many children in low/middle-income countries gain access to microscopy?\n- **Neglected Disease:** Quality-adjusted life years saved per $100 invested\n- **Sustainability:** Tons of CO₂ equivalent prevented × cost-effectiveness\n- **Equity:** Reduction in disparity metric × number of people affected\n\n**When to propose alternative metrics:**\n- Your work addresses a specific underserved need\n- Standard metrics miss your core value proposition\n- You're working in an emerging area without established norms\n- Your work crosses traditional boundaries\n\n**How to propose alternative metrics:**\n1. Explain why standard metrics are insufficient\n2. Define your proposed metric clearly\n3. Provide a value creation index (two axes)\n4. Show how your project scores on these axes\n\n### Phase 5: Comparative Assessment\n\nEven if absolute impact is hard to estimate, comparative assessment is valuable:\n\n**Exercise: Compare 3 Related Projects**\n\nFor your project and two alternatives (either from literature or hypothetical):\n\n| Project | Framework | X-Axis Score | Y-Axis Score | Overall |\n|---------|-----------|--------------|--------------|---------|\n| Yours | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 1 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n| Alt 2 | [Type] | [L/M/H] + reasoning | [L/M/H] + reasoning | [Assessment] |\n\n**Comparative Questions:**\n- Which would be most impactful if they all work?\n- Which has the best risk-adjusted impact?\n- Are you pursuing the best option?\n- If not, why? (Sometimes there are good reasons: resources, expertise, timing)\n\n### Phase 6: Avoiding Metric Mismatch\n\n**Common Mismatches:**\n\n#### Mismatch 1: Basic Science vs. Technology Evaluation\n**Scenario:** You're doing fundamental biology, but reviewers ask \"How widely will this be used?\"\n\n**Problem:** They're evaluating basic science with technology metrics\n\n**Solution:** Explicitly frame as basic science. Lead with: \"This updates our understanding of [fundamental process], which is conserved across [many systems].\"\n\n#### Mismatch 2: Technology vs. Basic Science Evaluation\n**Scenario:** You're building a tool, but reviewers ask \"How much did we learn about biology?\"\n\n**Problem:** They're evaluating technology with basic science metrics\n\n**Solution:** Explicitly frame as technology development. Lead with: \"This enables experiments that are currently impossible, which [X] labs need for [Y] applications.\"\n\n#### Mismatch 3: Within-Category Confusion\n**Scenario:** Your basic science is specific but deep, but reviewers want broad generality\n\n**Problem:** They think both axes are required, rather than either/or\n\n**Solution:** Explicitly acknowledge: \"While this may not be universal, the depth of mechanistic insight scores highly on the learning axis.\"\n\n#### Mismatch 4: Time Horizon Mismatch\n**Scenario:** You're working on long-term fundamental research, but reviewers want immediate impact\n\n**Problem:** Different value systems about when impact should materialize\n\n**Solution:** Articulate your time horizon explicitly and provide historical examples of similar timelines\n\n### Phase 7: Value System Discussion\n\nThis is where Claude explicitly discusses the user's belief system about what matters:\n\n**Questions for Reflection:**\n\n1. **What drives the user?**\n   - Discovery and understanding?\n   - Enabling others?\n   - Solving problems?\n   - Building things?\n\n2. **What would make the user proud?**\n   - Paper in Cell/Nature/Science?\n   - Tool used by hundreds of labs?\n   - Treatment reaching patients?\n   - Opening a new field?\n\n3. **How does the user want to be remembered?**\n   - \"Discovered X\"\n   - \"Built Y that enabled Z\"\n   - \"Solved problem W\"\n   - \"Trained students who went on to...\"\n\n4. **Whose approval matters?**\n   - Specific senior scientists in the field?\n   - Broader community across fields?\n   - Practitioners who use tools?\n   - People whose lives are improved?\n\n**There are no wrong answers—but alignment matters:**\n- The project should match the user's value system\n- The evaluation framework should match the project type\n- Communication should lead with the framework\n\n### Phase 8: Literature Benchmarking\n\nClaude should use PubMed to benchmark impact in the user's area:\n\n**Searches should include:**\n\n1. **Impact Exemplars:** Papers the user considers high-impact in the field\n   - What framework did they use (implicitly or explicitly)?\n   - How did they score on the axes?\n   - What made them successful?\n\n2. **Analogous Projects:** Similar approaches or systems\n   - How were they evaluated?\n   - What impact did they achieve?\n   - What can be learned from their framing?\n\n3. **Field Expectations:** What's typical for the area?\n   - Are basic science papers common?\n   - Is technology development valued?\n   - What level of impact is \"good enough\"?\n\n**Questions to ask the user:**\n- What papers should be analyzed as benchmarks?\n- What search terms capture the field's impact exemplars?\n- Are there specific journals or authors whose framing to emulate?\n\n### Phase 9: Communication Strategy\n\nOnce the framework is selected, here's how to lead with it:\n\n#### In Talks:\n**Opening Frame (within first 2 slides):**\n- \"The goal of this work is to understand [fundamental process X] in [general system Y]\" → Basic science\n- \"We're developing a technology that will enable [critical experiment X] for [community Y]\" → Technology\n- \"This invention addresses [problem X] affecting [N] people\" → Application\n\n#### In Papers:\n**Abstract Structure:**\n- State your framework implicitly through word choice\n- Basic science: \"reveals,\" \"demonstrates,\" \"shows that\"\n- Technology: \"enables,\" \"provides,\" \"makes it possible to\"\n- Application: \"solves,\" \"addresses,\" \"improves\"\n\n#### In Grants:\n**Broader Impact Section:**\n- Explicitly name your evaluation framework\n- Provide the two-axis assessment\n- Score yourself on each axis with evidence\n\n#### With Your PI/Committee:\n**Alignment Conversation:**\n- \"I want to make sure we're aligned on how this should be evaluated\"\n- \"I see this as [framework], scoring [X] on [axis 1] and [Y] on [axis 2]\"\n- \"Do you agree, or do you see it differently?\"\n- \"This matters because...\" [explain downstream implications]\n\n## Output Deliverable\n\nClaude should produce a **2-page Impact Assessment Document**:\n\n### Page 1: Framework and Scoring\n\n#### Project Categorization:\n- **Type:** Basic Science / Technology Development / Invention / Custom\n- **Rationale:** [Why this categorization fits]\n\n#### Optimization Function:\n- **X-Axis:** [Metric name and definition]\n- **Y-Axis:** [Metric name and definition]\n- **Custom Rationale (if applicable):** [Why standard metrics don't fit]\n\n#### Self-Assessment:\n\n**X-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Y-Axis Score: [Low/Medium/High]**\n- Evidence: [Specific reasons for this score]\n- Examples: [Comparable projects or benchmarks]\n- PubMed Support: [Key papers that inform assessment]\n\n**Overall Assessment:**\n- Score on at least one axis: ☑ Yes / ☐ No\n- Strong justification: ☑ Yes / ☐ No\n- Aligned with your values: ☑ Yes / ☐ No\n\n#### Visual Framework:\n```\n         [Your Project Type]\n              \nY-Axis    |           ★ Your Project\n[Metric]  |         /\n          |       /\n          |     /\n          |   /\n          |_________________\n              X-Axis [Metric]\n              \n★ = Your project\nReference projects plotted for context\n```\n\n### Page 2: Communication and Alignment\n\n#### Value System Alignment:\n- **What Drives You:** [Discovery/Enabling/Problem-solving/Building]\n- **Success Definition:** [What would make this worthwhile]\n- **Approval Sources:** [Whose opinion matters and why]\n- **Framework Fit:** [How project aligns with values]\n\n#### Potential Mismatches to Avoid:\n1. [Specific mismatch type]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n2. [Another mismatch]\n   - Scenario: [When this might happen]\n   - Prevention: [How to frame to avoid it]\n\n#### Communication Strategy:\n\n**For Talks:**\n- Opening frame: [Exact language to use in first 2 slides]\n- Key phrases: [Vocabulary that signals your framework]\n\n**For Papers:**\n- Abstract structure: [Framework-appropriate language]\n- Impact statement: [How to articulate in discussion]\n\n**For Grants:**\n- Broader impact: [How to score yourself explicitly]\n- Justification: [Evidence for scores]\n\n**For Mentors:**\n- Alignment question: [Exact question to ask]\n- Your perspective: [How you see it]\n- Discussion points: [What matters for alignment]\n\n#### Comparative Analysis:\n\n| Project | Type | X-Score | Y-Score | Notes |\n|---------|------|---------|---------|-------|\n| Yours | [Type] | [L/M/H] | [L/M/H] | [Key strengths] |\n| Benchmark 1 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Benchmark 2 | [Type] | [L/M/H] | [L/M/H] | [What you can learn] |\n| Alternative | [Type] | [L/M/H] | [L/M/H] | [Why not pursuing] |\n\n#### Action Items:\n1. [Specific step to strengthen X-axis score or argument]\n2. [Specific step to strengthen Y-axis score or argument]\n3. [Communication alignment with key stakeholders]\n\n## Practical Examples\n\n### Example 1: Ribosome Stalling (Basic Science)\n- **Framework:** Basic science\n- **X-Axis (Generality):** HIGH—translation is universal\n- **Y-Axis (Learning):** MEDIUM—mechanism of one quality control system\n- **Assessment:** High on generality alone = substantial impact\n- **Communication:** \"Updates our understanding of translation quality control\"\n\n### Example 2: BLAST (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** VERY HIGH—used by virtually all molecular biologists\n- **Y-Axis (Critical):** LOW-MEDIUM—helpful but rarely essential\n- **Assessment:** Extreme breadth of use = enormous cumulative impact\n- **Communication:** \"Enables rapid sequence comparison across all biological databases\"\n\n### Example 3: Cryo-EM Tomography (Technology)\n- **Framework:** Technology development\n- **X-Axis (Widely Used):** LOW—complex, expensive, specialized\n- **Y-Axis (Critical):** VERY HIGH—generates impossible-to-get-otherwise data\n- **Assessment:** Extreme criticality for niche = high impact\n- **Communication:** \"Enables 3D visualization of molecular machines in native cellular context\"\n\n### Example 4: Foldscope (Invention)\n- **Framework:** Invention (custom metric)\n- **X-Axis (Good):** MEDIUM—functional microscopy\n- **Y-Axis (People):** VERY HIGH—millions of students globally\n- **Assessment:** Massive reach × modest utility = transformative for education\n- **Communication:** \"Democratizes microscopy for global education\"\n\n## Key Principles to Remember\n\n1. **Value Is in the Eye of a Belief System:** Make yours explicit.\n\n2. **Lead with Your Metric:** Don't assume others share your framework.\n\n3. **Either Axis Suffices:** You don't need both—just score well on one.\n\n4. **Articulate Early:** Discuss with mentors before you're 2 years in.\n\n5. **Avoid Default State:** Work actively against irrelevance/non-use.\n\n6. **Compare, Don't Absolute:** Even rough comparison beats ignoring impact.\n\n7. **Align Communication:** Your words should signal your framework.\n\n8. **Match Project to Values:** Life is too short for misaligned work.\n\n## Warning Signs\n\n**Warning signs include:**\n- Inability to articulate which framework applies\n- Scoring LOW on both axes\n- Project type and evaluation framework don't match\n- User and PI have different frameworks but haven't discussed it\n- Using basic science metrics for a tool or vice versa\n- Never explicitly discussing impact assessment\n\n**Good shape indicators:**\n- Clear statement of optimization function\n- MEDIUM-HIGH score on at least one axis\n- Framework matches project type\n- Alignment with key stakeholders\n- Communication signals framework clearly\n- Benchmarking against comparable work\n\n## Getting Started\n\nClaude should begin Phase 1 by asking:\n1. What is the primary goal? (A/B/C/D)\n2. What would success look like in 3-5 years?\n3. Who cares if this succeeds?\n\nTogether, Claude and the user will select the right optimization function and position the work for maximum impact.\n\n---\n\n*Remember: Impact assessment isn't about ego—it's about ensuring work matters in the way the scientist wants it to matter. Explicit framing prevents years of misalignment.*\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/04-parameter-strategy.md (Tokens: ~3444 | Category: anthropic-skill) -->\n# SKILL 4: Parameter Fixation Strategy\n\n## Overview\nThis skill helps scientists strategically decide which parameters to fix and which to keep flexible in their project. The paradox: too many fixed parameters creates brittleness, but too few causes paralysis. The key is fixing ONE parameter thoughtfully and letting others float—constraints engender creativity.\n\n## Core Principle\n\n**\"Fix one parameter; let the others float.\"**\n\nMost failure modes in ideation involve fixing too many parameters at the outset (system + method + application). Conversely, statements like \"I want to do impactful work in cell engineering\" are so broad they cause paralysis. The sweet spot: fix one meaningful constraint and let creativity flow within that boundary.\n\n## What Are Project Parameters?\n\nParameters are the choices that define your project:\n\n**Common Parameters:**\n- **System:** Which organism/cell type/tissue/molecule?\n- **Question:** What biological phenomenon to study?\n- **Tool/Method:** Which experimental approach?\n- **Application:** What practical use or goal?\n- **Output:** What form will results take?\n- **Collaborators:** Who will you work with?\n- **Timeline:** How fast must you move?\n- **Resources:** What's available/necessary?\n\n## The Skill Workflow\n\n### Phase 1: Parameter Inventory (10 minutes)\n\nFirst, let's identify what's already fixed in your current project idea:\n\n**Question 1: List your project parameters**\n\nFor each category, indicate if it's **FIXED** (must stay) or **FLOATING** (could change):\n\n| Parameter Type | Your Choice | Status (F/FL) | Why Fixed? |\n|----------------|-------------|---------------|------------|\n| **System** | [organism/cell/tissue] | F / FL | [reason] |\n| **Question** | [biological phenomenon] | F / FL | [reason] |\n| **Tool/Method** | [techniques] | F / FL | [reason] |\n| **Application** | [use case/goal] | F / FL | [reason] |\n| **Timeline** | [duration] | F / FL | [reason] |\n| **Resources** | [equipment/funding] | F / FL | [reason] |\n\n**Question 2: Count your fixed parameters**\n- How many did you mark as FIXED? _____\n- If >2, you may have over-constrained the problem\n\n**Question 3: Why are they fixed?**\nFor each fixed parameter, is it because:\nA. Your expertise/passion\nB. Lab resources/capabilities  \nC. Advisor requirements\nD. You think it's the \"best\" solution\nE. Historical accident (you started this way)\n\n### Phase 2: The GLP-1 Example (Case Study)\n\nLet's learn from a concrete example:\n\n**Proposed Project:** Engineer a T cell to produce GLP-1 (glucagon-like peptide-1) for continuous supply.\n\n**Analysis: What's Fixed?**\n1. Improving GLP-1 receptor agonist delivery characteristics (the problem)\n2. Using an engineered T cell (the solution)\n\n**Problem:** Two parameters fixed = poor technique-application match\n\n**Alternative Framings:**\n\n**If you fix Parameter 1 (GLP-1 delivery):**\n- Let the solution float\n- Better options: peptide engineering for extended half-life, oral peptides, small molecules, B cells (better protein secretion)\n- Why T cell is suboptimal: Not designed for protein secretion\n- **Best for:** Trainee in metabolism lab who cares about GLP-1\n\n**If you fix Parameter 2 (Engineered T cell):**\n- Let the application float\n- Better options: local-acting peptides (cytokines, chemokines, growth factors) for oncology/autoimmunity/regeneration\n- Why GLP-1 is suboptimal: Doesn't leverage T cell's natural capabilities\n- **Best for:** Trainee in immunology/cell engineering lab\n\n**Key Insight:** Which parameter you fix depends on YOUR interests and your lab's expertise. Both can lead to great projects, but they're DIFFERENT projects.\n\n### Phase 3: Diagnostic Questions\n\n**The Goldilocks Test:**\n\n**Too Many Fixed Parameters (>2):**\n- Are you forcing a technique-application match?\n- If one assumption fails, does everything fail?\n- Are you more attached to HOW than WHAT?\n- Does your project sound like: \"Use X to do Y in Z\"?\n\n**Too Few Fixed Parameters (0-1 very broad):**\n- Do you feel paralyzed where to start?\n- Is your statement super generic? (\"Do impactful work in...\")\n- Are you avoiding commitment?\n- Do you have decision fatigue?\n\n**Just Right (1-2 well-chosen):**\n- Do you have creative constraints?\n- Can you articulate why THIS constraint matters?\n- If one approach fails, do alternatives exist?\n- Does the constraint energize you?\n\n### Phase 4: The Illumina Example (Constraints Drive Innovation)\n\n**Historical Context:** Next-generation sequencing wasn't designed; we got Illumina's approach (many short reads).\n\n**Initial Constraint:** Short reads seemed like a limitation\n- Not what we would have \"asked for\"\n- Seemed inferior to long reads\n\n**Innovation Unleashed:**\n- Computational methods (assembly algorithms)\n- Novel applications (RNA-seq, ChIP-seq, ATAC-seq)\n- Unexpected uses (protein folding via sequencing)\n- Biochemical creativity to work within constraints\n\n**Lesson:** Constraints don't limit creativity—they focus it. If you feel stuck, fix ONE parameter and watch resourcefulness emerge.\n\n### Phase 5: Which Parameter Should You Fix?\n\n**Strategic Questions to Identify the Right Fixed Parameter:**\n\n1. **What can you prototype quickly?**\n   - What test article could you build rapidly?\n   - Which experimental conditions enable early go/no-go?\n   - What gives you fastest feedback?\n\n2. **What are people around you unusually good at?**\n   - Lab expertise?\n   - Core facility capabilities?\n   - Collaborator strengths?\n   - Your unique skill combination?\n\n3. **What do you enjoy so much you don't think of it as work?**\n   - System you're passionate about?\n   - Technique you love?\n   - Type of question that excites you?\n\n4. **What's your competitive advantage?**\n   - Unique resource access?\n   - Rare skill combination?\n   - Proprietary data/reagents?\n   - First-mover opportunity?\n\n**Common Strategic Choices:**\n\n**Fix the System (Let question & tool float):**\n- Good if: You're an expert in the organism/tissue/cell type\n- Enables: Asking multiple questions, trying various tools\n- Example: \"I study *Drosophila* neural development; I'll let the specific questions and methods emerge\"\n\n**Fix the Question (Let system & tool float):**\n- Good if: You care deeply about a biological phenomenon\n- Enables: Testing across systems, using best tool for each\n- Example: \"I want to understand phase separation; I'll study it wherever it's clearest\"\n\n**Fix the Tool (Let system & question float):**\n- Good if: You're developing or mastering a technology\n- Enables: Finding best applications, comparing across systems\n- Example: \"I'm building a new microscopy method; I'll find the most impactful uses\"\n\n**Fix the Application (Let system & tool float):**\n- Good if: You have a specific translational goal\n- Enables: Trying multiple approaches, testing in different models\n- Example: \"I want to treat disease X; I'm open to any validated approach\"\n\n### Phase 6: Parameter Flexibility Matrix\n\nFor your project, let's create a flexibility assessment:\n\n| Parameter | Currently | Should Be? | If Problem Arises, Could This Float? |\n|-----------|-----------|------------|--------------------------------------|\n| System | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Question | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Tool | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Application | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Timeline | [F/FL] | [F/FL] | Yes / No / Maybe |\n| Resources | [F/FL] | [F/FL] | Yes / No / Maybe |\n\n**Analysis:**\n- **Flexibility Score:** How many \"Yes\" or \"Maybe\"? _____\n- **Risk Assessment:** If <3 can float, you're brittle\n- **Pivot Potential:** Which parameters provide escape routes?\n\n### Phase 7: Scenario Planning\n\nFor each fixed parameter, let's plan what happens if it becomes untenable:\n\n**Fixed Parameter 1: [Name it]**\n- **Why it's fixed:** [Your reason]\n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n**Fixed Parameter 2: [Name it]**\n- **Why it's fixed:** [Your reason]  \n- **Risk if this fails:** [What breaks]\n- **Contingency:** [What could you float instead]\n- **Alternative project:** [If you fixed something else]\n\n### Phase 8: The Unfixing Exercise\n\nSometimes you need to unfix parameters to escape a rut:\n\n**Current State:** [Describe your over-constrained project]\n\n**Unfixing Experiment:**\n\n**Try 1: Unfix the System**\n- Keep question & tool\n- What other systems could you study?\n- Which would be easier/faster/more informative?\n\n**Try 2: Unfix the Tool**\n- Keep system & question\n- What other methods exist?\n- Which are more mature/accessible/powerful?\n\n**Try 3: Unfix the Question**\n- Keep system & tool\n- What other questions could you ask?\n- Which would be more impactful/feasible?\n\n**Evaluation:** Does any \"unfixed\" version seem better than your original? If yes, you over-constrained.\n\n### Phase 9: Literature Reality Check\n\nLet's use PubMed to see how others handled parameter fixation:\n\n**Search 1: Successful projects in your area**\n- What did they fix?\n- What did they let float?\n- Did they pivot from their initial parameter choices?\n\n**Search 2: Failed or stalled projects**\n- (Often in discussion sections or preprints)\n- Did they over-constrain?\n- What parameters trapped them?\n\n**Search 3: Method papers**\n- How did technology developers choose applications?\n- Did they fix the tool and let applications emerge?\n\n**Your Searches:**\nWhat specific papers should we analyze for parameter lessons?\n\n## Output Deliverable\n\n**2-Page Parameter Strategy Document**\n\n### Page 1: Current State and Analysis\n\n#### Parameter Inventory:\n| Parameter | Current Status | Strategic Rationale | Flexibility |\n|-----------|----------------|---------------------|-------------|\n| System | Fixed: [X] | [Why] | Can float if: [condition] |\n| Question | Floating: [Y,Z] | [Why] | Constrained by: [X] |\n| Tool | [Status] | [Why] | [Contingency] |\n| Application | [Status] | [Why] | [Contingency] |\n\n#### Diagnostic Summary:\n- **Fixed Parameters:** [Count and list]\n- **Assessment:** ☐ Too Many (>2) / ☐ Just Right (1-2) / ☐ Too Few (0, too broad)\n- **Primary Fixed Parameter:** [The one that matters most]\n- **Reason for Fixation:** [Expertise/Passion/Resources/Other]\n\n#### Goldilocks Test Results:\n- Over-constrained indicators: [Yes/No to each test]\n- Under-constrained indicators: [Yes/No to each test]\n- Verdict: [Analysis]\n\n### Page 2: Strategy and Contingencies\n\n#### Recommended Parameter Strategy:\n\n**Core Fixed Parameter:** [The one to keep]\n- **Rationale:** [Why this one]\n- **Your advantage:** [Expertise/access/passion]\n- **Enables:** [What becomes possible]\n\n**Parameters That Should Float:** [List]\n- [Parameter 1]: [How to explore alternatives]\n- [Parameter 2]: [How to explore alternatives]\n\n#### If Core Assumptions Fail:\n\n**Scenario 1: [Specific failure mode]**\n- **Unfix:** [Which parameter to let float]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n**Scenario 2: [Another failure mode]**\n- **Unfix:** [Which parameter]\n- **Alternative 1:** [New configuration]\n- **Alternative 2:** [Another option]\n\n#### Project Ensemble:\n```\nCore Fixed: [X]\n\nPossible Projects:\n1. [X] + [A] + [B1] → [Outcome]\n2. [X] + [A] + [B2] → [Outcome]\n3. [X] + [C] + [B1] → [Outcome]\n\nAll share [X], but float other parameters\n```\n\n#### Strategic Questions Answered:\n1. **Quick prototype:** [How to test quickly]\n2. **Team strengths:** [Who's good at what]\n3. **Your passion:** [What energizes you]\n4. **Competitive advantage:** [Your edge]\n\n#### Historical Parallel:\n[Example like Illumina where constraints drove innovation in your field]\n- The constraint: [What seemed limiting]\n- The innovation: [How people worked within it]\n- Your application: [How this applies to your project]\n\n## Practical Examples\n\n### Example 1: GLP-1 T Cell Project (Over-Constrained)\n- **Fixed:** GLP-1 delivery + T cell engineering\n- **Problem:** Poor technique-application match\n- **Solution:** Unfix one parameter\n  - Fix delivery, float cell type → Better options emerge\n  - Fix T cell, float payload → Better applications emerge\n\n### Example 2: Drosophila Neurobiologist (Well-Constrained)\n- **Fixed:** *Drosophila* nervous system\n- **Floating:** Specific questions, methods\n- **Works because:** Deep system expertise, many tools available\n- **Enables:** Pursuing most impactful questions as field evolves\n\n### Example 3: \"Impactful Cell Engineering\" (Under-Constrained)\n- **Fixed:** Nothing specific\n- **Problem:** Paralysis from too many options\n- **Solution:** Fix one meaningful constraint\n  - Option A: Fix CAR-T platform → Find best applications\n  - Option B: Fix autoimmune disease → Find best cell engineering approach\n  - Option C: Fix specific rare disease → Let methods emerge\n\n## Key Principles to Remember\n\n1. **Constraints Engender Creativity:** Limitations focus resourcefulness\n\n2. **One Parameter Rule:** Fix one meaningful constraint, let others float\n\n3. **Match to Your Strengths:** Fix the parameter you have advantage in\n\n4. **Technique-Application Match:** Don't force tools into wrong problems\n\n5. **Flexibility = Resilience:** Floating parameters provide pivot options\n\n6. **Historical Lesson:** Best technologies emerged from working within constraints (Illumina)\n\n7. **Not Forever:** Parameters can unfix mid-project when stuck\n\n## Warning Signs\n\n**Over-Constrained (Too Many Fixed):**\n- Project sounds like: \"Use X to study Y in Z\"\n- When one assumption fails, everything fails\n- You're attached to HOW more than WHAT\n- Forcing a technique-application match\n\n**Under-Constrained (Too Few/Vague):**\n- Statement is incredibly broad (\"impactful work in...\")\n- Feeling paralyzed about where to start\n- Avoiding commitment due to infinite options\n- No clear next experimental step\n\n**Well-Constrained:**\n- One clear fixed parameter with good rationale\n- Multiple paths within that constraint\n- Energized by the focused challenge\n- If one approach fails, alternatives exist\n\n## Ready to Begin?\n\nLet's start with Phase 1. Please provide:\n1. Your current project description\n2. List of what you think is fixed vs. floating\n3. Your lab's core expertise\n4. What aspect excites you most\n\nTogether we'll optimize your parameter strategy for maximum creativity and resilience.\n\n---\n\n*Remember: The right constraint is liberating, not limiting. It channels creativity into productive directions while maintaining flexibility for pivots.*\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/05-decision-tree.md (Tokens: ~760 | Category: anthropic-skill) -->\n# SKILL 5: Decision Tree Navigation (\"The Altitude Dance\")\n\n## Overview\nThis skill teaches you to move fluidly between execution (Level 1: getting stuff done) and strategic evaluation (Level 2: critical thinking). Projects rarely unfold linearly—they require frequent course correction. Most trainees should spend MORE time on their project's decision tree.\n\n## Core Principle\n**\"Learn the altitude dance\"**\n\nMove back and forth frequently between:\n- **Level 1:** Full immersion in experimental details or coding\n- **Level 2:** Step back, clear your head, evaluate as if someone else did the work\n\nThese cannot be done simultaneously. The key to navigating a project's decision tree is alternating between these levels deliberately.\n\n## Key Concepts\n\n**Why Decision Trees Matter:**\nOnce you're in a project, the landscape changes:\n- You've learned from initial experiments\n- New papers have been published\n- Technology has advanced\n- Your assumptions have been tested\n\nAt any decision point, you should rarely follow your plan from 2 years ago—there will be a better alternative.\n\n**The Altitude Levels:**\n- **Level 1 (Ground Level):** Doing the work, troubleshooting, optimizing\n- **Level 2 (Strategic Altitude):** What did we learn? What should we do next?\n- **Level 3 (Field Altitude):** How does this fit in the broader landscape?\n- **Level 4 (Career Altitude):** Is this the right use of my finite time?\n\n**Common Failure Modes:**\n1. **Stuck in Level 1:** Troubleshooting endlessly without reassessing the plan\n2. **Only Level 2:** Brilliant strategist but never rolls up sleeves\n3. **No rhythm:** Switching randomly instead of deliberately\n\n## Workflow\n\n### Phase 1: Map Your Decision Tree\n\nFor your project, identify:\n1. **Initial plan:** What was the intended path?\n2. **Branch points:** Where might alternative paths emerge?\n3. **Decision criteria:** What determines which branch to take?\n4. **New information:** What could change the landscape?\n\n### Phase 2: Establish Your Rhythm\n\n**Recommended Schedule:**\n- **Daily:** Level 1 work (experiments, coding, analysis)\n- **Weekly:** Level 2 evaluation (1-2 hours, ideally Friday afternoon)\n- **Monthly:** Level 3 field review (read new papers, attend seminars)\n- **Quarterly:** Level 4 career check-in (with mentor)\n\n**Level 2 Weekly Protocol:**\n1. Clear your head (walk, coffee, change of scene)\n2. Review what happened this week\n3. Ask: What did we learn?\n4. Ask: What should happen next?\n5. Update decision tree\n6. Plan next week's Level 1 work\n\n### Phase 3: Decision Points\n\nAt each major branch point:\n\n**Example: Genetic Screen Hits Wall**\n\nInstead of endless troubleshooting:\n- **Alternative 1:** Redo computational analysis with larger genome dataset\n- **Alternative 2:** Use AlphaFold models to search for similar folds\n- **Alternative 3:** Print and test larger candidate set (DNA synthesis cheaper now)\n\n**Framework:**\n1. **Acknowledge the stuck point**\n2. **Step to Level 2:** Evaluate with fresh eyes\n3. **Consider: What's newly possible?** (technology, knowledge)\n4. **Generate 3 alternatives**\n5. **Decide:** Troubleshoot more vs. pursue alternative\n\n## Output: Decision Tree Map\n- Visual map of your project's decision points\n- Update frequency schedule\n- Criteria for each branch point\n- Protocol for getting unstuck\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/06-adversity-planning.md (Tokens: ~1098 | Category: anthropic-skill) -->\n# SKILL 6: Adversity Response Planning (\"The Adversity Feature\")\n\n## Overview\nThis skill helps you prepare for inevitable crises and reframe them as opportunities. The term \"adversity feature\" (like a \"rock garden\" on a mountain bike trail) captures the mindset: adversity is not an obstacle—it's an opportunity to develop skill and improve your project.\n\n## Core Principle\n**\"Capitalize on the 'adversity feature'\"**\n\nAdversity in a project is inevitable AND opportune:\n- **Inevitable:** Almost every project suffers existential crisis or sharp turn\n- **Opportune:** Two valuable outcomes possible:\n  1. Fix the problem AND upgrade the project simultaneously\n  2. Develop reasoning-your-way-out skills (best growth opportunity)\n\n## Key Concepts\n\n**Why Adversity Is Inevitable:**\n- Technology doesn't work as advertised\n- Biological assumptions prove false\n- You get scooped\n- Key collaborator leaves\n- Funding runs out\n- Results don't support hypothesis\n\n**Why Adversity Is Opportune:**\n- Forces you to think deeply about alternatives\n- Removes sunk-cost bias (path is blocked anyway)\n- Often leads to better projects than original plan\n- Develops critical problem-solving skills\n- Makes you resourceful\n\n**The Crisis Mindset:**\n- **Wrong:** \"This is a disaster that delays me\"\n- **Right:** \"This is the crisis I've been waiting for—don't waste it\"\n\n## Workflow\n\n### Phase 1: Anticipate Failure Modes\n\nFor your project, list likely adversity scenarios:\n1. **Technical failures:** Method doesn't work, signal too low, etc.\n2. **Biological surprises:** System behaves unexpectedly\n3. **Competition:** Someone scoops you\n4. **Resource issues:** Funding, equipment, access\n5. **Timeline pressures:** Takes longer than expected\n\nFor each, rate:\n- Likelihood (Low/Medium/High)\n- Impact if it happens (Low/Medium/High)\n- When it might surface (early/mid/late)\n\n### Phase 2: Upgrade Opportunities\n\nFor each high-likelihood or high-impact failure mode:\n\n**Question 1: How could you fix this AND make the project better?**\nNot just: \"Get it working\"\nInstead: \"Use this as opportunity to improve the approach\"\n\n**Example: Your Cell Type Can't Be Isolated**\n- Fix: Develop new isolation method\n- Upgrade: Make method work for whole class of cell types\n- Result: Better project (technology paper) + original biology\n\n**Question 2: What skill would you develop by solving this?**\n- Computational: Learn new analysis method\n- Technical: Master challenging technique\n- Conceptual: Reason through biological complexity\n\n### Phase 3: The Ensemble View\n\n**Critical Insight:** You're not picking ONE project path—you're picking an ENSEMBLE of possible projects that share core elements.\n\n**Your Project Ensemble:**\n```\nCore Theme: [What stays constant]\n\nPath 1: [Original plan]\nPath 2: [If assumption A fails]\nPath 3: [If technical barrier B encountered]\nPath 4: [If scooped on C]\n\nAll paths lead to impactful results, just different ones\n```\n\nThis reframing is liberating: when adversity strikes, you're not failing—you're discovering which path in the ensemble you're actually on.\n\n### Phase 4: Historical Examples\n\n**Example 1: PROTAC Discovery**\n- **Original Plan:** Create molecules to degrade specific kinase\n- **Crisis:** Didn't work for intended target\n- **Upgrade:** Test across kinome systematically\n- **Result:** Better project (mapped degradable kinome, discovered that target engagement ≠ degradation)\n- **Impact:** More influential than if original plan succeeded\n\n**Example 2: Steroid Receptor Study**\n- **Original Plan:** Identify THE receptor for a steroid\n- **Crisis:** Binds multiple receptors at different affinities\n- **Upgrade:** Reframe question: How does finite receptor pool sense infinite lipids?\n- **Result:** Combinatorial sensing model (like piano chords)\n- **Impact:** More interesting than \"receptor X binds steroid Y\"\n\n## Output: Adversity Playbook\n\n**Page 1: Anticipated Crises**\n| Crisis | Likelihood | Impact | Timeline | Growth Opportunity |\n|--------|-----------|--------|----------|-------------------|\n| [Crisis 1] | H/M/L | H/M/L | Early/Mid/Late | [Skill developed] |\n\n**Page 2: Upgrade Strategies**\nFor each high-priority crisis:\n- **The Crisis:** [Description]\n- **Fix Strategy:** [How to solve it]\n- **Upgrade Strategy:** [How to make project better while fixing]\n- **Alternative Path:** [New direction if fix doesn't work]\n- **Ensemble Position:** [How this fits in project family]\n\n**Page 3: Resilience Rituals**\n- **Weekly check-in:** Review what went wrong, what was learned\n- **Monthly ensemble review:** Update the family of possible projects\n- **Crisis protocol:** When major setback hits, take 2 days to think before acting\n- **Growth tracking:** Document skills developed through adversity\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/07-problem-inversion.md (Tokens: ~1359 | Category: anthropic-skill) -->\n# SKILL 7: Problem Inversion Strategies (\"Turn It On Its Head\")\n\n## Overview\nThis skill provides three concrete strategies for navigating around obstacles by reframing problems. When stuck, instead of pushing harder on the current approach, try inverting the problem.\n\n## Core Principle\n**\"Turn a problem on its head\"**\n\nThree powerful strategies:\n1. **Unfix parameters** (covered in Skill 4, applied here in crisis)\n2. **Don't achieve goal A? Achieve comparable goal B**\n3. **\"I have the answer; what is the question?\"**\n\n## Strategy 1: Unfix Parameters (In Crisis Mode)\n\n**When to Use:** Run-of-the-mill issues in project execution\n\n**Approach:** Let a \"sacred\" fixed parameter float\n\n**Example from Lecture:**\n- **Stuck:** Spatial transcriptomics of APC-T cell interactions in tumor microenvironment\n- **All fixed:** Technique, cell types, context\n- **Inversion:**\n  - Unfix technique → What else could measure these interactions?\n  - Unfix cell types → What other interactions matter in tumors?\n  - Unfix context → Where else do APC-T interactions matter?\n\n**Your Application:**\nFor each fixed parameter in your project:\n- What if this floated?\n- What alternatives exist?\n- Which would be easier/faster/more informative?\n\n## Strategy 2: Comparable Goal Substitution\n\n**When to Use:** Existential threats to project (can't achieve original goal)\n\n**Approach:** Achieve a different but equally valuable goal\n\n**Mindset Shift:**\n- **Wrong:** \"I failed to do X\"\n- **Right:** \"The world needs Y instead, which I CAN do\"\n\n**Example from Lectures: PROTAC Story**\n- **Goal A (Failed):** Degrade specific therapeutic target\n- **Goal B (Achieved):** Map which kinases ARE degradable\n- **Value:** B is more impactful (general principle + method validation)\n- **Learning:** Target engagement ≠ degradation (important discovery)\n\n**Framework:**\n1. **Original goal:** [What you wanted]\n2. **Why it failed:** [Specific reason]\n3. **What CAN you do with current data/tools:** [Capabilities]\n4. **Comparable goals:**\n   - Option 1: [Different but related goal]\n   - Option 2: [Another alternative]\n   - Option 3: [Yet another]\n5. **Which is most valuable:** [Analysis]\n6. **How to frame it:** [Communication strategy]\n\n## Strategy 3: Answer Seeking Question\n\n**When to Use:** End-of-project challenges (interpretation, framing, application)\n\n**Approach:** You got an answer, but not to your original question. What question DOES your data answer?\n\n**Mindset Shift:**\n- **Wrong:** \"This doesn't answer my question\"\n- **Right:** \"What interesting question does this answer?\"\n\n**Example from Lectures: Steroid Receptor**\n- **Original Question:** What is THE receptor for this steroid?\n- **Answer Obtained:** Binds multiple receptors at different affinities\n- **Problem:** Can't answer original question (no single receptor)\n- **Inversion:** \"What question does this answer?\"\n- **New Question:** How does finite receptor pool sense infinite lipids?\n- **Answer:** Combinatorial sensing (pattern = unique \"chord\")\n- **Impact:** More interesting than intended finding\n\n**Framework:**\n1. **Original question:** [What you asked]\n2. **Data obtained:** [What you actually found]\n3. **Why it doesn't answer:** [The mismatch]\n4. **What DOES the data show clearly:** [Solid findings]\n5. **What questions could these answer:**\n   - Question 1: [Option]\n   - Question 2: [Option]\n   - Question 3: [Option]\n6. **Which is most interesting:** [Assessment]\n7. **How to reframe paper/project:** [New framing]\n\n## Workflow\n\n### Phase 1: Identify Your Obstacle\n- **Type:** Technical / Biological / Competitive / Interpretive\n- **Severity:** Run-of-mill / Existential / End-stage\n- **Description:** [What's blocking you]\n\n### Phase 2: Select Strategy\n\n| Obstacle Type | Recommended Strategy |\n|--------------|---------------------|\n| Technical barrier, mid-project | Strategy 1 (Unfix parameters) |\n| Can't achieve original goal | Strategy 2 (Comparable goal) |\n| Have data, unclear what it means | Strategy 3 (Answer seeking question) |\n\n### Phase 3: Apply Strategy\n\nWork through the relevant framework above with your specific situation.\n\n### Phase 4: Evaluate Alternatives\n\nFor each alternative generated:\n- **Scientific value:** How interesting is this?\n- **Feasibility:** How hard to execute?\n- **Timeline:** How long will it take?\n- **Impact:** How does this compare to original plan?\n- **Your advantage:** Do you still have edge here?\n\n## Output: Problem Inversion Analysis\n\n**Page 1: Current Situation**\n- **Obstacle:** [Clear description]\n- **Why you're stuck:** [Root cause]\n- **Original plan:** [What you intended]\n- **Current capability:** [What you CAN do]\n\n**Page 2: Strategy Applications**\n\n**Strategy 1 (Unfix Parameters):**\n| Fixed Parameter | If This Floated | Alternative Approaches | Assessment |\n|----------------|-----------------|----------------------|------------|\n| [Param 1] | [Consequences] | [Options] | [Value] |\n\n**Strategy 2 (Comparable Goals):**\n| Original Goal | Why It Failed | Comparable Goal | Value Assessment |\n|--------------|---------------|----------------|------------------|\n| [Goal A] | [Reason] | [Goal B] | [Compare impact] |\n\n**Strategy 3 (Answer → Question):**\n- **Data obtained:** [What you have]\n- **Question 1 it could answer:** [Option 1]\n- **Question 2 it could answer:** [Option 2]\n- **Question 3 it could answer:** [Option 3]\n- **Most interesting:** [Selection + reasoning]\n\n**Page 3: Recommended Path**\n- **Selected strategy:** [1, 2, or 3]\n- **New direction:** [Specific plan]\n- **Why this is better:** [Not just \"it works\" but \"it's more interesting\"]\n- **Communication approach:** [How to frame this pivot]\n- **Timeline:** [New schedule]\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/08-integration-synthesis.md (Tokens: ~1270 | Category: anthropic-skill) -->\n# SKILL 8: Integration and Synthesis\n\n## Overview\nThis final individual skill synthesizes all previous skills into a coherent project plan and communication strategy. You'll create a complete package that demonstrates thoughtful problem selection and rigorous planning.\n\n## Core Principle\n**\"Tell a compelling story with your choices\"**\n\nHumans love stories. Your project should have:\n- **Setting:** Background and problem framing\n- **Problem statement:** Clear, general enough to be interesting, specific enough to be distinctive\n- **New idea/approach:** Your angle (perturbation/measurement/theory: logic vs. technology)\n- **Iteration:** Loop of \"we wondered X → did Y → found Z → interpreted as W\"\n- **Conclusion:** What we learned and/or what's now possible\n- **Passion:** Authentic enthusiasm\n\n## Workflow\n\n### Phase 1: Gather Your Skill Outputs\n\nCollect your completed documents:\n- ☐ Skill 1: Problem Ideation Document\n- ☐ Skill 2: Risk Assessment Matrix\n- ☐ Skill 3: Impact Assessment Document\n- ☐ Skill 4: Parameter Strategy Document\n- ☐ Skill 5: Decision Tree Map\n- ☐ Skill 6: Adversity Playbook\n- ☐ Skill 7: Problem Inversion Analysis (if applicable)\n\n### Phase 2: Create Narrative Arc\n\n**Story Structure for Your Project:**\n\n**1. Setting (Background)**\n- What's known in the field?\n- What's the gap or opportunity?\n- Why does this matter?\n\n**2. Problem Statement**\n- General enough: connects to broad principle\n- Specific enough: distinctive and tractable\n- Your framing from Skill 1\n\n**3. Your Approach**\n- Perturbation/Measurement/Theory\n- Logic vs. Technology\n- What's novel about your angle (from Skill 1)\n- How your optimization function shapes approach (from Skill 3)\n\n**4. Strategy**\n- Fixed vs. floating parameters (from Skill 4)\n- Decision points mapped out (from Skill 5)\n- Risk mitigation built in (from Skill 2)\n- Adversity contingencies (from Skill 6)\n\n**5. Why You**\n- Your competitive advantage\n- Lab expertise\n- Your passion and alignment\n- Timeline and resources\n\n### Phase 3: Communication Formats\n\n**Format 1: 3-Slide, 5-Minute Presentation**\n\n**Slide 1: The Opportunity**\n- Setting + Problem statement\n- One key figure or schematic\n- Why this matters (optimization function)\n\n**Slide 2: Your Approach**\n- New idea/angle\n- Key experiments or analyses\n- What makes this feasible\n- Decision tree highlights\n\n**Slide 3: Impact and Timeline**\n- What you'll learn or enable\n- Success metrics\n- Timeline with milestones\n- Your advantage\n\n**Slide Design Tips:**\n- Minimal text (bullets are fine here)\n- Strong visuals\n- Tell story, don't catalog facts\n- Passion shows through\n\n**Format 2: 1-Page Written Summary**\n\n**Paragraph 1:** Setting and problem (2-3 sentences)\n**Paragraph 2:** Your approach and novelty (3-4 sentences)\n**Paragraph 3:** Why it will work (risk mitigation, your advantage) (2-3 sentences)\n**Paragraph 4:** Impact and timeline (2-3 sentences)\n\n**Total:** ~250-300 words that could be abstract or summary\n\n**Format 3: 1-Minute Elevator Pitch**\n\n**Structure:**\n- \"I'm working on [problem] because [why it matters]\"\n- \"Current approaches are limited by [gap]\"\n- \"My angle is [approach] which is novel because [what's new]\"\n- \"This will [impact] and I have [advantage]\"\n\n**Practice until:** Natural, passionate, memorable\n\n### Phase 4: Integration Document\n\n**Complete Project Plan Integrating All Skills:**\n\n**Section 1: Problem Selection Rationale**\n- How you generated this idea (Skill 1 intuition pumps)\n- Why this problem matters (Skill 3 optimization function)\n- Your competitive advantage\n\n**Section 2: Risk Management**\n- Assumption analysis table (Skill 2)\n- Go/no-go experiments\n- Timeline with checkpoints\n- Mitigation strategies\n\n**Section 3: Execution Strategy**\n- Fixed vs. floating parameters (Skill 4)\n- Decision tree navigation plan (Skill 5)\n- Adversity response protocols (Skill 6)\n- Project ensemble (alternative paths)\n\n**Section 4: Communication Plan**\n- Presentations (3-slide deck)\n- Written summary (1-page)\n- Elevator pitch (1-minute)\n- Key messages for different audiences\n\n**Section 5: Career Alignment**\n- How this fits your trajectory\n- Skills you'll develop\n- Network you'll build\n- Next steps after this project\n\n## Output: Complete Project Package\n\n**Document 1: Integrated Project Plan (4-6 pages)**\n- All sections above\n- References to individual skill outputs\n- Timeline and milestones\n- Resource requirements\n\n**Document 2: Communication Materials**\n- 3-slide presentation\n- 1-page summary\n- Elevator pitch script\n- Talking points for different audiences\n\n**Document 3: Living Documents**\n- Decision tree (to update regularly)\n- Risk assessment (to review quarterly)\n- Adversity playbook (to consult in crisis)\n- Parameter strategy (to revisit if stuck)\n\n## Key Principles\n\n1. **Integration, Not Duplication:** Each skill output serves a purpose in the whole\n2. **Story Over Catalog:** Communicate choices, not just facts\n3. **Passion Matters:** Authentic enthusiasm is persuasive\n4. **Living Plan:** This evolves; revisit quarterly\n5. **Alignment:** Project, values, and career fit together\n6. **Preparation:** You've thought through contingencies\n7. **Communication:** You can pitch this clearly to anyone\n\n## Ready to Synthesize\n\nWith all skills complete, you now have a comprehensive, thoughtful, rigorous approach to problem selection and project planning. This is the highest-leverage work you can do in science.\n\n<!-- File: bio-research/skills/scientific-problem-selection/references/09-meta-framework.md (Tokens: ~3954 | Category: anthropic-skill) -->\n# SKILL 9: Meta-Framework - Complete Problem Selection Workflow\n\n## Overview\nThis meta-skill orchestrates the complete problem selection process, guiding users through Skills 1-8 in a systematic, iterative way. This skill should be used when comprehensive support is needed from ideation through execution planning, with integrated literature searches and coherent documentation.\n\n## When to Use This Skill\n\n**Use Skill 9 (Complete Workflow) when:**\n- Starting a new project from scratch\n- Major project pivot or reframe needed\n- Grant/fellowship application requiring systematic planning\n- Thesis committee meeting preparation\n- Startup company planning\n- Want comprehensive, documented problem selection process\n\n**Use Individual Skills when:**\n- You're at a specific stage (e.g., just need risk assessment)\n- Quick consultation on one aspect\n- Updating one component of existing plan\n- Teaching/learning one concept\n\n## The Complete Workflow\n\n### Overview of the Journey\n\n```\nSTART: Vague idea or area of interest\n    ↓\n[SKILL 1] → Problem Ideation Document\n    ↓\n[SKILL 2] → Risk Assessment Matrix\n    ↓\n[SKILL 3] → Impact Assessment Document\n    ↓\n[SKILL 4] → Parameter Strategy Document\n    ↓\n[SKILL 5] → Decision Tree Map\n    ↓\n[SKILL 6] → Adversity Playbook\n    ↓\n[SKILL 7] → Problem Inversion Analysis (if needed)\n    ↓\n[SKILL 8] → Integrated Project Plan + Communication Materials\n    ↓\nEND: Comprehensive, rigorous project ready to execute\n```\n\n**Estimated Time:**\n- **Intensive:** 1 week of focused work (full-time)\n- **Distributed:** 4-6 weeks with other commitments\n- **With iterations:** Add 50% more time\n\n**You'll invest time once to save years of potential missteps.**\n\n## Phase-by-Phase Workflow\n\n### Phase 1: Preparation (Before Starting)\n\n**Gather Your Context:**\n1. **Your background:**\n   - Research area/field\n   - Current position (grad student, postdoc, PI, etc.)\n   - Lab expertise and resources\n   - Timeline constraints\n\n2. **Your starting point:**\n   - Vague area of interest?\n   - Specific problem in mind?\n   - Must build on existing work?\n   - Starting completely fresh?\n\n3. **Your goals:**\n   - Publication target (journal tier, timeline)?\n   - Degree requirement (thesis chapter)?\n   - Funding application?\n   - Startup foundation?\n   - Career development?\n\n**Set Expectations:**\n- This process will challenge your assumptions\n- You may discover your initial idea needs major revision\n- That's the point—better to know now than after 2 years\n- Intellectual honesty is required; this only works if you're rigorous\n\n### Phase 2: Ideation (Skill 1) - ~1 week\n\n**What We'll Do:**\n1. Understand your context and constraints\n2. Work through relevant intuition pumps\n3. Avoid common ideation traps\n4. Generate 2-3 project ideas\n5. Preliminary literature search to calibrate scope\n6. Select most promising idea\n7. Create Problem Ideation Document (2 pages)\n\n**Literature Integration Point 1:**\n- Search PubMed for precedents and adjacent work\n- Assess generality of problem\n- Identify methodological advances\n- Determine competition level\n\n**Deliverable:**\n- Problem Ideation Document with core idea and initial analysis\n- List of 10-15 key papers\n- Preliminary assessment of novelty and feasibility\n\n**Checkpoint:** Do you have a clear, specific idea that excites you? If not, iterate on intuition pumps.\n\n### Phase 3: Risk Analysis (Skill 2) - ~3-5 days\n\n**What We'll Do:**\n1. Extract ALL assumptions from your idea\n2. Categorize (biological vs. technical)\n3. Score each assumption (risk 1-5, time to test)\n4. Identify high-risk late-reading assumptions\n5. Design go/no-go experiments\n6. Develop mitigation strategies\n7. Create Risk Assessment Matrix (2 pages)\n\n**Literature Integration Point 2:**\n- Search for technical precedents (has method worked before?)\n- Find biological evidence (what's known about your system?)\n- Identify benchmarks (success rates, effect sizes)\n- Assess timeline realism\n\n**Deliverable:**\n- Complete assumption analysis table\n- Top 3 high-risk assumptions with mitigation plans\n- Go/no-go experiment designs\n- Revised timeline with decision points\n\n**Checkpoint:** Is your risk profile acceptable? If risk-5 assumptions are >2 years out, return to Skill 1 to reframe.\n\n### Phase 4: Impact Assessment (Skill 3) - ~2-3 days\n\n**What We'll Do:**\n1. Categorize your project type\n2. Select appropriate optimization function\n3. Score yourself on both axes\n4. Compare to benchmarks\n5. Articulate value system alignment\n6. Develop communication strategy\n7. Create Impact Assessment Document (2 pages)\n\n**Literature Integration Point 3:**\n- Identify high-impact exemplars in your field\n- Analyze their framing and evaluation\n- Benchmark your potential impact\n- Understand field expectations\n\n**Deliverable:**\n- Clear optimization function selection\n- Self-assessment on both axes with justification\n- Comparative analysis vs. alternatives\n- Communication strategy for different audiences\n\n**Checkpoint:** Do you score MEDIUM-HIGH on at least one axis? If not, return to Skill 1 to find higher-impact angle.\n\n### Phase 5: Parameter Strategy (Skill 4) - ~2-3 days\n\n**What We'll Do:**\n1. Inventory all project parameters\n2. Identify which are fixed vs. floating\n3. Assess if you're over/under-constrained\n4. Select strategic fixed parameter\n5. Plan flexibility for contingencies\n6. Create Parameter Strategy Document (2 pages)\n\n**Literature Integration Point 4:**\n- How did successful projects handle parameters?\n- What parameter choices led to breakthroughs?\n- What over-constraints caused failures?\n\n**Deliverable:**\n- Complete parameter inventory\n- Strategic rationale for fixed/floating decisions\n- Flexibility matrix for contingencies\n- Project ensemble (family of related projects)\n\n**Checkpoint:** Have you fixed 1-2 meaningful parameters while maintaining flexibility? If too rigid, adjust.\n\n### Phase 6: Decision Tree Planning (Skill 5) - ~2 days\n\n**What We'll Do:**\n1. Map your project's decision tree\n2. Identify major branch points\n3. Set criteria for each decision\n4. Establish Level 1 / Level 2 rhythm\n5. Create protocols for getting unstuck\n6. Create Decision Tree Map (1-2 pages)\n\n**No major literature search here** (unless you identify specific decision points needing technical information)\n\n**Deliverable:**\n- Visual decision tree\n- Decision criteria at each branch\n- Schedule for Level 2 evaluations\n- Protocol for course correction\n\n**Checkpoint:** Have you planned for regular strategic evaluation, not just execution?\n\n### Phase 7: Adversity Preparation (Skill 6) - ~2 days\n\n**What We'll Do:**\n1. Anticipate likely failure modes\n2. For each, identify upgrade opportunity\n3. Map your project ensemble\n4. Create crisis response protocols\n5. Create Adversity Playbook (2-3 pages)\n\n**Literature Integration Point 5:**\n- Historical examples of productive pivots\n- How did others capitalize on adversity?\n- What second-generation projects emerged from failures?\n\n**Deliverable:**\n- Anticipated crisis catalog\n- Upgrade strategies for each\n- Project ensemble map\n- Resilience rituals and protocols\n\n**Checkpoint:** Are you prepared to see adversity as opportunity? Have you planned how to upgrade, not just fix?\n\n### Phase 8: Problem Inversion Toolkit (Skill 7) - ~1 day\n\n**What We'll Do:**\n1. Review three inversion strategies\n2. Pre-plan applications for your likely obstacles\n3. Create Problem Inversion Analysis (1-2 pages)\n\n**This is preparatory** - you may not need it now, but when crisis hits, you'll have framework ready.\n\n**Deliverable:**\n- Strategy 1 application planned\n- Strategy 2 options identified\n- Strategy 3 alternative questions brainstormed\n- Quick-reference guide for crisis\n\n**Checkpoint:** Do you have concrete strategies for inverting problems when stuck?\n\n### Phase 9: Integration and Synthesis (Skill 8) - ~3-5 days\n\n**What We'll Do:**\n1. Review all outputs from Skills 1-7\n2. Create cohesive narrative\n3. Develop communication materials:\n   - 3-slide presentation\n   - 1-page summary\n   - 1-minute elevator pitch\n4. Write integrated project plan (4-6 pages)\n5. Create living documents for ongoing use\n\n**Literature Integration Point 6:**\n- Final references for integrated plan\n- Key papers for each section\n- Communication examples from field leaders\n\n**Deliverable:**\n- Complete Integrated Project Plan (4-6 pages)\n- 3-slide presentation deck\n- 1-page written summary\n- Elevator pitch script\n- Living documents (decision tree, risk matrix, etc.)\n\n**Checkpoint:** Can you communicate your project compellingly in 1 minute, 5 minutes, and 1 page? Do all pieces fit together coherently?\n\n## Iteration and Refinement\n\n### When to Iterate\n\n**Red Flags That Require Going Back:**\n\n**From Skill 2 (Risk):**\n- Risk-5 assumptions >2 years out → Return to Skill 1 (reframe problem)\n- >3 risk-4-5 assumptions → Return to Skill 1 (simplify or change approach)\n\n**From Skill 3 (Impact):**\n- Score LOW on both axes → Return to Skill 1 (find higher-impact angle)\n- Optimization function mismatch → Return to Skill 1 (reframe problem)\n\n**From Skill 4 (Parameters):**\n- >2 fixed parameters → Return to Skill 1 (over-constrained)\n- Zero fixed parameters → Return to Skill 1 (under-constrained)\n\n**From Skills 5-6:**\n- No clear decision points → Return to Skill 4 (need more flexibility)\n- Every failure mode is existential → Return to Skill 2 (too risky)\n\n### Iteration Protocol\n\n**Major Revision Needed:**\n1. **Pause and acknowledge:** The process is working—it caught a problem\n2. **Return to indicated skill:** Usually Skill 1 or 2\n3. **Bring forward what you learned:** Don't start from scratch\n4. **Revised idea → Run through workflow again:** Faster the second time\n5. **Multiple iterations OK:** Better than years on wrong project\n\n**Minor Refinement:**\n1. **Update specific document:** E.g., adjust parameter strategy\n2. **Check downstream effects:** Does this change anything else?\n3. **Update integration document:** Keep everything coherent\n\n## Literature Integration Strategy\n\n### Overall PubMed Approach\n\n**Throughout the workflow, use PubMed strategically:**\n\n1. **Skill 1 (Ideation):** Assess generality, find precedents, gauge competition\n2. **Skill 2 (Risk):** Technical feasibility, biological evidence, benchmarks\n3. **Skill 3 (Impact):** Field exemplars, evaluation frameworks, benchmarks\n4. **Skill 4 (Parameters):** Successful parameter choices, cautionary tales\n5. **Skill 6 (Adversity):** Productive pivots, upgrade examples\n6. **Skill 8 (Integration):** Communication models, comprehensive references\n\n**Search Strategy:**\n- Start broad (field overview)\n- Get specific (your exact approach)\n- Look adjacent (related systems/methods)\n- Find benchmarks (what's state-of-art?)\n- Identify competition (who else is doing this?)\n\n**Papers to Track:**\n- ~10-15 key papers from Skill 1\n- ~5-10 technical papers from Skill 2\n- ~5-10 impact exemplars from Skill 3\n- ~5 parameter lessons from Skill 4\n- ~3-5 pivot examples from Skill 6\n- **Total: ~30-50 papers** (your foundation)\n\n## Final Deliverable Package\n\n### What You'll Have at the End\n\n**Core Documents (Organized Folder):**\n1. `01_Problem_Ideation.pdf` (2 pages, Skill 1)\n2. `02_Risk_Assessment.pdf` (2 pages, Skill 2)\n3. `03_Impact_Assessment.pdf` (2 pages, Skill 3)\n4. `04_Parameter_Strategy.pdf` (2 pages, Skill 4)\n5. `05_Decision_Tree.pdf` (1-2 pages, Skill 5)\n6. `06_Adversity_Playbook.pdf` (2-3 pages, Skill 6)\n7. `07_Problem_Inversion.pdf` (1-2 pages, Skill 7)\n8. `08_Integrated_Plan.pdf` (4-6 pages, Skill 8)\n\n**Communication Materials:**\n- `Presentation_3slides.pptx`\n- `Summary_1page.pdf`\n- `Elevator_Pitch.txt`\n\n**Living Documents (for ongoing use):**\n- `Decision_Tree.pdf` (update monthly)\n- `Risk_Matrix.xlsx` (update quarterly)\n- `Adversity_Playbook.pdf` (consult in crisis)\n- `Parameter_Strategy.pdf` (revisit if stuck)\n\n**Reference Library:**\n- `Key_Papers.pdf` (annotated bibliography, 30-50 papers)\n- Organized by: Ideation / Technical / Impact / Pivots\n\n**Total: ~20-25 pages of documentation + supporting materials**\n\n## Using Your Outputs\n\n### For Different Purposes\n\n**Grant/Fellowship Applications:**\n- Start with Integrated Plan (Skill 8)\n- Include specific aims from Ideation (Skill 1)\n- Show risk mitigation from Risk Assessment (Skill 2)\n- Demonstrate impact from Impact Assessment (Skill 3)\n- Timeline from Decision Tree (Skill 5)\n\n**Thesis Committee Meetings:**\n- Present 3-slide deck (Skill 8)\n- Walk through decision tree (Skill 5)\n- Discuss risk mitigation (Skill 2)\n- Show parameter flexibility (Skill 4)\n- Demonstrate thoughtful planning\n\n**Lab Meetings:**\n- Use elevator pitch (Skill 8)\n- Show decision tree updates (Skill 5)\n- Discuss latest adversity and response (Skill 6)\n- Get input on parameter strategy (Skill 4)\n\n**Collaborator Conversations:**\n- Share 1-page summary (Skill 8)\n- Highlight where their expertise fits (Skill 4)\n- Show risk mitigation plan (Skill 2)\n- Discuss impact potential (Skill 3)\n\n**Personal Reflection:**\n- Quarterly: Review Decision Tree (Skill 5), update milestones\n- After setbacks: Consult Adversity Playbook (Skill 6)\n- When stuck: Use Problem Inversion (Skill 7)\n- Annual: Full workflow review, consider new projects\n\n## Maintenance and Updates\n\n### Living Documents Protocol\n\n**Monthly:**\n- Update Decision Tree (Skill 5)\n- Log adversities and responses (Skill 6)\n- Note new papers or competition\n- Adjust timeline if needed\n\n**Quarterly:**\n- Review Risk Matrix (Skill 2) - mark assumptions tested\n- Reassess Impact (Skill 3) - has evaluation changed?\n- Check Parameter Strategy (Skill 4) - still optimal?\n- Update Integrated Plan (Skill 8) - keep current\n\n**Annually:**\n- Complete workflow review\n- Consider new projects with fresh Skill 1 ideation\n- Archive old project docs\n- Extract lessons learned\n\n## Success Metrics\n\n### How Do You Know This Worked?\n\n**Immediate Indicators:**\n- Clearer project vision than before\n- Honest assessment of risks\n- Contingency plans for failures\n- Compelling communication materials\n- Alignment between project and values\n- Confidence in problem choice\n\n**6-Month Indicators:**\n- Major decisions made faster (have framework)\n- Adversity handled productively (used playbook)\n- No existential crises (risks were mitigated)\n- Regular Level 2 evaluation happening\n- Project staying on-track or pivoting smartly\n\n**2-Year Indicators:**\n- Published results or strong progress\n- Avoided dead-end projects\n- Multiple high-quality options at decision points\n- Skills developed as planned\n- Career trajectory aligned with goals\n- Time well-spent (the ultimate measure)\n\n## Key Principles of the Meta-Framework\n\n1. **Systematic > Ad Hoc:** Process ensures nothing forgotten\n2. **Iterative > Linear:** Expect to loop back, that's good\n3. **Documented > Mental:** Writing forces clarity\n4. **Integrated > Fragmented:** All skills connect\n5. **Living > Static:** Update as you learn\n6. **Thoughtful > Fast:** Time invested now saves years later\n7. **Honest > Optimistic:** Rigor protects against wishful thinking\n8. **Prepared > Surprised:** Anticipate adversity\n9. **Flexible > Rigid:** Parameters float when needed\n10. **Passionate > Obligatory:** Alignment matters\n\n## Getting Started\n\n### First Steps\n\n**This Week:**\n1. Block time in calendar (1-2 hours to start)\n2. Gather your context (background, goals, constraints)\n3. Begin Skill 1 (Intuition Pumps)\n4. Let me know your starting point\n\n**This Month:**\n1. Work through Skills 1-4 (foundation)\n2. Share with mentor for alignment check\n3. Iterate if major changes needed\n4. Complete Skills 5-8 (execution planning)\n\n**This Quarter:**\n1. Begin project execution with living documents\n2. Monthly decision tree updates\n3. Quarterly risk assessment reviews\n4. Log adversities and responses\n\n**This Year:**\n1. Execute planned project\n2. Use frameworks when stuck\n3. Update living documents\n4. Evaluate process and refine\n\n## Ready to Begin?\n\nThe complete meta-framework is substantial, but each step builds on the last. You'll move through:\n- ~2 weeks of intensive planning\n- Comprehensive documentation\n- Clear decision criteria\n- Communication materials\n- Living documents for ongoing guidance\n\n**Most importantly:** You'll KNOW you're working on a well-chosen problem with rigorous planning. That confidence is priceless.\n\nLet's start with Skill 1. Are you ready to begin?\n\n---\n\n*Remember: The highest-leverage work in science is choosing the right problem. This meta-framework ensures you spend your finite time wisely. The investment in systematic planning pays dividends for years.*\n\n<!-- File: bio-research/skills/scientific-problem-selection/SKILL.md (Tokens: ~2566 | Category: anthropic-skill) -->\n---\nname: scientific-problem-selection\ndescription: This skill should be used when scientists need help with research problem selection, project ideation, troubleshooting stuck projects, or strategic scientific decisions. Use this skill when users ask to pitch a new research idea, work through a project problem, evaluate project risks, plan research strategy, navigate decision trees, or get help choosing what scientific problem to work on. Typical requests include \"I have an idea for a project\", \"I'm stuck on my research\", \"help me evaluate this project\", \"what should I work on\", or \"I need strategic advice about my research\".\n---\n\n# Scientific Problem Selection Skills\n\nA conversational framework for systematic scientific problem selection based on Fischbach & Walsh's \"Problem choice and decision trees in science and engineering\" (Cell, 2024).\n\n## Getting Started\n\nPresent users with three entry points:\n\n**1) Pitch an idea for a new project** — to work it up together\n\n**2) Share a problem in a current project** — to troubleshoot together\n\n**3) Ask a strategic question** — to navigate the decision tree together\n\nThis conversational entry meets scientists where they are and establishes a collaborative tone.\n\n---\n\n## Option 1: Pitch an Idea\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your idea (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their idea, return a quick summary (no more than one paragraph) demonstrating understanding. Note the general area of research and rephrase the idea in a way that highlights its kernel—showing alignment and readiness to dive into details.\n\n### Follow-up Prompt\nThen ask for more detail: \"Now give me a bit more detail. You might include, however briefly or even say where you are unsure:\n1. What exactly you want to do\n2. How you currently plan to do it\n3. If it works, why will it be a big deal\n4. What you think are the major risks\"\n\n### Workflow\nFrom there, guide the user through the early stages of problem selection and evaluation:\n- **Skill 1: Intuition Pumps** - Refine and strengthen the idea\n- **Skill 2: Risk Assessment** - Identify and manage project risks\n- **Skill 3: Optimization Function** - Define success metrics\n- **Skill 4: Parameter Strategy** - Determine what to fix vs. keep flexible\n\nSee `references/01-intuition-pumps.md`, `references/02-risk-assessment.md`, `references/03-optimization-function.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 2: Troubleshoot a Problem\n\n### Initial Prompt\nAsk: **\"Tell me a short version of your problem (1-2 sentences or whatever is easy).\"**\n\n### Response Approach\nAfter the user shares their problem, return a quick summary (no more than one paragraph) demonstrating understanding. Note the context of the project where the problem occurred and rephrase the problem—highlighting its core essence—so the user knows the situation is understood. Also raise additional questions that seem important to discuss.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The overall goal of your project (if we have not talked about it before)\n2. What exactly went wrong\n3. Your current ideas for fixing it\"\n\n### Workflow\nFrom there, guide the user through troubleshooting and decision tree navigation:\n- **Skill 5: Decision Tree Navigation** - Plan decision points and navigate between execution and strategic thinking\n- **Skill 4: Parameter Strategy** - Fix one parameter at a time, let others float\n- **Skill 6: Adversity Response** - Frame problems as opportunities for growth\n- **Skill 7: Problem Inversion** - Strategies for navigating around obstacles\n\nAlways include workarounds that might be useful whether or not the problem can be fixed easily.\n\nSee `references/05-decision-tree.md`, `references/06-adversity-planning.md`, `references/07-problem-inversion.md`, and `references/04-parameter-strategy.md` for detailed guidance.\n\n---\n\n## Option 3: Ask a Strategic Question\n\n### Initial Prompt\nAsk: **\"Tell me the short version of your question (1-2 sentences).\"**\n\n### Response Approach\nAfter the user shares their question, return a quick summary (no more than one paragraph) demonstrating understanding. Note the broader context and rephrase the question—highlighting its crux—to confirm alignment with their thinking.\n\n### Follow-up Prompt\nThen ask: \"Now give me a bit more detail. You might include, however briefly:\n1. The setting (i.e., is this about a current or future project)\n2. A bit more detail about what you're thinking\"\n\n### Workflow\nFrom there, draw on the specific modules from the problem choice framework most appropriate to the question:\n- **Skills 1-4** for future project planning (ideation, risk, optimization, parameters)\n- **Skills 5-7** for current project navigation (decision trees, adversity, inversion)\n- **Skill 8** for communication and synthesis\n- **Skill 9** for comprehensive workflow orchestration\n\nSee the complete reference materials in the `references/` folder.\n\n---\n\n## Core Framework Concepts\n\n### The Central Insight\n**Problem Choice >> Execution Quality**\n\nEven brilliant execution of a mediocre problem yields incremental impact. Good execution of an important problem yields substantial impact.\n\n### The Time Paradox\nScientists typically spend:\n- **Days** choosing a problem\n- **Years** solving it\n\nThis imbalance limits impact. These skills help invest more time choosing wisely.\n\n### Evaluation Axes\n**For Evaluating Ideas:**\n- **X-axis:** Likelihood of success\n- **Y-axis:** Impact if successful\n\nSkills help move ideas rightward (more feasible) and upward (more impactful).\n\n### The Risk Paradox\n- Don't avoid risk—befriend it\n- No risk = incremental work\n- But: Multiple miracles = avoid or refine\n- **Balance:** Understood, quantified, manageable risk\n\n### The Parameter Paradox\n- Too many fixed = brittleness\n- Too few fixed = paralysis\n- **Sweet spot:** Fix ONE meaningful constraint\n\n### The Adversity Principle\n- Crises are inevitable (don't be surprised)\n- Crises are opportune (don't waste them)\n- **Strategy:** Fix problem AND upgrade project simultaneously\n\n---\n\n## The 9 Skills Overview\n\n| Skill | Purpose | Output | Time |\n|-------|---------|--------|------|\n| 1. Intuition Pumps | Generate high-quality research ideas | Problem Ideation Document | ~1 week |\n| 2. Risk Assessment | Identify and manage project risks | Risk Assessment Matrix | 3-5 days |\n| 3. Optimization Function | Define success metrics | Impact Assessment Document | 2-3 days |\n| 4. Parameter Strategy | Decide what to fix vs. keep flexible | Parameter Strategy Document | 2-3 days |\n| 5. Decision Tree Navigation | Plan decision points and altitude dance | Decision Tree Map | 2 days |\n| 6. Adversity Response | Prepare for crises as opportunities | Adversity Playbook | 2 days |\n| 7. Problem Inversion | Navigate around obstacles | Problem Inversion Analysis | 1 day |\n| 8. Integration & Synthesis | Synthesize into coherent plan | Project Communication Package | 3-5 days |\n| 9. Meta-Framework | Orchestrate complete workflow | Complete Project Package | 1-6 weeks |\n\n---\n\n## Skill Workflow\n\n```\nSKILL 1: Intuition Pumps\n         | (generates idea)\n         v\nSKILL 2: Risk Assessment\n         | (evaluates feasibility)\n         v\nSKILL 3: Optimization Function\n         | (defines success metrics)\n         v\nSKILL 4: Parameter Strategy\n         | (determines flexibility)\n         v\nSKILL 5: Decision Tree\n         | (plans execution and evaluation)\n         v\nSKILL 6: Adversity Planning\n         | (prepares for failure modes)\n         v\nSKILL 7: Problem Inversion\n         | (provides pivot strategies)\n         v\nSKILL 8: Integration & Communication\n         | (synthesizes into coherent plan)\n         v\nSKILL 9: Meta-Skill\n         (orchestrates complete workflow)\n```\n\n---\n\n## Key Design Principles\n\n1. **Conversational Entry** - Meet users where they are with three clear starting points\n2. **Thoughtful Interaction** - Ask clarifying questions; low confidence prompts additional input\n3. **Literature Integration** - Use PubMed searches at strategic points for validation\n4. **Concrete Outputs** - Every skill produces tangible 1-2 page documents\n5. **Building Specificity** - Progressive detail emerges through targeted questions\n6. **Flexibility** - Skills work independently, sequentially, or iteratively\n7. **Scientific Rigor** - Claims about generality and feasibility should be evidence-based\n\n---\n\n## Who Should Use These Skills\n\n### Graduate Students (Primary Audience)\n- **When:** Choosing thesis projects, qualifying exams, committee meetings\n- **Focus:** Skills 1-3 (ideation, risk, impact) + Skill 9 (complete workflow)\n- **Timeline:** 2-4 weeks for comprehensive planning\n\n### Postdocs\n- **When:** Starting new position, planning independent projects, fellowship applications\n- **Focus:** All skills, emphasizing independence and risk management\n- **Timeline:** 1-2 weeks intensive planning\n\n### Principal Investigators\n- **When:** New lab, new direction, mentoring trainees, grant cycles\n- **Focus:** Skills 1, 3, 4, 6 (ideation, impact, parameters, adversity)\n- **Timeline:** Ongoing, integrate into lab culture\n\n### Startup Founders\n- **When:** Company inception, pivot decisions, investor pitches\n- **Focus:** Skills 1-4 (ideation through parameters) + Skill 8 (communication)\n- **Timeline:** 1-2 weeks for initial planning, revisit quarterly\n\n---\n\n## Reference Materials\n\nDetailed skill documentation is available in the `references/` folder:\n\n| File | Content | Search Patterns |\n|------|---------|-----------------|\n| `01-intuition-pumps.md` | Generate research ideas | `Intuition Pump #`, `Trap #`, `Phase [0-9]` |\n| `02-risk-assessment.md` | Risk identification | `Risk.*1-5`, `go/no-go`, `assumption` |\n| `03-optimization-function.md` | Success metrics | `Generality.*Learning`, `optimization`, `impact` |\n| `04-parameter-strategy.md` | Parameter fixation | `fixed.*float`, `constraint`, `parameter` |\n| `05-decision-tree.md` | Decision tree navigation | `altitude`, `Level [0-9]`, `decision` |\n| `06-adversity-planning.md` | Adversity response | `adversity`, `crisis`, `ensemble` |\n| `07-problem-inversion.md` | Problem inversion strategies | `Strategy [0-9]`, `inversion`, `goal` |\n| `08-integration-synthesis.md` | Integration and synthesis | `narrative`, `communication`, `story` |\n| `09-meta-framework.md` | Complete workflow | `Phase`, `workflow`, `orchestrat` |\n\n---\n\n## Expected Outcomes\n\n### Immediate (After Completing Workflow)\n- Clear project vision\n- Honest risk assessment\n- Contingency plans\n- Communication materials ready\n- Confidence in problem choice\n\n### 6-Month\n- Faster decisions (have framework)\n- Productive adversity handling\n- No existential crises (risks mitigated)\n\n### 2-Year\n- Published results or strong progress\n- Avoided dead-end projects\n- Career aligned with goals\n- **Time well-spent** (ultimate measure)\n\n---\n\n## Foundational Reference\n\n**Fischbach, M.A., & Walsh, C.T. (2024).** \"Problem choice and decision trees in science and engineering.\" *Cell*, 187, 1828-1833.\n\nBased on course BIOE 395 taught at Stanford University.\n\n<!-- File: bio-research/skills/scvi-tools/references/atac_peakvi.md (Tokens: ~2504 | Category: anthropic-skill) -->\n# scATAC-seq Analysis with PeakVI\n\nThis reference covers single-cell ATAC-seq analysis using PeakVI for dimensionality reduction, batch correction, and differential accessibility.\n\n## Overview\n\nPeakVI is a deep generative model for scATAC-seq data that:\n- Models binary accessibility (peak open/closed)\n- Handles batch effects\n- Provides latent representation for clustering\n- Enables differential accessibility analysis\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\nimport anndata as ad\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load and Prepare ATAC Data\n\n### From 10x Genomics (Cell Ranger ATAC)\n\n```python\n# Peak-cell matrix from fragments\n# Usually in filtered_peak_bc_matrix format\n\nadata = sc.read_10x_h5(\"filtered_peak_bc_matrix.h5\")\n\n# Or from mtx format\nadata = sc.read_10x_mtx(\"filtered_peak_bc_matrix/\")\n\n# Check structure\nprint(f\"Cells: {adata.n_obs}, Peaks: {adata.n_vars}\")\nprint(f\"Sparsity: {1 - adata.X.nnz / (adata.n_obs * adata.n_vars):.2%}\")\n```\n\n### From ArchR/Signac\n\n```python\n# Export from ArchR (in R)\n# saveArchRProject(proj, outputDirectory=\"atac_export\", load=FALSE)\n# Then read the exported files in Python\n\n# From Signac:\n# Export peak matrix and metadata\n```\n\n## Step 2: Quality Control\n\n```python\n# Calculate QC metrics\nsc.pp.calculate_qc_metrics(adata, inplace=True)\n\n# Key metrics for ATAC:\n# - n_genes_by_counts: peaks per cell (should rename)\n# - total_counts: fragments per cell\nadata.obs['n_peaks'] = adata.obs['n_genes_by_counts']\nadata.obs['total_fragments'] = adata.obs['total_counts']\n\n# Filter cells\nadata = adata[adata.obs['n_peaks'] > 500].copy()\nadata = adata[adata.obs['n_peaks'] < 50000].copy()  # Remove potential doublets\n\n# Filter peaks (accessible in at least n cells)\nsc.pp.filter_genes(adata, min_cells=10)\n\nprint(f\"After QC: {adata.shape}\")\n```\n\n### Binarize Data\n\n```python\n# PeakVI works with binary accessibility\n# Binarize if not already binary\nadata.X = (adata.X > 0).astype(np.float32)\n\n# Verify\nprint(f\"Unique values: {np.unique(adata.X.data)}\")\n```\n\n## Step 3: Feature Selection\n\nUnlike RNA-seq, peak selection for ATAC is less established. Options:\n\n### Option A: Most Accessible Peaks\n\n```python\n# Select top peaks by accessibility frequency\npeak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\ntop_peaks = np.argsort(peak_accessibility)[-50000:]  # Top 50k peaks\n\nadata = adata[:, top_peaks].copy()\n```\n\n### Option B: Variable Peaks\n\n```python\n# Select peaks with high variance\n# (Most informative for clustering)\nfrom sklearn.feature_selection import VarianceThreshold\n\nselector = VarianceThreshold(threshold=0.05)\nselector.fit(adata.X)\nadata = adata[:, selector.get_support()].copy()\n```\n\n### Option C: Peaks Near Genes\n\n```python\n# Keep peaks within promoter regions or gene bodies\n# Requires peak annotation\n# gene_peaks = peaks with gene annotation\n# adata = adata[:, adata.var['near_gene']].copy()\n```\n\n## Step 4: Add Batch Information\n\n```python\n# Add batch annotation if multiple samples\nadata.obs['batch'] = adata.obs['sample_id']  # Or appropriate column\n\nprint(adata.obs['batch'].value_counts())\n```\n\n## Step 5: Setup and Train PeakVI\n\n```python\n# Setup AnnData\nscvi.model.PEAKVI.setup_anndata(\n    adata,\n    batch_key=\"batch\"  # Optional, omit for single batch\n)\n\n# Create model\nmodel = scvi.model.PEAKVI(\n    adata,\n    n_latent=20,      # Latent dimensions\n    n_layers_encoder=2,\n    n_layers_decoder=2\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 6: Get Latent Representation\n\n```python\n# Latent space for downstream analysis\nadata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_PeakVI\", n_neighbors=15)\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=0.5)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'], ncols=2)\n```\n\n## Step 7: Differential Accessibility\n\n```python\n# Differential accessibility between clusters\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n\n# Filter significant peaks\nda_sig = da_results[\n    (da_results['is_da_fdr_0.05']) &\n    (abs(da_results['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DA peaks: {len(da_sig)}\")\nprint(da_sig.head())\n```\n\n### DA Between Conditions\n\n```python\n# Compare conditions within cell type\nadata_subset = adata[adata.obs['cell_type'] == 'CD4 T cells'].copy()\n\nda_condition = model.differential_accessibility(\n    groupby='condition',\n    group1='treated',\n    group2='control'\n)\n```\n\n## Step 8: Peak Annotation\n\n```python\n# Annotate peaks with nearest genes\n# Using pybedtools or similar\n\n# Example peak name format: chr1:1000-2000\n# Parse into bed format for annotation\n\nimport pandas as pd\n\ndef parse_peak_names(peak_names):\n    \"\"\"Parse peak names into bed format.\"\"\"\n    records = []\n    for peak in peak_names:\n        chrom, coords = peak.split(':')\n        start, end = coords.split('-')\n        records.append({\n            'chrom': chrom,\n            'start': int(start),\n            'end': int(end),\n            'peak': peak\n        })\n    return pd.DataFrame(records)\n\npeak_bed = parse_peak_names(adata.var_names)\n```\n\n## Step 9: Motif Analysis\n\n```python\n# Export significant peaks for motif analysis\n# Use HOMER, MEME, or chromVAR\n\n# Export peak sequences\nsig_peaks = da_sig.index.tolist()\npeak_bed_sig = peak_bed[peak_bed['peak'].isin(sig_peaks)]\npeak_bed_sig.to_csv(\"significant_peaks.bed\", sep='\\t', index=False, header=False)\n\n# Then run HOMER:\n# findMotifsGenome.pl significant_peaks.bed hg38 motif_output/ -size 200\n```\n\n## Step 10: Gene Activity Scores\n\n```python\n# Compute gene activity from peak accessibility\n# (Requires peak-gene annotations)\n\ndef compute_gene_activity(adata, peak_gene_map):\n    \"\"\"\n    Compute gene activity scores from peak accessibility.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        ATAC data with peaks\n    peak_gene_map : dict\n        Mapping of peaks to genes\n        \n    Returns\n    -------\n    AnnData with gene activity scores\n    \"\"\"\n    from scipy.sparse import csr_matrix\n    \n    genes = list(set(peak_gene_map.values()))\n    gene_matrix = np.zeros((adata.n_obs, len(genes)))\n    \n    for i, gene in enumerate(genes):\n        gene_peaks = [p for p, g in peak_gene_map.items() if g == gene]\n        if gene_peaks:\n            peak_idx = [list(adata.var_names).index(p) for p in gene_peaks if p in adata.var_names]\n            if peak_idx:\n                gene_matrix[:, i] = np.array(adata.X[:, peak_idx].sum(axis=1)).flatten()\n    \n    adata_gene = ad.AnnData(\n        X=csr_matrix(gene_matrix),\n        obs=adata.obs.copy(),\n        var=pd.DataFrame(index=genes)\n    )\n    \n    return adata_gene\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_scatac(\n    adata,\n    batch_key=None,\n    n_top_peaks=50000,\n    n_latent=20,\n    resolution=0.5\n):\n    \"\"\"\n    Complete scATAC-seq analysis with PeakVI.\n    \n    Parameters\n    ----------\n    adata : AnnData\n        Raw peak-cell matrix\n    batch_key : str, optional\n        Batch annotation column\n    n_top_peaks : int\n        Number of top peaks to use\n    n_latent : int\n        Latent dimensions\n    resolution : float\n        Leiden clustering resolution\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    import numpy as np\n    \n    adata = adata.copy()\n    \n    # QC\n    sc.pp.calculate_qc_metrics(adata, inplace=True)\n    adata = adata[adata.obs['n_genes_by_counts'] > 500].copy()\n    sc.pp.filter_genes(adata, min_cells=10)\n    \n    # Binarize\n    adata.X = (adata.X > 0).astype(np.float32)\n    \n    # Select top peaks\n    if adata.n_vars > n_top_peaks:\n        peak_accessibility = np.array(adata.X.sum(axis=0)).flatten()\n        top_peaks = np.argsort(peak_accessibility)[-n_top_peaks:]\n        adata = adata[:, top_peaks].copy()\n    \n    # Setup PeakVI\n    scvi.model.PEAKVI.setup_anndata(adata, batch_key=batch_key)\n    \n    # Train\n    model = scvi.model.PEAKVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Latent representation\n    adata.obsm[\"X_PeakVI\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_PeakVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata, resolution=resolution)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_scatac(\n    adata,\n    batch_key=\"sample\",\n    n_top_peaks=50000\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'sample'])\n\n# Differential accessibility\nda_results = model.differential_accessibility(\n    groupby='leiden',\n    group1='0',\n    group2='1'\n)\n```\n\n## Integration with scRNA-seq\n\nFor multiome data or separate RNA/ATAC from same cells:\n\n```python\n# See MultiVI for joint RNA+ATAC analysis\n# Or use WNN (weighted nearest neighbors) approach\n\n# Transfer labels from RNA to ATAC using shared latent space\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Training slow | Too many peaks | Subset to top 50k peaks |\n| Poor clustering | Too few informative peaks | Use variable peaks |\n| Batch dominates | Strong technical effects | Ensure batch_key is set |\n| Memory error | Large peak matrix | Use sparse format, reduce peaks |\n\n## Key References\n\n- Ashuach et al. (2022) \"PeakVI: A deep generative model for single-cell chromatin accessibility analysis\"\n\n<!-- File: bio-research/skills/scvi-tools/references/batch_correction_sysvi.md (Tokens: ~2644 | Category: anthropic-skill) -->\n# Advanced Batch Correction with sysVI\n\nThis reference covers system-level batch correction using sysVI, designed for integrating data across major technological or study differences.\n\n## Overview\n\nsysVI (System Variational Inference) extends scVI for scenarios where:\n- Batch effects are very strong (different technologies)\n- Standard scVI over-corrects biological signal\n- You need to separate \"system\" effects from biological variation\n\n## When to Use sysVI vs scVI\n\n| Scenario | Recommended Model |\n|----------|-------------------|\n| Same technology, different samples | scVI |\n| 10x v2 vs 10x v3 | scVI (usually) |\n| 10x vs Smart-seq2 | sysVI |\n| Different sequencing depths | scVI with covariates |\n| Cross-study integration | sysVI |\n| Atlas-scale integration | sysVI |\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport numpy as np\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Understanding sysVI Architecture\n\nsysVI separates variation into:\n1. **Biological variation**: Cell type, state, trajectory\n2. **System variation**: Technology, study, lab effects\n\n```\n                    ┌─────────────────┐\nInput counts ──────►│    Encoder      │\n                    │                 │\nSystem info ───────►│  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\n                    │   Latent z      │\n                    │  (biological)   │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\nSystem info ───────►│    Decoder      │\n                    │  (conditioned)  │\n                    └────────┬────────┘\n                             │\n                    Reconstructed counts\n```\n\n## Basic sysVI Workflow\n\n### Step 1: Prepare Data\n\n```python\n# Load datasets from different systems\nadata1 = sc.read_h5ad(\"10x_data.h5ad\")\nadata2 = sc.read_h5ad(\"smartseq_data.h5ad\")\n\n# Add system labels\nadata1.obs[\"system\"] = \"10x\"\nadata2.obs[\"system\"] = \"Smart-seq2\"\n\n# Add batch labels (within system)\n# e.g., different samples within each technology\n\n# Concatenate\nadata = sc.concat([adata1, adata2])\n\n# Store raw counts\nadata.layers[\"counts\"] = adata.X.copy()\n```\n\n### Step 2: HVG Selection\n\n```python\n# Select HVGs considering both batch and system\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # More genes for cross-system\n    flavor=\"seurat_v3\",\n    batch_key=\"system\",  # Consider system for HVG\n    layer=\"counts\"\n)\n\n# Optionally: ensure overlap between systems\n# Check HVGs are expressed in both systems\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n### Step 3: Setup and Train sysVI\n\n```python\n# Setup AnnData\n# Note: sysVI may be accessed differently depending on version\n# Check scvi-tools documentation for current API\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",           # Within-system batches\n    categorical_covariate_keys=[\"system\"]  # System-level covariate\n)\n\n# For true sysVI (if available in your version)\n# scvi.model.SysVI.setup_anndata(...)\n\n# Create model with system awareness\nmodel = scvi.model.SCVI(\n    adata,\n    n_latent=30,\n    n_layers=2,\n    gene_likelihood=\"nb\"\n)\n\n# Train\nmodel.train(max_epochs=300)\n```\n\n### Step 4: Extract Representations\n\n```python\n# Get latent representation\nadata.obsm[\"X_integrated\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_integrated\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata)\n\n# Check integration\nsc.pl.umap(adata, color=[\"system\", \"leiden\", \"cell_type\"])\n```\n\n## Alternative: Harmony + scVI\n\nFor cross-system integration, combining methods can work well:\n\n```python\nimport scanpy.external as sce\n\n# First run PCA\nsc.pp.pca(adata)\n\n# Apply Harmony for initial alignment\nsce.pp.harmony_integrate(adata, key=\"system\")\n\n# Then train scVI on Harmony-corrected embedding\n# Or use Harmony representation directly\n```\n\n## Alternative: Using Covariates in scVI\n\nFor moderate system effects:\n\n```python\n# Include system as categorical covariate\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    categorical_covariate_keys=[\"system\", \"technology_version\"]\n)\n\nmodel = scvi.model.SCVI(adata, n_latent=30)\nmodel.train()\n```\n\n## Alternative: Separate Models + Integration\n\nFor very different systems:\n\n```python\n# Train separate models\nscvi.model.SCVI.setup_anndata(adata1, layer=\"counts\", batch_key=\"sample\")\nmodel1 = scvi.model.SCVI(adata1)\nmodel1.train()\n\nscvi.model.SCVI.setup_anndata(adata2, layer=\"counts\", batch_key=\"sample\")\nmodel2 = scvi.model.SCVI(adata2)\nmodel2.train()\n\n# Get latent spaces\nadata1.obsm[\"X_scVI\"] = model1.get_latent_representation()\nadata2.obsm[\"X_scVI\"] = model2.get_latent_representation()\n\n# Align with CCA or Harmony\n# ... additional alignment step\n```\n\n## Evaluating Cross-System Integration\n\n### Visual Assessment\n\n```python\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 3, figsize=(15, 4))\n\n# Color by system\nsc.pl.umap(adata, color=\"system\", ax=axes[0], show=False, title=\"By System\")\n\n# Color by cell type\nsc.pl.umap(adata, color=\"cell_type\", ax=axes[1], show=False, title=\"By Cell Type\")\n\n# Color by expression of marker\nsc.pl.umap(adata, color=\"CD3D\", ax=axes[2], show=False, title=\"CD3D Expression\")\n\nplt.tight_layout()\n```\n\n### Quantitative Metrics\n\n```python\n# Using scib-metrics\nfrom scib_metrics.benchmark import Benchmarker\n\nbm = Benchmarker(\n    adata,\n    batch_key=\"system\",\n    label_key=\"cell_type\",\n    embedding_obsm_keys=[\"X_integrated\"]\n)\n\nbm.benchmark()\n\n# Key metrics:\n# - Batch mixing (ASW_batch, Graph connectivity)\n# - Bio conservation (NMI, ARI, ASW_label)\n```\n\n### LISI Scores\n\n```python\n# Local Inverse Simpson's Index\nfrom scib_metrics import lisi\n\n# Batch LISI (higher = better mixing)\nbatch_lisi = lisi.ilisi_graph(\n    adata,\n    batch_key=\"system\",\n    use_rep=\"X_integrated\"\n)\n\n# Cell type LISI (lower = better preservation)\nct_lisi = lisi.clisi_graph(\n    adata,\n    label_key=\"cell_type\", \n    use_rep=\"X_integrated\"\n)\n\nprint(f\"Batch LISI: {batch_lisi.mean():.3f}\")\nprint(f\"Cell type LISI: {ct_lisi.mean():.3f}\")\n```\n\n## Handling Specific Challenges\n\n### Different Gene Sets\n\n```python\n# Find common genes\ncommon_genes = adata1.var_names.intersection(adata2.var_names)\nprint(f\"Common genes: {len(common_genes)}\")\n\n# If too few, use gene mapping\n# Or impute missing genes\n```\n\n### Different Sequencing Depths\n\n```python\n# Add depth as continuous covariate\nadata.obs[\"log_counts\"] = np.log1p(adata.obs[\"total_counts\"])\n\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"sample\",\n    continuous_covariate_keys=[\"log_counts\"]\n)\n```\n\n### Unbalanced Cell Types\n\n```python\n# Check cell type distribution per system\nimport pandas as pd\n\nct_dist = pd.crosstab(adata.obs[\"system\"], adata.obs[\"cell_type\"], normalize=\"index\")\nprint(ct_dist)\n\n# If very unbalanced, consider:\n# 1. Subsample to balance\n# 2. Use scANVI with labels to preserve rare types\n```\n\n## Complete Pipeline\n\n```python\ndef integrate_cross_system(\n    adatas: dict,\n    system_key: str = \"system\",\n    batch_key: str = \"batch\",\n    cell_type_key: str = \"cell_type\",\n    n_top_genes: int = 4000,\n    n_latent: int = 30\n):\n    \"\"\"\n    Integrate datasets from different technological systems.\n    \n    Parameters\n    ----------\n    adatas : dict\n        Dictionary of {system_name: AnnData}\n    system_key : str\n        Key for system annotation\n    batch_key : str\n        Key for within-system batch\n    cell_type_key : str\n        Key for cell type labels (optional)\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Integrated AnnData with model\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Add system labels and concatenate\n    for system_name, adata in adatas.items():\n        adata.obs[system_key] = system_name\n    \n    adata = sc.concat(list(adatas.values()))\n    \n    # Find common genes\n    for name, ad in adatas.items():\n        if name == list(adatas.keys())[0]:\n            common_genes = set(ad.var_names)\n        else:\n            common_genes = common_genes.intersection(ad.var_names)\n    \n    adata = adata[:, list(common_genes)].copy()\n    print(f\"Common genes: {len(common_genes)}\")\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=system_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup with system as covariate\n    scvi.model.SCVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        batch_key=batch_key if batch_key in adata.obs else None,\n        categorical_covariate_keys=[system_key]\n    )\n    \n    # Train\n    model = scvi.model.SCVI(adata, n_latent=n_latent, n_layers=2)\n    model.train(max_epochs=300, early_stopping=True)\n    \n    # Get representation\n    adata.obsm[\"X_integrated\"] = model.get_latent_representation()\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_integrated\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadatas = {\n    \"10x_v3\": sc.read_h5ad(\"10x_v3_data.h5ad\"),\n    \"Smart-seq2\": sc.read_h5ad(\"smartseq_data.h5ad\"),\n    \"Drop-seq\": sc.read_h5ad(\"dropseq_data.h5ad\")\n}\n\nadata_integrated, model = integrate_cross_system(adatas)\n\n# Visualize\nsc.pl.umap(adata_integrated, color=[\"system\", \"leiden\"])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Systems don't mix | Effects too strong | Use more genes, increase n_latent |\n| Over-correction | Model too aggressive | Reduce n_layers, use scANVI |\n| Few common genes | Different platforms | Use gene name mapping |\n| One system dominates | Unbalanced sizes | Subsample larger dataset |\n\n## Key References\n\n- Lopez et al. (2018) \"Deep generative modeling for single-cell transcriptomics\"\n- Luecken et al. (2022) \"Benchmarking atlas-level data integration in single-cell genomics\"\n\n<!-- File: bio-research/skills/scvi-tools/references/citeseq_totalvi.md (Tokens: ~2863 | Category: anthropic-skill) -->\n# CITE-seq Analysis with totalVI\n\nThis reference covers multi-modal analysis of CITE-seq data (RNA + surface proteins) using totalVI.\n\n## Overview\n\nCITE-seq combines:\n- scRNA-seq (transcriptome)\n- Protein surface markers (antibody-derived tags, ADT)\n\ntotalVI jointly models both modalities to:\n- Integrate across batches\n- Denoise protein signal\n- Learn joint latent representation\n- Enable cross-modal imputation\n\n## Prerequisites\n\n```python\nimport scvi\nimport scanpy as sc\nimport mudata as md\nimport numpy as np\nimport pandas as pd\n\nprint(f\"scvi-tools version: {scvi.__version__}\")\n```\n\n## Step 1: Load CITE-seq Data\n\n### From 10x Genomics (Cell Ranger)\n\n```python\n# 10x outputs separate gene expression and feature barcoding\nadata_rna = sc.read_10x_h5(\"filtered_feature_bc_matrix.h5\", gex_only=False)\n\n# Separate RNA and protein\nadata_protein = adata_rna[:, adata_rna.var['feature_types'] == 'Antibody Capture'].copy()\nadata_rna = adata_rna[:, adata_rna.var['feature_types'] == 'Gene Expression'].copy()\n\nprint(f\"RNA: {adata_rna.shape}\")\nprint(f\"Protein: {adata_protein.shape}\")\n```\n\n### From MuData\n\n```python\n# If data is in MuData format\nmdata = md.read_h5mu(\"cite_seq.h5mu\")\n\nadata_rna = mdata['rna'].copy()\nadata_protein = mdata['protein'].copy()\n```\n\n### Combine into Single AnnData\n\n```python\n# totalVI expects protein data in obsm\nadata = adata_rna.copy()\n\n# Add protein expression to obsm\nadata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n\n# Store protein names\nadata.uns[\"protein_names\"] = list(adata_protein.var_names)\n```\n\n## Step 2: Quality Control\n\n### RNA QC\n\n```python\n# Standard RNA QC\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n\n# Filter cells\nadata = adata[adata.obs['n_genes_by_counts'] > 200].copy()\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n```\n\n### Protein QC\n\n```python\n# Protein QC\nprotein_counts = adata.obsm[\"protein_expression\"]\nprint(f\"Protein counts per cell: min={protein_counts.sum(1).min():.0f}, max={protein_counts.sum(1).max():.0f}\")\n\n# Check for isotype controls\n# Isotype controls should have low counts\nprotein_names = adata.uns[\"protein_names\"]\nfor i, name in enumerate(protein_names):\n    if 'isotype' in name.lower() or 'control' in name.lower():\n        print(f\"{name}: mean={protein_counts[:, i].mean():.1f}\")\n```\n\n## Step 3: Data Preparation\n\n### Store Raw Counts\n\n```python\n# Store RNA counts\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Protein must be raw ADT counts (NOT CLR-normalized)\n# WARNING: If importing from Seurat, ensure you use raw counts, not CLR-normalized data\n# Seurat's NormalizeData(normalization.method = \"CLR\") transforms counts - use the original assay\n```\n\n### HVG Selection for RNA\n\n```python\n# Select HVGs for RNA\n# Note: totalVI uses all proteins regardless of HVG\n\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=4000,  # Use more for CITE-seq\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\" if \"batch\" in adata.obs else None,\n    layer=\"counts\"\n)\n\n# Subset to HVGs\nadata = adata[:, adata.var[\"highly_variable\"]].copy()\n```\n\n## Step 4: Setup and Train totalVI\n\n```python\n# Setup AnnData for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    protein_expression_obsm_key=\"protein_expression\",\n    batch_key=\"batch\"  # Optional\n)\n\n# Create model\nmodel = scvi.model.TOTALVI(\n    adata,\n    n_latent=20,\n    latent_distribution=\"normal\"  # or \"ln\" for log-normal\n)\n\n# Train\nmodel.train(\n    max_epochs=200,\n    early_stopping=True,\n    batch_size=128\n)\n\n# Check training\nmodel.history['elbo_train'].plot()\n```\n\n## Step 5: Get Latent Representation\n\n```python\n# Joint latent space\nadata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n\n# Clustering and visualization\nsc.pp.neighbors(adata, use_rep=\"X_totalVI\")\nsc.tl.umap(adata)\nsc.tl.leiden(adata, resolution=1.0)\n\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Step 6: Denoised Protein Expression\n\n```python\n# Get denoised protein values\n# This removes background noise from protein measurements\n\n_, protein_denoised = model.get_normalized_expression(\n    return_mean=True,\n    transform_batch=\"batch1\"  # Optional: normalize to specific batch\n)\n\n# Add to adata\nadata.obsm[\"protein_denoised\"] = protein_denoised\n\n# Visualize denoised proteins\nprotein_names = adata.uns[\"protein_names\"]\nfor i, protein in enumerate(protein_names[:5]):\n    adata.obs[f\"denoised_{protein}\"] = protein_denoised[:, i]\n\nsc.pl.umap(adata, color=[f\"denoised_{p}\" for p in protein_names[:5]])\n```\n\n## Step 7: Normalized RNA Expression\n\n```python\n# Get normalized RNA expression\nrna_normalized, _ = model.get_normalized_expression(\n    return_mean=True\n)\n\n# Store\nadata.layers[\"totalVI_normalized\"] = rna_normalized\n```\n\n## Step 8: Differential Expression\n\n### RNA Differential Expression\n\n```python\n# DE between clusters\nde_rna = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\"\n)\n\n# Filter significant genes\nde_sig = de_rna[\n    (de_rna['is_de_fdr_0.05']) &\n    (abs(de_rna['lfc_mean']) > 1)\n]\n\nprint(f\"Significant DE genes: {len(de_sig)}\")\n```\n\n### Protein Differential Expression\n\n```python\n# Protein DE\nde_protein = model.differential_expression(\n    groupby=\"leiden\",\n    group1=\"0\",\n    group2=\"1\",\n    mode=\"protein\"\n)\n\nprint(de_protein.head(20))\n```\n\n## Step 9: Visualization\n\n### Protein Expression on UMAP\n\n```python\n# Denoised protein on UMAP\nimport matplotlib.pyplot as plt\n\nproteins_to_plot = [\"CD3\", \"CD4\", \"CD8\", \"CD19\", \"CD14\"]\n\nfig, axes = plt.subplots(1, len(proteins_to_plot), figsize=(4*len(proteins_to_plot), 4))\nfor ax, protein in zip(axes, proteins_to_plot):\n    idx = adata.uns[\"protein_names\"].index(protein)\n    sc.pl.umap(\n        adata,\n        color=adata.obsm[\"protein_denoised\"][:, idx],\n        ax=ax,\n        title=protein,\n        show=False\n    )\nplt.tight_layout()\n```\n\n### Joint Heatmap\n\n```python\n# Heatmap of top genes and proteins per cluster\nsc.pl.dotplot(\n    adata,\n    var_names=de_sig.index[:20].tolist(),\n    groupby=\"leiden\",\n    layer=\"totalVI_normalized\"\n)\n```\n\n## Step 10: Cell Type Annotation\n\n```python\n# Use both RNA and protein markers for annotation\n\n# RNA markers\nrna_markers = {\n    'T cells': ['CD3D', 'CD3E'],\n    'CD4 T': ['CD4'],\n    'CD8 T': ['CD8A', 'CD8B'],\n    'B cells': ['CD19', 'MS4A1'],\n    'Monocytes': ['CD14', 'LYZ']\n}\n\n# Check denoised protein expression\nfor i, protein in enumerate(adata.uns[\"protein_names\"]):\n    if any(m in protein for m in ['CD3', 'CD4', 'CD8', 'CD19', 'CD14']):\n        print(f\"{protein}: cluster means\")\n        for cluster in adata.obs['leiden'].unique():\n            mask = adata.obs['leiden'] == cluster\n            mean_expr = adata.obsm[\"protein_denoised\"][mask, i].mean()\n            print(f\"  Cluster {cluster}: {mean_expr:.2f}\")\n```\n\n## Complete Pipeline\n\n```python\ndef analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=None,\n    n_top_genes=4000,\n    n_latent=20\n):\n    \"\"\"\n    Complete CITE-seq analysis with totalVI.\n    \n    Parameters\n    ----------\n    adata_rna : AnnData\n        RNA expression (raw counts)\n    adata_protein : AnnData\n        Protein expression (raw counts)\n    batch_key : str, optional\n        Batch column in obs\n    n_top_genes : int\n        Number of HVGs\n    n_latent : int\n        Latent dimensions\n        \n    Returns\n    -------\n    Tuple of (processed AnnData, trained model)\n    \"\"\"\n    import scvi\n    import scanpy as sc\n    \n    # Ensure same cells\n    common_cells = adata_rna.obs_names.intersection(adata_protein.obs_names)\n    adata = adata_rna[common_cells].copy()\n    adata_protein = adata_protein[common_cells].copy()\n    \n    # Add protein to obsm\n    adata.obsm[\"protein_expression\"] = adata_protein.X.toarray() if hasattr(adata_protein.X, 'toarray') else adata_protein.X\n    adata.uns[\"protein_names\"] = list(adata_protein.var_names)\n    \n    # RNA QC\n    # Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\n    adata.var['mt'] = (\n        adata.var_names.str.startswith('MT-') |\n        adata.var_names.str.startswith('mt-') |\n        adata.var_names.str.startswith('Mt-')\n    )\n    sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\n    adata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n    sc.pp.filter_genes(adata, min_cells=3)\n    \n    # Store counts\n    adata.layers[\"counts\"] = adata.X.copy()\n    \n    # HVG selection\n    sc.pp.highly_variable_genes(\n        adata,\n        n_top_genes=n_top_genes,\n        flavor=\"seurat_v3\",\n        batch_key=batch_key,\n        layer=\"counts\"\n    )\n    adata = adata[:, adata.var[\"highly_variable\"]].copy()\n    \n    # Setup totalVI\n    scvi.model.TOTALVI.setup_anndata(\n        adata,\n        layer=\"counts\",\n        protein_expression_obsm_key=\"protein_expression\",\n        batch_key=batch_key\n    )\n    \n    # Train\n    model = scvi.model.TOTALVI(adata, n_latent=n_latent)\n    model.train(max_epochs=200, early_stopping=True)\n    \n    # Get representations\n    adata.obsm[\"X_totalVI\"] = model.get_latent_representation()\n    rna_norm, protein_denoised = model.get_normalized_expression(return_mean=True)\n    adata.layers[\"totalVI_normalized\"] = rna_norm\n    adata.obsm[\"protein_denoised\"] = protein_denoised\n    \n    # Clustering\n    sc.pp.neighbors(adata, use_rep=\"X_totalVI\")\n    sc.tl.umap(adata)\n    sc.tl.leiden(adata)\n    \n    return adata, model\n\n# Usage\nadata, model = analyze_citeseq(\n    adata_rna,\n    adata_protein,\n    batch_key=\"batch\"\n)\n\n# Visualize\nsc.pl.umap(adata, color=['leiden', 'batch'])\n```\n\n## Troubleshooting\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Protein signal noisy | Background not removed | Use get_normalized_expression with denoising |\n| Batch effects persist | Need batch_key | Ensure batch_key is specified |\n| Memory error | Too many genes | Reduce n_top_genes |\n| Poor protein clustering | Few proteins | Normal - totalVI uses RNA for structure |\n\n## Key References\n\n- Gayoso et al. (2021) \"Joint probabilistic modeling of single-cell multi-omic data with totalVI\"\n\n<!-- File: bio-research/skills/scvi-tools/references/data_preparation.md (Tokens: ~1725 | Category: anthropic-skill) -->\n# Data Preparation for scvi-tools\n\nThis reference covers how to properly prepare AnnData objects for use with scvi-tools models.\n\n## Overview\n\nProper data preparation is critical for scvi-tools. Key requirements:\n1. **Raw counts** (not normalized)\n2. **Highly variable gene selection**\n3. **Proper setup_anndata() call**\n\n## Step 1: Load and Inspect Data\n\n```python\nimport scanpy as sc\nimport scvi\nimport numpy as np\n\n# Load data\nadata = sc.read_h5ad(\"data.h5ad\")\n\n# Check what's in adata.X\nprint(f\"Shape: {adata.shape}\")\nprint(f\"X dtype: {adata.X.dtype}\")\nprint(f\"X contains integers: {np.allclose(adata.X.data, adata.X.data.astype(int))}\")\nprint(f\"X min: {adata.X.min()}, max: {adata.X.max()}\")\n```\n\n### Verify Raw Counts\n\n```python\n# scvi-tools needs INTEGER counts\n# If X appears normalized, check for raw counts\n\nif hasattr(adata, 'raw') and adata.raw is not None:\n    print(\"Found adata.raw\")\n    # Use raw counts\n    adata = adata.raw.to_adata()\n    \n# Or check layers\nif 'counts' in adata.layers:\n    print(\"Found counts layer\")\n    # Will specify layer in setup_anndata\n```\n\n## Step 2: Basic Filtering\n\n```python\n# Filter cells (standard QC)\nsc.pp.filter_cells(adata, min_genes=200)\nsc.pp.filter_cells(adata, max_genes=5000)\n\n# Calculate mito percent if not present\n# Handle both human (MT-) and mouse (mt-, Mt-) mitochondrial genes\nadata.var['mt'] = (\n    adata.var_names.str.startswith('MT-') |\n    adata.var_names.str.startswith('mt-') |\n    adata.var_names.str.startswith('Mt-')\n)\nsc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)\nadata = adata[adata.obs['pct_counts_mt'] < 20].copy()\n\n# Filter genes\nsc.pp.filter_genes(adata, min_cells=3)\n\nprint(f\"After filtering: {adata.shape}\")\n```\n\n## Step 3: Store Raw Counts\n\n**Critical**: Always preserve raw counts before any normalization.\n\n```python\n# Store raw counts in a layer\nadata.layers[\"counts\"] = adata.X.copy()\n\n# Now you can normalize for other purposes (HVG selection)\n# But scvi will use the counts layer\n```\n\n## Step 4: Highly Variable Gene Selection\n\nscvi-tools works best with 1,500-5,000 HVGs.\n\n### For Single-Batch Data\n\n```python\n# Normalize for HVG selection only\nadata_hvg = adata.copy()\nsc.pp.normalize_total(adata_hvg, target_sum=1e4)\nsc.pp.log1p(adata_hvg)\n\n# Select HVGs\nsc.pp.highly_variable_genes(\n    adata_hvg,\n    n_top_genes=2000,\n    flavor=\"seurat\"  # or \"cell_ranger\"\n)\n\n# Transfer HVG annotation\nadata.var['highly_variable'] = adata_hvg.var['highly_variable']\n```\n\n### For Multi-Batch Data (Recommended)\n\n```python\n# Use seurat_v3 flavor with batch_key\n# This selects genes variable across batches\nsc.pp.highly_variable_genes(\n    adata,\n    n_top_genes=2000,\n    flavor=\"seurat_v3\",\n    batch_key=\"batch\",  # Your batch column\n    layer=\"counts\"      # Use raw counts\n)\n```\n\n### Subset to HVGs\n\n```python\n# Subset to highly variable genes\nadata = adata[:, adata.var['highly_variable']].copy()\nprint(f\"After HVG selection: {adata.shape}\")\n```\n\n## Step 5: Setup AnnData\n\nThe `setup_anndata()` function registers data for the model.\n\n### Basic Setup\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\"  # Specify layer with raw counts\n)\n```\n\n### With Batch Information\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\"  # Column in adata.obs\n)\n```\n\n### With Cell Type Labels (for scANVI)\n\n```python\nscvi.model.SCANVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    labels_key=\"cell_type\"  # Column with cell type labels\n)\n```\n\n### With Continuous Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    continuous_covariate_keys=[\"percent_mito\", \"n_genes\"]\n)\n```\n\n### With Categorical Covariates\n\n```python\nscvi.model.SCVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    categorical_covariate_keys=[\"donor\", \"technology\"]\n)\n```\n\n## Multi-Modal Data Setup\n\n### CITE-seq (for totalVI)\n\n```python\n# Protein data in adata.obsm\n# RNA in adata.X, protein in separate matrix\n\n# Add protein data\nadata.obsm[\"protein_expression\"] = protein_counts  # numpy array\n\n# Setup for totalVI\nscvi.model.TOTALVI.setup_anndata(\n    adata,\n    layer=\"counts\",\n    batch_key=\"batch\",\n    protein_expression_obsm_key=\"protein_expression\"\n)\n```\n\n### Multiome RNA+ATAC (for MultiVI)\n\n```python\n# RNA and ATAC in separate AnnData objects or MuData\n\nimport mudata as md\n\n# If using MuData\nmdata = md.read(\"multiome.h5mu\")\n\nscvi.model.MULTIVI.setup_mudata(\n    mdata,\n    rna_layer=\"counts\",\n    protein_layer=None,\n    batch_key=\"batch\",\n    modalities={\"rna\": \"rna\", \"accessibility\": \"atac\"}\n)\n```\n\n## Complete Preparation Pipeline\n\nFor a complete preparation function, use `prepare_adata()` from `scripts/model_utils.py`:\n\n```python\nfrom model_utils import prepare_adata\n\n# Prepare data with QC, HVG selection, and layer setup\nadata = prepare_adata(\n    adata,\n    batch_key=\"batch\",\n    n_top_genes=2000,\n    min_genes=200,\n    max_mito_pct=20\n)\n\n# Then setup for your model\nimport scvi\nscvi.model.SCVI.setup_anndata(adata, layer=\"counts\", batch_key=\"batch\")\n```\n\nThis function handles:\n- Mitochondrial QC filtering\n- Cell and gene filtering\n- Storing counts in layer\n- HVG selection (batch-aware if batch_key provided)\n- Subsetting to HVGs\n\n## Checking Setup\n\n```python\n# View registered data\nprint(adata.uns['_scvi_manager_uuid'])\nprint(adata.uns['_scvi_adata_minify_type'])\n\n# For scVI\nscvi.model.SCVI.view_anndata_setup(adata)\n```\n\n## Common Issues and Solutions\n\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| \"X should contain integers\" | Normalized data in X | Use layer=\"counts\" |\n| \"batch_key not found\" | Wrong column name | Check adata.obs.columns |\n| Sparse matrix errors | Incompatible format | Convert: adata.X = adata.X.toarray() |\n| Memory error | Too many genes | Subset to HVGs first |\n| NaN in data | Missing values | Filter or impute |\n\n## Data Format Reference\n\n### Required\n\n- `adata.X` or `adata.layers[\"counts\"]`: Raw integer counts (sparse OK)\n- `adata.obs`: Cell metadata DataFrame\n- `adata.var`: Gene metadata DataFrame\n\n### Recommended\n\n- `adata.obs[\"batch\"]`: Batch/sample identifiers\n- `adata.var[\"highly_variable\"]`: HVG boolean mask\n\n### For scANVI\n\n- `adata.obs[\"labels\"]`: Cell type annotations\n- Can include \"Unknown\" for unlabeled cells\n\n<!-- ... +1092 more modular skills available via /api/skills/anthropics/knowledge-work-plugins?path={path} -->\n</yakaai_skills>"}