Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/droxer/synapse/data-analysisnpx skills add droxer/Synapse --skill data-analysisgit clone --depth 1 https://github.com/droxer/SynapseWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00050 | $0.01275 |
| Opus 5 | $0.00025 | $0.00638 |
| Sonnet 5 | $0.00010 | $0.00255 |
| Haiku 4.5 | $0.00005 | $0.00128 |
Grade A, and why
data-analysis scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Data Analysis Methodology
Prioritize correctness over speed — a wrong insight is worse than no insight.
Step 1: Data Ingestion
Uploaded files are located at /home/user/uploads/. Always list that directory first to discover available files:
import os
for f in os.listdir('/home/user/uploads/'):
print(f)
Tool selection: Use code_run as the primary execution tool — it is universally supported across all sandbox providers. Use code_interpret only when you need rich output capture (e.g., inline dataframes, rendered plots); note that code_interpret may not be available in all environments.
Examine the raw file (first 20-30 lines) to understand format, delimiter, encoding, headers, and obvious quality issues before loading.
Load by file type — always specify dtypes for known columns and parse_dates for date columns:
| Extension | Loader |
|---|---|
.csv |
pd.read_csv('/home/user/uploads/file.csv', parse_dates=[...]) |
.tsv |
pd.read_csv('/home/user/uploads/file.tsv', sep='\t', parse_dates=[...]) |
.xlsx / .xls |
pd.read_excel('/home/user/uploads/file.xlsx', engine='openpyxl') |
.json |
pd.read_json('/home/user/uploads/file.json') |
.parquet |
pd.read_parquet('/home/user/uploads/file.parquet') |
Step 2: Mandatory EDA
Run this diagnostic block on every dataset before any analysis:
print(f"Shape: {df.shape}")
print(f"\nDtypes:\n{df.dtypes}")
print(f"\nMissing values:\n{df.isnull().sum()[df.isnull().sum() > 0]}")
print(f"\nDuplicate rows: {df.duplicated().sum()}")
print(f"\nNumeric summary:\n{df.describe()}")
for col in df.select_dtypes(include='object').columns:
n_unique = df[col].nunique()
print(f"\n{col}: {n_unique} unique values")
if n_unique <= 20:
print(df[col].value_counts())
Do not skip this step. Report findings before proceeding to analysis.
After completing EDA, send a progress update via user_message summarizing the dataset shape, quality issues found, and your planned analysis approach.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 118 lines · 50 tokens per session scan A 8c546b4f71e6
data-analysis is a skill published in the GitHub repository droxer/Synapse (5 stars, last pushed 2mo ago), licensed Apache-2.0. It adds 50 tokens to every session and 1,275 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
crewai-multi-agent
Multi-agent orchestration framework for autonomous AI collaboration. Use when building teams of specialized agents working together on complex tasks, when you need role-based agent collaboration with memory, or for production workflows requiring sequential/hierarchical execution. Built without LangChain dependencies…
agent-framework-py-release
Use when cutting a Python release for the microsoft/agent-framework monorepo. Triggers on "bump py versions", "cut a python release", "prepare release PR for python", "release py packages", "bump python to X.Y.Z", or similar requests to bump Python package versions and prepare a release PR. Handles all four lifecycle…
python-package-management
Guide for managing packages in the Agent Framework Python monorepo, including creating new connector packages, versioning, and the lazy-loading pattern. Use this when adding, modifying, or releasing packages.
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
verify-samples-tool
How to use the verify-samples tool to run, verify, and manage sample definitions in the Agent Framework repository. Use this when adding, updating, or running sample verification.
build-and-test
How to build and test .NET projects in the Agent Framework repository. Use this when verifying or testing changes.