Correlation and Cointegration Analysis
HKUDS/Vibe-Trading
Finds co-moving assets and tests them for cointegration, with workflows for correlation studies, sector clustering, hedge ratios and pair-trading signals.
“Using Density-Fit Correlations in Coot”
$ npx skills add pemsley/coot --skill coot-correlations -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pemsley/coot coot-correlations --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/mcp/docs/skills/correlations .claude/skills/coot-correlations && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .claude/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlationsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pemsley/coot --skill coot-correlations -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pemsley/coot coot-correlations --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/mcp/docs/skills/correlations .agents/skills/coot-correlations && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .agents/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pemsley/coot --skill coot-correlations -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pemsley/coot coot-correlations --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/mcp/docs/skills/correlations .cursor/skills/coot-correlations && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .cursor/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pemsley/coot.git --path mcp/docs/skills/correlations--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pemsley/coot --skill coot-correlations -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pemsley/coot coot-correlations --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/mcp/docs/skills/correlations .gemini/skills/coot-correlations && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .gemini/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pemsley/coot coot-correlationsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pemsley/coot --skill coot-correlations -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .github/skills && cp -r skills-src/mcp/docs/skills/correlations .github/skills/coot-correlations && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .github/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pemsley/coot --skill coot-correlations -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pemsley/coot coot-correlations --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pemsley/coot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/mcp/docs/skills/correlations .opencode/skills/coot-correlations && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "coot-correlations" agent skill from https://github.com/pemsley/coot/tree/main/mcp/docs/skills/correlations into .opencode/skills/coot-correlations/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "coot-correlations", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
coot-correlationsCoot Correlations is a skill in pemsley/coot (168 stars). Its SKILL.md is about 3.5k tokens. Licence: GPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6e3c026. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Coot Correlations loads about 3.5k tokens when it runs. Until then it costs about 14 tokens; SKILL.md has 808 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pemsley/coot at commit 6e3c026, republished under its GPL-3.0 licence (© pemsley). 808 words, ~3,545 tokens.
.claude/skills/coot-correlations/SKILL.md (or your agent's skills folder).These functions are used to assess how well a molecular model fits into electron density maps. They are essential for model validation and identifying poorly-fitted regions.
map_to_model_correlation_stats_per_residue_range_py()Purpose: Find residues with poor density fit by analyzing correlation statistics across the entire chain.
Use Case: "Which side chain is the worst fitting to density?" - Use this function to get comprehensive density fit statistics for all residues.
Function Signature:
PyObject *map_to_model_correlation_stats_per_residue_range_py(
int imol, # Model molecule number
const std::string &chain_id, # Chain identifier
int imol_map, # Map molecule number
unsigned int n_residue_per_residue_range, # Number of residues per range (typically 1)
short int exclude_NOC_flag # Exclude N, O, C atoms (1=yes, 0=no)
)Parameters:
imol: The model molecule indexchain_id: The chain identifier (e.g., "A", "B")imol_map: The map molecule index to correlate againstn_residue_per_residue_range: Window size for averaging (use 1 for per-residue stats)exclude_NOC_flag: Whether to exclude backbone N, O, C atoms (1 to exclude, 0 to include)IMPORTANT BUG: When exclude_NOC_flag=0, the side-chain correlation array (stats[1]) returns all zeros/NaN values. To get valid side-chain correlations, you must use exclude_NOC_flag=1.
Returns: A list with two elements:
stats[0]: All-atom correlations - [[chain, resno, ins_code], [n_points, correlation]]stats[1]: Side-chain correlations (only valid when exclude_NOC_flag=1)Example Usage:
# Get per-residue correlation stats for chain A
# Use exclude_NOC_flag=1 to get valid side-chain correlations
stats = map_to_model_correlation_stats_per_residue_range_py(
imol=0, # Model molecule
chain_id="A", # Chain A
imol_map=1, # Map molecule
n_residue_per_residue_range=1, # Per-residue statistics
exclude_NOC_flag=1 # MUST be 1 for valid side-chain correlations
)
all_atom = stats[0] # All-atom correlations
sidechain = stats[1] # Side-chain correlations
# Find residues with poor all-atom correlation
for res in all_atom:
resno = res[0][1]
n_points = res[1][0]
corr = res[1][1]
if corr < 0.7:
print(f"Poor fit: residue {resno}, correlation={corr:.3f}")map_to_model_correlation_py()Purpose: Calculate the overall correlation for specific residues and their neighbors.
Use Case: Evaluate the fit of a specific region after refinement.
Function Signature:
PyObject *map_to_model_correlation_py(
int imol,
PyObject *residue_specs, # List of residue specs to evaluate
PyObject *neighb_residue_specs, # Neighboring residues to exclude from grid
unsigned short int atom_mask_mode, # Which atoms to include (see below)
int imol_map
)Atom Mask Modes:
0: All atoms1: Main-chain atoms if standard amino acid, else all atoms2: Side-chain atoms if standard amino acid, else all atoms 3: Side-chain atoms excluding CB if standard amino acid, else all atoms4: Main-chain atoms if standard amino acid, else nothing5: Side-chain atoms if standard amino acid, else nothing10: Atom radius dependent on B-factorReturns: Float - correlation coefficient between model and map
Example Usage:
# Evaluate side-chain fit for residues 40-44
residue_specs = [[chain_id, res_no, ins_code] for res_no in range(40, 45)]
correlation = map_to_model_correlation_py(
imol=1,
residue_specs=residue_specs,
neighb_residue_specs=[], # No neighbors to exclude
atom_mask_mode=2, # Side-chain atoms only
imol_map=2
)
print(f"Side-chain correlation: {correlation}")map_to_model_correlation_stats_py()Purpose: Get detailed statistics (mean, std dev, etc.) for map-model correlation.
Function Signature:
PyObject *map_to_model_correlation_stats_py(
int imol,
PyObject *residue_specs,
PyObject *neighb_residue_specs,
unsigned short int atom_mask_mode,
int imol_map
)Returns: Statistics object with mean, std dev, min, max correlation values
map_to_model_correlation_per_residue_py()Purpose: Get correlation values individually for each specified residue.
Function Signature:
PyObject *map_to_model_correlation_per_residue_py(
int imol,
PyObject *residue_specs,
unsigned short int atom_mask_mode,
int imol_map
)Returns: List of (residue_spec, correlation) pairs
Example Usage:
# Get per-residue correlations for a chain
residues = get_residues_in_chain_py(imol=1, chain_id="A")
correlations = map_to_model_correlation_per_residue_py(
imol=1,
residue_specs=residues,
atom_mask_mode=0, # All atoms
imol_map=2
)
# Find worst 10 residues
worst_10 = sorted(correlations, key=lambda x: x[1])[:10]
for spec, corr in worst_10:
print(f"Residue {spec}: correlation = {corr}")all_molecule_ramachandran_score_py()Purpose: Comprehensive Ramachandran validation for an entire molecule.
Use Case: "Validate the backbone geometry" or "Find Ramachandran outliers"
Function Signature:
PyObject *all_molecule_ramachandran_score_py(int imol)Returns: A list of exactly 6 elements (confirmed from C++ source):
rama_data[0]: overall score (float)rama_data[1]: n_residues (int)rama_data[2]: score_non_sec_str (float)rama_data[3]: n_residues_non_sec_str (int)rama_data[4]: n_zeros (int)rama_data[5]: per-residue list ← this is what you wantEach per-residue entry: [[phi, psi], [chain_id, resno, ins_code], probability, [prev_resname, this_resname, next_resname]]
rama_data[5] and rama_data[-1] are equivalent. Both are correct.
Score Interpretation:
Example Usage:
rama_data = coot.all_molecule_ramachandran_score_py(0)
per_res = rama_data[5] # index 5 = per-residue list (confirmed from C++ source)
# Filter for chain A outliers
chain_a_outliers = [(r[1][1], r[1][2], r[2], r[3][1])
for r in per_res
if isinstance(r, list) and r[1][0] == "A" and r[2] < 0.02]
# Sort worst first
chain_a_outliers.sort(key=lambda x: x[2])
for resno, ins, prob, resname in chain_a_outliers:
print(f"A/{resno} {resname} prob={prob:.6f} *** OUTLIER ***")
# Find single worst outlier across whole molecule
worst = min(per_res, key=lambda x: x[2] if isinstance(x, list) else 999)
chain, resno, ins = worst[1]
print(f"Worst: {chain}/{resno}, prob={worst[2]:.6f}")all_molecule_rotamer_score_py()Purpose: Comprehensive rotamer validation for side chains.
Use Case: "Check rotamer quality" or "Find unusual side-chain conformations"
Function Signature:
PyObject *all_molecule_rotamer_score_py(int imol)Returns: [overall_score, n_residues]
Example Usage:
score, n_residues = all_molecule_rotamer_score_py(1)
print(f"Overall rotamer score: {score} for {n_residues} residues")rotamer_graphs_py()Purpose: Get detailed rotamer information for each residue.
Use Case: "Find the worst rotamer outlier"
Function Signature:
PyObject *rotamer_graphs_py(int imol)Returns: List of [chain_id, resno, ins_code, score_percentage, resname]
Score Interpretation:
Example Usage:
rotamers = rotamer_graphs_py(1)
# Find worst rotamer (excluding missing atoms)
valid_rotamers = [r for r in rotamers if r[3] > 0]
worst = min(valid_rotamers, key=lambda x: x[3])
chain, resno, score = worst[0], worst[1], worst[3]
print(f"Worst rotamer: {chain} {resno}, score = {score}%")
# Go to worst rotamer
coot.set_go_to_atom_chain_residue_atom_name(chain, resno, 'CA')deviant_geometry()Purpose: Check for unusual bond lengths, angles, and other geometric outliers.
Function Signature:
void deviant_geometry(int imol)Returns: None (displays results in GUI or console)
# 1. Load tutorial data
load_tutorial_model_and_data()
# 2. Run comprehensive validation
imol = 1 # Model molecule
imol_map = 2 # Map molecule
# Ramachandran validation
rama_data = coot.all_molecule_ramachandran_score_py(imol)
per_res = rama_data[5] # index 5 = per-residue list (confirmed from C++ source)
worst_rama = min(per_res, key=lambda x: x[2] if isinstance(x, list) else 999)
print(f"Worst Ramachandran: {worst_rama[1]}, score={worst_rama[2]:.6f}")
# Rotamer validation
rotamers = rotamer_graphs_py(imol)
worst_rot = min([r for r in rotamers if r[3] > 0], key=lambda x: x[3])
print(f"Worst rotamer: {worst_rot[0]} {worst_rot[1]}, score={worst_rot[3]}%")
# Density fit validation
fit_stats = map_to_model_correlation_stats_per_residue_range_py(
imol, "A", imol_map, 1, 0
)
# Geometry validation
deviant_geometry(imol)auto_fit_best_rotamer()Purpose: Automatically fit the best rotamer for a residue.
Function Signature:
float auto_fit_best_rotamer(
int imol_coords,
const char *chain_id,
int resno,
const char *insertion_code,
const char *altloc,
int imol_map,
int clash_flag, # 1 to check clashes, 0 to ignore
float lowest_probability # Minimum acceptable probability (e.g., 0.01)
)Returns: The new rotamer probability score
Example Usage:
# Fix worst rotamer
new_score = auto_fit_best_rotamer(
imol_coords=1,
chain_id='A',
resno=91,
insertion_code='',
altloc='',
imol_map=2,
clash_flag=1, # Check for clashes
lowest_probability=0.01
)
print(f"New rotamer score: {new_score}%")refine_zone()Purpose: Real-space refinement of a residue range.
Function Signature:
void refine_zone(
int imol,
const char *chain_id,
int resno_start,
int resno_end,
const char *altconf
)Example Usage:
# Refine 5 residues around residue 42
refine_zone(1, 'A', 40, 44, '')
accept_regularizement() # Accept the refinementpepflip()Purpose: Flip a peptide bond (useful for fixing cis/trans peptides).
Function Signature:
void pepflip(
int imol,
const char *chain_id,
int resno,
const char *ins_code,
const char *altconf
)Example Usage:
# Flip peptide at residue 41
pepflip(1, 'A', 41, '', '')
refine_zone(1, 'A', 40, 44, '')
accept_regularizement()When users ask questions like:
map_to_model_correlation_stats_per_residue_range_py()all_molecule_ramachandran_score_py() and look for minimum scoresrotamer_graphs_py() and look for minimum scoresScores vs. Statistics:
GLY Correlation Warning:
# Example: Filter out GLY when finding problem residues
stats = coot.map_to_model_correlation_stats_per_residue_range_py(0, "A", 1, 1, 0)
poor_residues = []
for res in stats[0]:
resno = res[0][1]
corr = res[1][1]
res_name = coot.residue_name_py(0, "A", resno, "")
if corr < 0.7 and res_name != "GLY": # Skip GLY
poor_residues.append((resno, res_name, corr))Atom Mask Modes:
Workflow:
load_tutorial_model_and_data() - Load example dataset_mol_displayed() - Show/hide moleculesscale_zoom() - Zoom in/outset_go_to_atom_chain_residue_atom_name() - Center on atomrotate_x_scene(), rotate_y_scene(), rotate_z_scene() - Rotate viewall_molecule_ramachandran_score_py() - Backbone validationrotamer_graphs_py() - Side-chain validationmap_to_model_correlation_stats_per_residue_range_py() - Density fitdeviant_geometry() - Geometry validationrefine_zone() - Real-space refinementauto_fit_best_rotamer() - Fix rotamerspepflip() - Flip peptidesaccept_regularizement() - Accept refinementmutate_residue_range() - Change residue typesadd_terminal_residue() - Extend chainsdelete_residue() - Remove residues© pemsley, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in mcp/docs/skills/correlations of pemsley/coot.
Open the folder on GitHubat commit 6e3c026
Coot Correlations next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Coot Correlations this skillpemsley/coot | 168 | — | ~3.5k | Automated safety check: Pass | GPL-3.0 | |
| Correlation and Cointegration AnalysisHKUDS/Vibe-Trading | 35k | — | ~10k | Automated safety check: Pass | MIT | |
| Correlation Regime DetectionHKUDS/Vibe-Trading | 35k | — | ~5.4k | Automated safety check: Pass | MIT | |
| Table Fitasgeirtj/system_prompts_leaks | 69k | — | ~772 | Automated safety check: Pass | CC0-1.0 | |
| Furniture Fit Checkpascalorg/editor | 25k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Correlating Threat Campaignsmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 |
HKUDS/Vibe-Trading
Finds co-moving assets and tests them for cointegration, with workflows for correlation studies, sector clustering, hedge ratios and pair-trading signals.
HKUDS/Vibe-Trading
Detects when markets fuse into one correlated bloc, adds regime context to risk, and attributes crises to first movers, as monitoring tools rather than trade signals.
asgeirtj/system_prompts_leaks
Keep a Markdown table readable in a narrow terminal of about 100 display columns - a wide table or one carrying prose in its cells wraps into unreadable ragged rows.
pascalorg/editor
Checks whether a sofa, table, bed or appliance fits in a measured Pascal room and reports only what the evidence supports, or asks for the missing measurements.
mukul975/Anthropic-Cybersecurity-Skills
Correlates disparate security incidents, IOCs, and adversary behaviors across time and organizations to identify unified threat campaigns, attribute them to common threat actors, and extract shared…
mukul975/Anthropic-Cybersecurity-Skills
Correlates security events in IBM QRadar SIEM using AQL (Ariel Query Language), custom rules, building blocks, and offense management to detect multi-stage attacks across network, endpoint, and…
pemsley/coot
Create interactive inline Chart.js graphs directly in the chat from live Coot data.
pemsley/coot
RDKit molecular manipulation and visualization within Coot's Python environment.
pemsley/coot
Best practices for protein structure refinement and validation in Coot.
pemsley/coot
API documentation to be loaded at startup - when starting a Coot session, immediately call getfunctiondescriptions() with the functions listed in this skill.
pemsley/coot
Best practices for creating publication-quality molecular graphics figures in Coot using user-defined colors, ribbons, and molecular representations
pemsley/coot
Best Practices for Model-Building Tools and Refinement. An agent skill from pemsley/coot.
Run `npx skills add pemsley/coot --skill coot-correlations -a claude-code`. Or copy the skill folder (mcp/docs/skills/correlations in pemsley/coot) into .claude/skills/coot-correlations in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pemsley/coot --skill coot-correlations -a codex`. Or copy the skill folder (mcp/docs/skills/correlations in pemsley/coot) into .agents/skills/coot-correlations in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pemsley/coot --skill coot-correlations -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/coot-correlations, .gemini/skills/coot-correlations, .github/skills/coot-correlations and .opencode/skills/coot-correlations in your project.
SKILL.md names no scripts, command-line tools or credentials: Coot Correlations is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Coot Correlations is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Coot Correlations: Correlation and Cointegration Analysis (HKUDS/Vibe-Trading, 35k stars), Correlation Regime Detection (HKUDS/Vibe-Trading, 35k stars), Table Fit (asgeirtj/system_prompts_leaks, 69k stars) and Furniture Fit Check (pascalorg/editor, 25k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pemsley (a GitHub user) maintains it in pemsley/coot, which has 168 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 7, 2026.
Source: pemsley/coot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.