pi-skill-search 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +97 -0
- package/index.ts +163 -0
- package/package.json +48 -0
- package/skills/adaptyv/SKILL.md +92 -0
- package/skills/add-community-extension/SKILL.md +85 -0
- package/skills/aeon/SKILL.md +111 -0
- package/skills/ai-slop-cleaner/SKILL.md +118 -0
- package/skills/anndata/SKILL.md +83 -0
- package/skills/arboreto/SKILL.md +107 -0
- package/skills/ask/SKILL.md +55 -0
- package/skills/astropy/SKILL.md +30 -0
- package/skills/async-worker-recovery/SKILL.md +44 -0
- package/skills/autopilot/SKILL.md +63 -0
- package/skills/autoresearch/SKILL.md +64 -0
- package/skills/autoskill/SKILL.md +116 -0
- package/skills/babysit/SKILL.md +43 -0
- package/skills/benchling-integration/SKILL.md +106 -0
- package/skills/bgpt-paper-search/SKILL.md +67 -0
- package/skills/biopython/SKILL.md +29 -0
- package/skills/bioservices/SKILL.md +96 -0
- package/skills/brainstorming/SKILL.md +104 -0
- package/skills/cancel/SKILL.md +85 -0
- package/skills/ccg/SKILL.md +87 -0
- package/skills/celery-pipeline/SKILL.md +30 -0
- package/skills/cellxgene-census/SKILL.md +104 -0
- package/skills/child-pi-spawning/SKILL.md +85 -0
- package/skills/cirq/SKILL.md +113 -0
- package/skills/citation-management/SKILL.md +91 -0
- package/skills/clinical-decision-support/SKILL.md +117 -0
- package/skills/clinical-reports/SKILL.md +118 -0
- package/skills/clinical-trial/SKILL.md +28 -0
- package/skills/cobrapy/SKILL.md +116 -0
- package/skills/configure-notifications/SKILL.md +85 -0
- package/skills/consciousness-council/SKILL.md +120 -0
- package/skills/context-artifact-hygiene/SKILL.md +85 -0
- package/skills/context-mode-ops/SKILL.md +87 -0
- package/skills/dask/SKILL.md +85 -0
- package/skills/database-lookup/SKILL.md +118 -0
- package/skills/datamol/SKILL.md +108 -0
- package/skills/debug/SKILL.md +32 -0
- package/skills/deep-dive/SKILL.md +114 -0
- package/skills/deep-interview/SKILL.md +90 -0
- package/skills/deepchem/SKILL.md +117 -0
- package/skills/deepinit/SKILL.md +100 -0
- package/skills/deeptools/SKILL.md +118 -0
- package/skills/delegation-patterns/SKILL.md +56 -0
- package/skills/depmap/SKILL.md +94 -0
- package/skills/dhdna-profiler/SKILL.md +86 -0
- package/skills/diffdock/SKILL.md +101 -0
- package/skills/dispatching-parallel-agents/SKILL.md +119 -0
- package/skills/dnanexus-integration/SKILL.md +118 -0
- package/skills/do/SKILL.md +48 -0
- package/skills/docker-sandbox/SKILL.md +29 -0
- package/skills/docx/SKILL.md +119 -0
- package/skills/esm/SKILL.md +116 -0
- package/skills/etetoolkit/SKILL.md +103 -0
- package/skills/event-log-tracing/SKILL.md +85 -0
- package/skills/exa-search/SKILL.md +72 -0
- package/skills/executing-plans/SKILL.md +69 -0
- package/skills/exploratory-data-analysis/SKILL.md +118 -0
- package/skills/external-context/SKILL.md +80 -0
- package/skills/fastapi/SKILL.md +30 -0
- package/skills/finishing-a-development-branch/SKILL.md +106 -0
- package/skills/flowio/SKILL.md +114 -0
- package/skills/fluidsim/SKILL.md +108 -0
- package/skills/generate-image/SKILL.md +108 -0
- package/skills/geniml/SKILL.md +117 -0
- package/skills/geomaster/SKILL.md +109 -0
- package/skills/geopandas/SKILL.md +114 -0
- package/skills/get-available-resources/SKILL.md +100 -0
- package/skills/gget/SKILL.md +111 -0
- package/skills/ginkgo-cloud-lab/SKILL.md +52 -0
- package/skills/git-master/SKILL.md +85 -0
- package/skills/glycoengineering/SKILL.md +104 -0
- package/skills/gtars/SKILL.md +104 -0
- package/skills/hackernews-frontpage/SKILL.md +46 -0
- package/skills/histolab/SKILL.md +98 -0
- package/skills/how-it-works/SKILL.md +25 -0
- package/skills/hud/SKILL.md +86 -0
- package/skills/hugging-science/SKILL.md +93 -0
- package/skills/huggingface/SKILL.md +30 -0
- package/skills/hypogenic/SKILL.md +107 -0
- package/skills/hypothesis-generation/SKILL.md +118 -0
- package/skills/imaging-data-commons/SKILL.md +119 -0
- package/skills/infographics/SKILL.md +102 -0
- package/skills/iso-13485-certification/SKILL.md +114 -0
- package/skills/knowledge-agent/SKILL.md +83 -0
- package/skills/labarchive-integration/SKILL.md +98 -0
- package/skills/lamindb/SKILL.md +119 -0
- package/skills/landsat/SKILL.md +29 -0
- package/skills/latchbio-integration/SKILL.md +118 -0
- package/skills/latex-posters/SKILL.md +112 -0
- package/skills/learn-codebase/SKILL.md +24 -0
- package/skills/learner/SKILL.md +118 -0
- package/skills/literature-review/SKILL.md +118 -0
- package/skills/live-agent-lifecycle/SKILL.md +85 -0
- package/skills/mailbox-interactive/SKILL.md +85 -0
- package/skills/make-plan/SKILL.md +59 -0
- package/skills/markdown-mermaid-writing/SKILL.md +118 -0
- package/skills/market-research-reports/SKILL.md +119 -0
- package/skills/markitdown/SKILL.md +111 -0
- package/skills/markitdown-docs/SKILL.md +28 -0
- package/skills/matchms/SKILL.md +91 -0
- package/skills/matlab/SKILL.md +118 -0
- package/skills/matplotlib/SKILL.md +30 -0
- package/skills/mcp-setup/SKILL.md +84 -0
- package/skills/medchem/SKILL.md +109 -0
- package/skills/mem-search/SKILL.md +96 -0
- package/skills/modal/SKILL.md +104 -0
- package/skills/model-routing-context/SKILL.md +85 -0
- package/skills/molecular-dynamics/SKILL.md +116 -0
- package/skills/molfeat/SKILL.md +110 -0
- package/skills/multi-perspective-review/SKILL.md +85 -0
- package/skills/networkx/SKILL.md +111 -0
- package/skills/neurokit2/SKILL.md +114 -0
- package/skills/neuropixels-analysis/SKILL.md +112 -0
- package/skills/nilearn/SKILL.md +29 -0
- package/skills/observability-reliability/SKILL.md +43 -0
- package/skills/omc-doctor/SKILL.md +86 -0
- package/skills/omc-reference/SKILL.md +119 -0
- package/skills/omc-setup/SKILL.md +82 -0
- package/skills/omc-teams/SKILL.md +81 -0
- package/skills/omero-integration/SKILL.md +111 -0
- package/skills/open-notebook/SKILL.md +100 -0
- package/skills/openephys/SKILL.md +28 -0
- package/skills/opentrons-integration/SKILL.md +110 -0
- package/skills/optimize-for-gpu/SKILL.md +119 -0
- package/skills/orchestration/SKILL.md +85 -0
- package/skills/ownership-session-security/SKILL.md +43 -0
- package/skills/paper-lookup/SKILL.md +119 -0
- package/skills/paperzilla/SKILL.md +114 -0
- package/skills/parallel-web/SKILL.md +64 -0
- package/skills/pathfinder/SKILL.md +114 -0
- package/skills/pathml/SKILL.md +98 -0
- package/skills/pdf/SKILL.md +113 -0
- package/skills/peer-review/SKILL.md +119 -0
- package/skills/pennylane/SKILL.md +119 -0
- package/skills/phylogenetics/SKILL.md +102 -0
- package/skills/pi-extension-lifecycle/SKILL.md +41 -0
- package/skills/plan/SKILL.md +66 -0
- package/skills/polars/SKILL.md +114 -0
- package/skills/polars-bio/SKILL.md +84 -0
- package/skills/pptx/SKILL.md +118 -0
- package/skills/pptx-posters/SKILL.md +112 -0
- package/skills/primekg/SKILL.md +97 -0
- package/skills/project-session-manager/SKILL.md +85 -0
- package/skills/protocolsio-integration/SKILL.md +119 -0
- package/skills/pubmed-search/SKILL.md +29 -0
- package/skills/pufferlib/SKILL.md +103 -0
- package/skills/pydeseq2/SKILL.md +106 -0
- package/skills/pydicom/SKILL.md +115 -0
- package/skills/pyhealth/SKILL.md +117 -0
- package/skills/pylabrobot/SKILL.md +100 -0
- package/skills/pymatgen/SKILL.md +28 -0
- package/skills/pymc/SKILL.md +108 -0
- package/skills/pymoo/SKILL.md +90 -0
- package/skills/pyopenms/SKILL.md +119 -0
- package/skills/pysam/SKILL.md +118 -0
- package/skills/pyspark/SKILL.md +30 -0
- package/skills/pytdc/SKILL.md +102 -0
- package/skills/pytorch/SKILL.md +31 -0
- package/skills/pytorch-lightning/SKILL.md +119 -0
- package/skills/pyzotero/SKILL.md +104 -0
- package/skills/qiskit/SKILL.md +119 -0
- package/skills/qutip/SKILL.md +111 -0
- package/skills/ralph/SKILL.md +23 -0
- package/skills/ralplan/SKILL.md +105 -0
- package/skills/rdflib/SKILL.md +29 -0
- package/skills/rdkit/SKILL.md +30 -0
- package/skills/read-only-explorer/SKILL.md +85 -0
- package/skills/receiving-code-review/SKILL.md +103 -0
- package/skills/release/SKILL.md +117 -0
- package/skills/remember/SKILL.md +39 -0
- package/skills/requesting-code-review/SKILL.md +85 -0
- package/skills/requirements-to-task-packet/SKILL.md +65 -0
- package/skills/research-grants/SKILL.md +118 -0
- package/skills/research-lookup/SKILL.md +117 -0
- package/skills/research-reproducibility/SKILL.md +28 -0
- package/skills/resource-discovery-config/SKILL.md +43 -0
- package/skills/rowan/SKILL.md +100 -0
- package/skills/runtime-state-reader/SKILL.md +46 -0
- package/skills/safe-bash/SKILL.md +85 -0
- package/skills/scanpy/SKILL.md +32 -0
- package/skills/scholar-evaluation/SKILL.md +115 -0
- package/skills/scientific-brainstorming/SKILL.md +118 -0
- package/skills/scientific-critical-thinking/SKILL.md +119 -0
- package/skills/scientific-schematics/SKILL.md +116 -0
- package/skills/scientific-slides/SKILL.md +117 -0
- package/skills/scientific-visualization/SKILL.md +109 -0
- package/skills/scientific-writing/SKILL.md +119 -0
- package/skills/scikit-bio/SKILL.md +92 -0
- package/skills/scikit-learn/SKILL.md +99 -0
- package/skills/scikit-survival/SKILL.md +110 -0
- package/skills/sciomc/SKILL.md +86 -0
- package/skills/scvelo/SKILL.md +106 -0
- package/skills/scvi-tools/SKILL.md +114 -0
- package/skills/seaborn/SKILL.md +97 -0
- package/skills/secure-agent-orchestration-review/SKILL.md +47 -0
- package/skills/self-improve/SKILL.md +119 -0
- package/skills/semantic-compression/SKILL.md +62 -0
- package/skills/setup/SKILL.md +42 -0
- package/skills/shap/SKILL.md +103 -0
- package/skills/simpy/SKILL.md +116 -0
- package/skills/skill/SKILL.md +117 -0
- package/skills/skill-search/SKILL.md +67 -0
- package/skills/skillify/SKILL.md +46 -0
- package/skills/smart-explore/SKILL.md +94 -0
- package/skills/sqlite-pandas/SKILL.md +30 -0
- package/skills/stable-baselines3/SKILL.md +86 -0
- package/skills/state-mutation-locking/SKILL.md +44 -0
- package/skills/statistical-analysis/SKILL.md +108 -0
- package/skills/statsmodels/SKILL.md +29 -0
- package/skills/subagent-driven-development/SKILL.md +89 -0
- package/skills/sympy/SKILL.md +115 -0
- package/skills/system-prompts/SKILL.md +116 -0
- package/skills/systematic-debugging/SKILL.md +119 -0
- package/skills/team/SKILL.md +85 -0
- package/skills/test-driven-development/SKILL.md +84 -0
- package/skills/tiledbvcf/SKILL.md +119 -0
- package/skills/timeline-report/SKILL.md +85 -0
- package/skills/timesfm-forecasting/SKILL.md +112 -0
- package/skills/torch-geometric/SKILL.md +118 -0
- package/skills/torchdrug/SKILL.md +118 -0
- package/skills/trace/SKILL.md +118 -0
- package/skills/transformers/SKILL.md +110 -0
- package/skills/treatment-plans/SKILL.md +119 -0
- package/skills/ui-render-performance/SKILL.md +41 -0
- package/skills/ultragoal/SKILL.md +63 -0
- package/skills/ultraqa/SKILL.md +85 -0
- package/skills/ultrawork/SKILL.md +20 -0
- package/skills/umap-learn/SKILL.md +119 -0
- package/skills/usfiscaldata/SKILL.md +118 -0
- package/skills/using-git-worktrees/SKILL.md +112 -0
- package/skills/using-superpowers/SKILL.md +85 -0
- package/skills/using-vetc/SKILL.md +92 -0
- package/skills/vaex/SKILL.md +111 -0
- package/skills/venue-templates/SKILL.md +113 -0
- package/skills/verification-before-completion/SKILL.md +88 -0
- package/skills/verification-before-done/SKILL.md +68 -0
- package/skills/verify/SKILL.md +33 -0
- package/skills/version-bump/SKILL.md +54 -0
- package/skills/vetc-analyze-ba/SKILL.md +117 -0
- package/skills/vetc-analyze-codebase/SKILL.md +118 -0
- package/skills/vetc-api-design/SKILL.md +103 -0
- package/skills/vetc-brainstorming/SKILL.md +116 -0
- package/skills/vetc-change-proposal/SKILL.md +111 -0
- package/skills/vetc-cicd/SKILL.md +113 -0
- package/skills/vetc-continuous-learning/SKILL.md +115 -0
- package/skills/vetc-deep-interview/SKILL.md +103 -0
- package/skills/vetc-docgen/SKILL.md +108 -0
- package/skills/vetc-frontend-patterns/SKILL.md +99 -0
- package/skills/vetc-iterative-retrieval/SKILL.md +110 -0
- package/skills/vetc-java-patterns/SKILL.md +113 -0
- package/skills/vetc-meta-skill-creator/SKILL.md +99 -0
- package/skills/vetc-oracle-patterns/SKILL.md +109 -0
- package/skills/vetc-performance-testing/SKILL.md +104 -0
- package/skills/vetc-pr-response/SKILL.md +106 -0
- package/skills/vetc-ralph/SKILL.md +108 -0
- package/skills/vetc-ralplan/SKILL.md +116 -0
- package/skills/vetc-receiving-review/SKILL.md +106 -0
- package/skills/vetc-reconcile-patterns/SKILL.md +117 -0
- package/skills/vetc-refactoring/SKILL.md +96 -0
- package/skills/vetc-runbook/SKILL.md +118 -0
- package/skills/vetc-sast/SKILL.md +118 -0
- package/skills/vetc-sdlc/SKILL.md +97 -0
- package/skills/vetc-security/SKILL.md +117 -0
- package/skills/vetc-spec-driven/SKILL.md +111 -0
- package/skills/vetc-spec-quality/SKILL.md +117 -0
- package/skills/vetc-systematic-debugging/SKILL.md +74 -0
- package/skills/vetc-tdd/SKILL.md +96 -0
- package/skills/vetc-thinking-pm/SKILL.md +110 -0
- package/skills/vetc-ui-visual-qa/SKILL.md +117 -0
- package/skills/vetc-verify/SKILL.md +101 -0
- package/skills/visual-verdict/SKILL.md +59 -0
- package/skills/what-if-oracle/SKILL.md +87 -0
- package/skills/widget-rendering/SKILL.md +85 -0
- package/skills/wiki/SKILL.md +69 -0
- package/skills/workspace-isolation/SKILL.md +85 -0
- package/skills/worktree-isolation/SKILL.md +85 -0
- package/skills/wowerpoint/SKILL.md +101 -0
- package/skills/writer-memory/SKILL.md +82 -0
- package/skills/writing-plans/SKILL.md +115 -0
- package/skills/writing-skills/SKILL.md +115 -0
- package/skills/xgboost/SKILL.md +29 -0
- package/skills/xgboost-ts/SKILL.md +28 -0
- package/skills/xlsx/SKILL.md +111 -0
- package/skills/zarr-python/SKILL.md +101 -0
- package/src/categories.ts +383 -0
- package/src/format.ts +104 -0
- package/src/indexer.ts +101 -0
- package/src/proactive.ts +51 -0
- package/src/scanner.ts +85 -0
- package/src/search.ts +89 -0
- package/src/strip.ts +29 -0
- package/src/synonyms.ts +83 -0
- package/src/text.ts +118 -0
- package/src/types.ts +64 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dnanexus-integration
|
|
3
|
+
description: DNAnexus cloud genomics platform. Build apps/applets, manage data (upload/download), dxpy Python SDK, run workflows, FASTQ/BAM/VCF, for genomics pipeline development and execution.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DNAnexus Integration
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
DNAnexus is a cloud platform for biomedical data analysis and genomics. Build and deploy apps/applets, manage data objects, run workflows, and use the dxpy Python SDK for genomics pipeline development and execution.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
This skill should be used when:
|
|
15
|
+
- Creating, building, or modifying DNAnexus apps/applets
|
|
16
|
+
- Uploading, downloading, searching, or organizing files and records
|
|
17
|
+
- Running analyses, monitoring jobs, creating workflows
|
|
18
|
+
- Writing scripts using dxpy to interact with the platform
|
|
19
|
+
- Setting up dxapp.json, managing dependencies, using Docker
|
|
20
|
+
- Processing FASTQ, BAM, VCF, or other bioinformatics files
|
|
21
|
+
- Managing projects, permissions, or platform resources
|
|
22
|
+
|
|
23
|
+
## Core Capabilities
|
|
24
|
+
|
|
25
|
+
The skill is organized into five main areas, each with detailed reference documentation:
|
|
26
|
+
|
|
27
|
+
### 1. App Development
|
|
28
|
+
|
|
29
|
+
**Purpose**: Create executable programs (apps/applets) that run on the DNAnexus platform.
|
|
30
|
+
|
|
31
|
+
**Key Operations**:
|
|
32
|
+
- Generate app skeleton with `dx-app-wizard`
|
|
33
|
+
- Write Python or Bash apps with proper entry points
|
|
34
|
+
- Handle input/output data objects
|
|
35
|
+
- Deploy with `dx build` or `dx build --app`
|
|
36
|
+
- Test apps on the platform
|
|
37
|
+
|
|
38
|
+
**Common Use Cases**:
|
|
39
|
+
- Bioinformatics pipelines (alignment, variant calling)
|
|
40
|
+
- Data processing workflows
|
|
41
|
+
- Quality control and filtering
|
|
42
|
+
|
|
43
|
+
### 2. Data Operations
|
|
44
|
+
|
|
45
|
+
**Purpose**: Manage files, records, and other data objects on the platform.
|
|
46
|
+
|
|
47
|
+
**Key Operations**:
|
|
48
|
+
- Upload/download files with `dxpy.upload_local_file()` and `dxpy.download_dxfile()`
|
|
49
|
+
- Create and manage records with metadata
|
|
50
|
+
- Search for data objects by name, properties, or type
|
|
51
|
+
- Clone data between projects
|
|
52
|
+
- Manage project folders and permissions
|
|
53
|
+
|
|
54
|
+
**Common Use Cases**:
|
|
55
|
+
- Uploading sequencing data (FASTQ files)
|
|
56
|
+
- Organizing analysis results
|
|
57
|
+
- Searching for specific samples or experiments
|
|
58
|
+
|
|
59
|
+
### 3. Job Execution
|
|
60
|
+
|
|
61
|
+
**Purpose**: Run analyses, monitor execution, and orchestrate workflows.
|
|
62
|
+
|
|
63
|
+
**Key Operations**:
|
|
64
|
+
- Launch jobs with `applet.run()` or `app.run()`
|
|
65
|
+
- Monitor job status and logs
|
|
66
|
+
- Create subjobs for parallel processing
|
|
67
|
+
- Build and run multi-step workflows
|
|
68
|
+
- Chain jobs with output references
|
|
69
|
+
|
|
70
|
+
**Common Use Cases**:
|
|
71
|
+
- Running genomics analyses on sequencing data
|
|
72
|
+
- Parallel processing of multiple samples
|
|
73
|
+
- Multi-step analysis pipelines
|
|
74
|
+
|
|
75
|
+
### 4. Python SDK (dxpy)
|
|
76
|
+
|
|
77
|
+
**Purpose**: Programmatic access to DNAnexus platform through Python.
|
|
78
|
+
|
|
79
|
+
**Key Operations**:
|
|
80
|
+
- Work with data object handlers (DXFile, DXRecord, DXApplet, etc.)
|
|
81
|
+
- Use high-level functions for common tasks
|
|
82
|
+
- Make direct API calls for advanced operations
|
|
83
|
+
- Create links and references between objects
|
|
84
|
+
- Search and discover platform resources
|
|
85
|
+
|
|
86
|
+
**Common Use Cases**:
|
|
87
|
+
- Automation scripts for data management
|
|
88
|
+
- Custom analysis pipelines
|
|
89
|
+
- Batch processing workflows
|
|
90
|
+
|
|
91
|
+
### 5. Configuration and Dependencies
|
|
92
|
+
|
|
93
|
+
**Purpose**: Configure app metadata and manage dependencies.
|
|
94
|
+
|
|
95
|
+
**Key Operations**:
|
|
96
|
+
- Write dxapp.json with inputs, outputs, and run specs
|
|
97
|
+
- Install system packages (execDepends)
|
|
98
|
+
- Bundle custom tools and resources
|
|
99
|
+
- Use assets for shared dependencies
|
|
100
|
+
- Integrate Docker containers
|
|
101
|
+
- Configure instance types and timeouts
|
|
102
|
+
|
|
103
|
+
**Common Use Cases**:
|
|
104
|
+
- Defining app input/output specifications
|
|
105
|
+
- Installing bioinformatics tools (samtools, bwa, etc.)
|
|
106
|
+
|
|
107
|
+
## Quick Start Examples
|
|
108
|
+
|
|
109
|
+
### Upload and Analyze Data
|
|
110
|
+
|
|
111
|
+
import dxpy
|
|
112
|
+
|
|
113
|
+
# Upload input file
|
|
114
|
+
input_file = dxpy.upload_local_file("sample.fastq", project="project-xxxx")
|
|
115
|
+
|
|
116
|
+
# Run analysis
|
|
117
|
+
|
|
118
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: do
|
|
3
|
+
description: Execute a phased implementation plan using subagents. Use when asked to execute, run, or carry out a plan — especially one created by make-plan.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Do Plan
|
|
7
|
+
|
|
8
|
+
You are an ORCHESTRATOR. Deploy subagents to execute *all* work. Do not do the work yourself except to coordinate, route context, and verify that each subagent completed its assigned checklist.
|
|
9
|
+
|
|
10
|
+
## Execution Protocol
|
|
11
|
+
|
|
12
|
+
### Rules
|
|
13
|
+
|
|
14
|
+
- Each phase uses fresh subagents where noted (or when context is large/unclear)
|
|
15
|
+
- Assign one clear objective per subagent and require evidence (commands run, outputs, files changed)
|
|
16
|
+
- Do not advance to the next step until the assigned subagent reports completion and the orchestrator confirms it matches the plan
|
|
17
|
+
|
|
18
|
+
### During Each Phase
|
|
19
|
+
|
|
20
|
+
Deploy an "Implementation" subagent to:
|
|
21
|
+
1. Execute the implementation as specified
|
|
22
|
+
2. COPY patterns from documentation, don't invent
|
|
23
|
+
3. Cite documentation sources in code comments when using unfamiliar APIs
|
|
24
|
+
4. If an API seems missing, STOP and verify — don't assume it exists
|
|
25
|
+
|
|
26
|
+
### After Each Phase
|
|
27
|
+
|
|
28
|
+
Deploy subagents for each post-phase responsibility:
|
|
29
|
+
1. **Run verification checklist** — Deploy a "Verification" subagent to prove the phase worked
|
|
30
|
+
2. **Anti-pattern check** — Deploy an "Anti-pattern" subagent to grep for known bad patterns from the plan
|
|
31
|
+
3. **Code quality review** — Deploy a "Code Quality" subagent to review changes
|
|
32
|
+
4. **Commit only if verified** — Deploy a "Commit" subagent *only after* verification passes; otherwise, do not commit
|
|
33
|
+
|
|
34
|
+
### Between Phases
|
|
35
|
+
|
|
36
|
+
Deploy a "Branch/Sync" subagent to:
|
|
37
|
+
- Push to working branch after each verified phase
|
|
38
|
+
- Prepare the next phase handoff so the next phase's subagents start fresh but have plan context
|
|
39
|
+
|
|
40
|
+
## Failure Modes to Prevent
|
|
41
|
+
|
|
42
|
+
- Don't invent APIs that "should" exist — verify against docs
|
|
43
|
+
- Don't add undocumented parameters — copy exact signatures
|
|
44
|
+
- Don't skip verification — deploy a verification subagent and run the checklist
|
|
45
|
+
- Don't commit before verification passes (or without explicit orchestrator approval)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docker-sandbox
|
|
3
|
+
description: Containerized execution environments and lab automation. Use when running code in Docker containers, managing development environments, CI/CD pipelines, or automating lab instrument control. Trigger on imports of docker, or mentions of container, sandbox, isolated environment, lab automation, instrument control.
|
|
4
|
+
---
|
|
5
|
+
# docker-sandbox
|
|
6
|
+
|
|
7
|
+
Use this skill for containerized code execution and lab automation.
|
|
8
|
+
|
|
9
|
+
## Core patterns
|
|
10
|
+
|
|
11
|
+
- **Run**: `docker.from_env().containers.run('image', command, volumes={'/host': {'bind': '/container', 'mode': 'rw'}})`.
|
|
12
|
+
- **Build**: `docker.from_env().images.build(path='.', tag='my-image')`.
|
|
13
|
+
- **Exec**: `container.exec_run('python script.py')` for running inside a container.
|
|
14
|
+
- **Cleanup**: Always `container.remove()` and `image.remove()` after use.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- Always set `mem_limit` and `cpu_count` to prevent resource exhaustion.
|
|
19
|
+
- Mount volumes read-only when writes aren't needed: `mode='ro'`.
|
|
20
|
+
- Use `detach=True` for long-running processes; `detach=False` for scripts.
|
|
21
|
+
- Clean up containers: `docker.from_env().containers.prune()`.
|
|
22
|
+
|
|
23
|
+
## Anti-patterns
|
|
24
|
+
|
|
25
|
+
- Don't run containers without resource limits — runaway processes kill the host.
|
|
26
|
+
- Don't mount sensitive directories (`/etc`, `~/.ssh`) into containers.
|
|
27
|
+
- Don't use `latest` tag in production — pin specific image versions.
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docx
|
|
3
|
+
description: "Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DOCX creation, editing, and analysis
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A .docx file is a ZIP archive containing XML files.
|
|
11
|
+
|
|
12
|
+
## Quick Reference
|
|
13
|
+
|
|
14
|
+
| Task | Approach |
|
|
15
|
+
|------|----------|
|
|
16
|
+
| Read/analyze content | `pandoc` or unpack for raw XML |
|
|
17
|
+
| Create new document | Use `docx-js` - see Creating New Documents below |
|
|
18
|
+
| Edit existing document | Unpack → edit XML → repack - see Editing Existing Documents below |
|
|
19
|
+
|
|
20
|
+
### Converting .doc to .docx
|
|
21
|
+
|
|
22
|
+
Legacy `.doc` files must be converted before editing:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
python scripts/office/soffice.py --headless --convert-to docx document.doc
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Reading Content
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Text extraction with tracked changes
|
|
32
|
+
pandoc --track-changes=all document.docx -o output.md
|
|
33
|
+
|
|
34
|
+
# Raw XML access
|
|
35
|
+
python scripts/office/unpack.py document.docx unpacked/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Converting to Images
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python scripts/office/soffice.py --headless --convert-to pdf document.docx
|
|
42
|
+
pdftoppm -jpeg -r 150 document.pdf page
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Accepting Tracked Changes
|
|
46
|
+
|
|
47
|
+
To produce a clean document with all tracked changes accepted (requires LibreOffice):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
python scripts/accept_changes.py input.docx output.docx
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Creating New Documents
|
|
56
|
+
|
|
57
|
+
Generate .docx files with JavaScript, then validate. Install: `npm install -g docx`
|
|
58
|
+
|
|
59
|
+
### Validation
|
|
60
|
+
After creating the file, validate it. If validation fails, unpack, fix the XML, and repack.
|
|
61
|
+
```bash
|
|
62
|
+
python scripts/office/validate.py doc.docx
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Page Size
|
|
66
|
+
|
|
67
|
+
```javascript
|
|
68
|
+
// CRITICAL: docx-js defaults to A4, not US Letter
|
|
69
|
+
// Always set page size explicitly for consistent results
|
|
70
|
+
sections: [{
|
|
71
|
+
properties: {
|
|
72
|
+
page: {
|
|
73
|
+
size: {
|
|
74
|
+
width: 12240, // 8.5 inches in DXA
|
|
75
|
+
height: 15840 // 11 inches in DXA
|
|
76
|
+
},
|
|
77
|
+
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 inch margins
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
### Styles (Override Built-in Headings)
|
|
82
|
+
|
|
83
|
+
Use Arial as the default font (universally supported). Keep titles black for readability.
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
const doc = new Document({
|
|
87
|
+
styles: {
|
|
88
|
+
default: { document: { run: { font: "Arial", size: 24 } } }, // 12pt default
|
|
89
|
+
paragraphStyles: [
|
|
90
|
+
// IMPORTANT: Use exact IDs to override built-in styles
|
|
91
|
+
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
|
|
92
|
+
run: { size: 32, bold: true, font: "Arial" },
|
|
93
|
+
paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // outlineLevel required for TOC
|
|
94
|
+
{ id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
|
|
95
|
+
run: { size: 28, bold: true, font: "Arial" },
|
|
96
|
+
|
|
97
|
+
### Lists (NEVER use unicode bullets)
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// ❌ WRONG - never manually insert bullet characters
|
|
101
|
+
new Paragraph({ children: [new TextRun("• Item")] }) // BAD
|
|
102
|
+
new Paragraph({ children: [new TextRun("\u2022 Item")] }) // BAD
|
|
103
|
+
|
|
104
|
+
// ✅ CORRECT - use numbering config with LevelFormat.BULLET
|
|
105
|
+
const doc = new Document({
|
|
106
|
+
numbering: {
|
|
107
|
+
config: [
|
|
108
|
+
{ reference: "bullets",
|
|
109
|
+
levels: [{ level: 0, format: LevelFormat.BULLET, text: "•", alignment: AlignmentType.LEFT,
|
|
110
|
+
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
|
|
111
|
+
{ reference: "numbers",
|
|
112
|
+
|
|
113
|
+
### Tables
|
|
114
|
+
|
|
115
|
+
**CRITICAL: Tables need dual widths** - set both `columnWidths` on the table AND `width` on each cell. Without both, tables render incorrectly on some platforms.
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
|
|
119
|
+
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: esm
|
|
3
|
+
description: Comprehensive toolkit for protein language models including ESM3 (generative multimodal protein design across sequence, structure, and function) and ESM C (efficient protein embeddings and representations). Use this skill when working with protein sequences, structures, or function prediction; designing novel proteins; generating protein embeddings; performing inverse folding; or conducting protein engineering tasks. Supports both local model usage and cloud-based Forge API for scalable inference.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ESM: Evolutionary Scale Modeling
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
ESM provides state-of-the-art protein language models for understanding, generating, and designing proteins. This skill enables working with two model families: ESM3 for generative protein design across sequence, structure, and function, and ESM C for efficient protein representation learning and embeddings.
|
|
11
|
+
|
|
12
|
+
## Core Capabilities
|
|
13
|
+
|
|
14
|
+
### 1. Protein Sequence Generation with ESM3
|
|
15
|
+
|
|
16
|
+
Generate novel protein sequences with desired properties using multimodal generative modeling.
|
|
17
|
+
|
|
18
|
+
**When to use:**
|
|
19
|
+
- Designing proteins with specific functional properties
|
|
20
|
+
- Completing partial protein sequences
|
|
21
|
+
- Generating variants of existing proteins
|
|
22
|
+
- Creating proteins with desired structural characteristics
|
|
23
|
+
|
|
24
|
+
**Basic usage:**
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from esm.models.esm3 import ESM3
|
|
28
|
+
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig
|
|
29
|
+
|
|
30
|
+
# Load model locally
|
|
31
|
+
model: ESM3InferenceClient = ESM3.from_pretrained("esm3-sm-open-v1").to("cuda")
|
|
32
|
+
|
|
33
|
+
# Create protein prompt
|
|
34
|
+
protein = ESMProtein(sequence="MPRT___KEND") # '_' represents masked positions
|
|
35
|
+
|
|
36
|
+
# Generate completion
|
|
37
|
+
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))
|
|
38
|
+
print(protein.sequence)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**For remote/cloud usage via Forge API:**
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
from esm.sdk.forge import ESM3ForgeInferenceClient
|
|
45
|
+
from esm.sdk.api import ESMProtein, GenerationConfig
|
|
46
|
+
|
|
47
|
+
# Connect to Forge
|
|
48
|
+
model = ESM3ForgeInferenceClient(model="esm3-medium-2024-08", url="https://forge.evolutionaryscale.ai", token="<token>")
|
|
49
|
+
|
|
50
|
+
# Generate
|
|
51
|
+
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See `(see docs)` for detailed ESM3 model specifications, advanced generation configurations, and multimodal prompting examples.
|
|
55
|
+
|
|
56
|
+
### 2. Structure Prediction and Inverse Folding
|
|
57
|
+
|
|
58
|
+
Use ESM3's structure track for structure prediction from sequence or inverse folding (sequence design from structure).
|
|
59
|
+
|
|
60
|
+
**Structure prediction:**
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig
|
|
64
|
+
|
|
65
|
+
# Predict structure from sequence
|
|
66
|
+
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
|
|
67
|
+
protein_with_structure = model.generate(
|
|
68
|
+
protein,
|
|
69
|
+
GenerationConfig(track="structure", num_steps=protein.sequence.count("_"))
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
# Access predicted structure
|
|
73
|
+
coordinates = protein_with_structure.coordinates # 3D coordinates
|
|
74
|
+
pdb_string = protein_with_structure.to_pdb()
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Inverse folding (sequence from structure):**
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
# Design sequence for a target structure
|
|
81
|
+
protein_with_structure = ESMProtein.from_pdb("target_structure.pdb")
|
|
82
|
+
protein_with_structure.sequence = None # Remove sequence
|
|
83
|
+
|
|
84
|
+
# Generate sequence that folds to this structure
|
|
85
|
+
designed_protein = model.generate(
|
|
86
|
+
protein_with_structure,
|
|
87
|
+
GenerationConfig(track="sequence", num_steps=50, temperature=0.7)
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 3. Protein Embeddings with ESM C
|
|
92
|
+
|
|
93
|
+
Generate high-quality embeddings for downstream tasks like function prediction, classification, or similarity analysis.
|
|
94
|
+
|
|
95
|
+
**When to use:**
|
|
96
|
+
- Extracting protein representations for machine learning
|
|
97
|
+
- Computing sequence similarities
|
|
98
|
+
- Feature extraction for protein classification
|
|
99
|
+
- Transfer learning for protein-related tasks
|
|
100
|
+
|
|
101
|
+
**Basic usage:**
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
from esm.models.esmc import ESMC
|
|
105
|
+
from esm.sdk.api import ESMProtein
|
|
106
|
+
|
|
107
|
+
# Load ESM C model
|
|
108
|
+
model = ESMC.from_pretrained("esmc-300m").to("cuda")
|
|
109
|
+
|
|
110
|
+
# Get embeddings
|
|
111
|
+
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
|
|
112
|
+
protein_tensor = model.encode(protein)
|
|
113
|
+
|
|
114
|
+
# Generate embeddings
|
|
115
|
+
embeddings = model.forward(protein_tensor)
|
|
116
|
+
```
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: etetoolkit
|
|
3
|
+
description: Phylogenetic tree toolkit (ETE). Tree manipulation (Newick/NHX), evolutionary event detection, orthology/paralogy, NCBI taxonomy, visualization (PDF/SVG), for phylogenomics.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ETE Toolkit Skill
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
ETE (Environment for Tree Exploration) is a toolkit for phylogenetic and hierarchical tree analysis. Manipulate trees, analyze evolutionary events, visualize results, and integrate with biological databases for phylogenomic research and clustering analysis.
|
|
11
|
+
|
|
12
|
+
## Core Capabilities
|
|
13
|
+
|
|
14
|
+
### 1. Tree Manipulation and Analysis
|
|
15
|
+
|
|
16
|
+
Load, manipulate, and analyze hierarchical tree structures with support for:
|
|
17
|
+
|
|
18
|
+
- **Tree I/O**: Read and write Newick, NHX, PhyloXML, and NeXML formats
|
|
19
|
+
- **Tree traversal**: Navigate trees using preorder, postorder, or levelorder strategies
|
|
20
|
+
- **Topology modification**: Prune, root, collapse nodes, resolve polytomies
|
|
21
|
+
- **Distance calculations**: Compute branch lengths and topological distances between nodes
|
|
22
|
+
- **Tree comparison**: Calculate Robinson-Foulds distances and identify topological differences
|
|
23
|
+
|
|
24
|
+
**Common patterns:**
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from ete3 import Tree
|
|
28
|
+
|
|
29
|
+
# Load tree from file
|
|
30
|
+
tree = Tree("tree.nw", format=1)
|
|
31
|
+
|
|
32
|
+
# Basic statistics
|
|
33
|
+
print(f"Leaves: {len(tree)}")
|
|
34
|
+
print(f"Total nodes: {len(list(tree.traverse()))}")
|
|
35
|
+
|
|
36
|
+
# Prune to taxa of interest
|
|
37
|
+
taxa_to_keep = ["species1", "species2", "species3"]
|
|
38
|
+
tree.prune(taxa_to_keep, preserve_branch_length=True)
|
|
39
|
+
|
|
40
|
+
# Midpoint root
|
|
41
|
+
midpoint = tree.get_midpoint_outgroup()
|
|
42
|
+
tree.set_outgroup(midpoint)
|
|
43
|
+
|
|
44
|
+
# Save modified tree
|
|
45
|
+
tree.write(outfile="rooted_tree.nw")
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Use `scripts/tree_operations.py` for command-line tree manipulation:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Display tree statistics
|
|
52
|
+
python scripts/tree_operations.py stats tree.nw
|
|
53
|
+
|
|
54
|
+
# Reroot tree
|
|
55
|
+
python scripts/tree_operations.py reroot tree.nw rooted.nw --midpoint
|
|
56
|
+
|
|
57
|
+
# Prune to specific taxa
|
|
58
|
+
python scripts/tree_operations.py prune tree.nw pruned.nw --keep-taxa "sp1,sp2,sp3"
|
|
59
|
+
|
|
60
|
+
# Show ASCII visualization
|
|
61
|
+
python scripts/tree_operations.py ascii tree.nw
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. Phylogenetic Analysis
|
|
65
|
+
|
|
66
|
+
Analyze gene trees with evolutionary event detection:
|
|
67
|
+
|
|
68
|
+
- **Sequence alignment integration**: Link trees to multiple sequence alignments (FASTA, Phylip)
|
|
69
|
+
- **Species naming**: Automatic or custom species extraction from gene names
|
|
70
|
+
- **Evolutionary events**: Detect duplication and speciation events using Species Overlap or tree reconciliation
|
|
71
|
+
- **Orthology detection**: Identify orthologs and paralogs based on evolutionary events
|
|
72
|
+
- **Gene family analysis**: Split trees by duplications, collapse lineage-specific expansions
|
|
73
|
+
|
|
74
|
+
**Workflow for gene tree analysis:**
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from ete3 import PhyloTree
|
|
78
|
+
|
|
79
|
+
# Load gene tree with alignment
|
|
80
|
+
tree = PhyloTree("gene_tree.nw", alignment="alignment.fasta")
|
|
81
|
+
|
|
82
|
+
# Set species naming function
|
|
83
|
+
def get_species(gene_name):
|
|
84
|
+
return gene_name.split("_")[0]
|
|
85
|
+
|
|
86
|
+
tree.set_species_naming_function(get_species)
|
|
87
|
+
|
|
88
|
+
# Detect evolutionary events
|
|
89
|
+
events = tree.get_descendant_evol_events()
|
|
90
|
+
|
|
91
|
+
# Analyze events
|
|
92
|
+
for node in tree.traverse():
|
|
93
|
+
if hasattr(node, "evoltype"):
|
|
94
|
+
if node.evoltype == "D":
|
|
95
|
+
print(f"Duplication at {node.name}")
|
|
96
|
+
elif node.evoltype == "S":
|
|
97
|
+
print(f"Speciation at {node.name}")
|
|
98
|
+
|
|
99
|
+
# Extract ortholog groups
|
|
100
|
+
ortho_groups = tree.get_speciation_trees()
|
|
101
|
+
for i, ortho_tree in enumerate(ortho_groups):
|
|
102
|
+
ortho_tree.write(outfile=f"ortholog_group_{i}.nw")
|
|
103
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: event-log-tracing
|
|
3
|
+
description: Structured event logging system for worker lifecycle, live agents, and crash recovery. Use when debugging worker crashes, tracing agent lifecycle, or investigating stale runs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# event-log-tracing
|
|
8
|
+
|
|
9
|
+
Every pi-crew run writes a persistent event log at `.crew/state/runs/<runId>/events.jsonl`. Events are the primary evidence for understanding what happened — especially when workers crash, agents get stuck, or runs become orphaned.
|
|
10
|
+
|
|
11
|
+
## Event Format
|
|
12
|
+
|
|
13
|
+
Every event is a JSON object on one line:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"time": "2026-05-14T10:27:52.000Z",
|
|
18
|
+
"type": "worker.spawned",
|
|
19
|
+
"runId": "team_20260514092752_218fe358085d7115",
|
|
20
|
+
"taskId": "01_explore",
|
|
21
|
+
"message": "Worker spawned: pid 12345",
|
|
22
|
+
"data": { "pid": 12345, "role": "explorer" },
|
|
23
|
+
"metadata": {
|
|
24
|
+
"seq": 42,
|
|
25
|
+
"provenance": "team_runner",
|
|
26
|
+
"fingerprint": "a1b2c3d4e5f6g7h8"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Required fields:** `time`, `type`, `runId`
|
|
32
|
+
**Optional fields:** `taskId`, `message`, `data`, `metadata`
|
|
33
|
+
**Metadata auto-populated:** `seq` (line number), `provenance` (who wrote it), `fingerprint` (for terminal events)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Event Taxonomy
|
|
38
|
+
|
|
39
|
+
### Worker Lifecycle Events (from child-pi.ts via onLifecycleEvent callback)
|
|
40
|
+
|
|
41
|
+
| Event | When | Data |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| `worker.spawned` | Child process starts with a PID | `{pid, cwd}` |
|
|
44
|
+
| `worker.spawn_error` | Spawn failed (no PID, binary not found, permission denied) | `{pid?, error}` |
|
|
45
|
+
| `worker.response_timeout` | No stdout for `responseTimeoutMs` (default 5 min) | `{pid, error}` |
|
|
46
|
+
| `worker.final_drain` | Child finished but lingered — SIGTERM sent | `{pid}` |
|
|
47
|
+
| `worker.hard_kill` | Child still alive after `hardKillMs` — SIGKILL sent | `{pid}` |
|
|
48
|
+
| `worker.exit` | Process exited (before close) | `{pid, exitCode}` |
|
|
49
|
+
| `worker.close` | stdio fully closed | `{pid, exitCode}` |
|
|
50
|
+
|
|
51
|
+
**Tracing worker crashes:**
|
|
52
|
+
- `worker.spawned` followed by `worker.exit` with non-zero code → worker crashed
|
|
53
|
+
- `worker.spawned` followed immediately by `worker.spawn_error` → spawn failed
|
|
54
|
+
- `worker.spawned` followed by `worker.response_timeout` → worker hung
|
|
55
|
+
- `worker.spawned` followed by `worker.final_drain` → worker lingered but completed
|
|
56
|
+
- `worker.spawned` followed by `worker.hard_kill` → worker had to be forcibly killed
|
|
57
|
+
|
|
58
|
+
**Tracing "worker blinks":**
|
|
59
|
+
- Widget shows agent appears and disappears within 1 frame
|
|
60
|
+
- Root cause: `worker.spawned` + very fast `worker.exit` (crash during spawn)
|
|
61
|
+
- Look for `worker.spawn_error` with error details (API key, model, binary)
|
|
62
|
+
- `executeWorkers=false` (scaffold mode) means no `worker.spawned` at all — agent completes instantly
|
|
63
|
+
|
|
64
|
+
### Live Agent Events (from live-agent-manager.ts)
|
|
65
|
+
|
|
66
|
+
| Event | When | Data |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| `live_agent.registered` | `registerLiveAgent` called | `{agentId, role, agent, workspaceId, runId, taskId}` |
|
|
69
|
+
| `live_agent.terminated` | `terminateLiveAgent` called | `{agentId, status, role, workspaceId, runId, taskId}` |
|
|
70
|
+
|
|
71
|
+
These track the full lifecycle from spawn to cleanup.
|
|
72
|
+
|
|
73
|
+
### Run Lifecycle Events (from task-runner.ts, team-runner.ts)
|
|
74
|
+
|
|
75
|
+
| Event | When | Data |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `run.created` | Run manifest created | `{team, workflow}` |
|
|
78
|
+
| `run.running` | Workflow execution begins | — |
|
|
79
|
+
| `run.completed` | All tasks done, no errors | — |
|
|
80
|
+
| `run.failed` | Run failed (fatal error, cancelled) | `{reason?}` |
|
|
81
|
+
| `task.started` | Task worker spawned | `{role, agent, runtime, cwd}` |
|
|
82
|
+
| `task.progress` | Progress event (activity, turns, tokens) | `{eventType, activityState, toolCount, turns, tokens}` |
|
|
83
|
+
| `task.attention` | Attention needed (no yield, completion guard, etc.) | `{reason, activityState}` |
|
|
84
|
+
| `task.completed` | Task finished successfully | — |
|
|
85
|
+
| `task.failed` | Task failed | `{error?}` |
|