Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used at the start of any computationally intensive scientific task to detect and report available system resources (CPU cores, GPUs, memory, disk space). It creates a JSON file with resource information and strategic recommendations that inform computational approach decisions such as whether to use parallel processing (joblib, multiprocessing), out-of-core computing (Dask, Zarr), GPU acceleration (PyTorch, JAX), or memory-efficient strategies. Use this skill before running
.claude/skills/davila7-get-available-resources/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 68% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 46% | 0% |
Detect available computational resources and generate strategic recommendations for scientific computing tasks. This skill automatically identifies CPU capabilities, GPU availability (NVIDIA CUDA, AMD ROCm, Apple Silicon Metal), memory constraints, and disk space to help make informed decisions about computational approaches.
Use this skill proactively before any computationally intensive task:
Example scenarios:
The skill runs scripts/detect_resources.py to automatically detect:
The skill generates a .claude_resources.json file in the current working directory containing:
json{ "timestamp": "2025-10-23T10:30:00", "os": { "system": "Darwin", "release": "25.0.0", "machine": "arm64" }, "cpu": { "physical_cores": 8, "logical_cores": 8, "architecture": "arm64" }, "memory": { "total_gb": 16.0, "available_gb": 8.5, "percent_used": 46.9 }, "disk": { "total_gb": 500.0, "available_gb": 200.0, "percent_used": 60.0 }, "gpu": { "nvidia_gpus": [], "amd_gpus": [], "apple_silicon": { "name": "Apple M2", "type": "Apple Silicon", "backend": "Metal", "unified_memory": true }, "total_gpus": 1, "available_backends": ["Metal"] }, "recommendations": { "parallel_processing": { "strategy": "high_parallelism", "suggested_workers": 6, "libraries": ["joblib", "multiprocessing", "dask"] }, "memory_strategy": { "strategy": "moderate_memory", "libraries": ["dask", "zarr"], "note": "Consider chunking for datasets > 2GB" }, "gpu_acceleration": { "available": true, "backends": ["Metal"], "suggested_libraries": ["pytorch-mps", "tensorflow-metal", "jax-metal"] }, "large_data_handling": { "strategy": "disk_abundant", "note": "Sufficient space for large intermediate files" } } }
The skill generates context-aware recommendations:
Parallel Processing Recommendations:
Memory Strategy Recommendations:
GPU Acceleration Recommendations:
Large Data Handling Recommendations:
Execute the detection script at the start of any computationally intensive task:
bashpython scripts/detect_resources.py
Optional arguments:
-o, --output <path>: Specify custom output path (default: .claude_resources.json)-v, --verbose: Print full resource information to stdoutAfter running detection, read the generated .claude_resources.json file to inform computational decisions:
python# Example: Use recommendations in code import json with open('.claude_resources.json', 'r') as f: resources = json.load(f) # Check parallel processing strategy if resources['recommendations']['parallel_processing']['strategy'] == 'high_parallelism': n_jobs = resources['recommendations']['parallel_processing']['suggested_workers'] # Use joblib, Dask, or multiprocessing with n_jobs workers # Check memory strategy if resources['recommendations']['memory_strategy']['strategy'] == 'memory_constrained': # Use Dask, Zarr, or H5py for out-of-core processing import dask.array as da # Load data in chunks # Check GPU availability if resources['recommendations']['gpu_acceleration']['available']: backends = resources['recommendations']['gpu_acceleration']['backends'] # Use appropriate GPU library based on available backend
Use the resource information and recommendations to make strategic choices:
For data loading:
pythonmemory_available_gb = resources['memory']['available_gb'] dataset_size_gb = 10 if dataset_size_gb > memory_available_gb * 0.5: # Dataset is large relative to memory, use Dask import dask.dataframe as dd df = dd.read_csv('large_file.csv') else: # Dataset fits in memory, use pandas import pandas as pd df = pd.read_csv('large_file.csv')
For parallel processing:
pythonfrom joblib import Parallel, delayed n_jobs = resources['recommendations']['parallel_processing'].get('suggested_workers', 1) results = Parallel(n_jobs=n_jobs)( delayed(process_function)(item) for item in data )
For GPU acceleration:
pythonimport torch if 'CUDA' in resources['gpu']['available_backends']: device = torch.device('cuda') elif 'Metal' in resources['gpu']['available_backends']: device = torch.device('mps') else: device = torch.device('cpu') model = model.to(device)
The detection script requires the following Python packages:
bashuv pip install psutil
All other functionality uses Python standard library modules (json, os, platform, subprocess, sys, pathlib).
.claude_resources.json file in project directories to document resource-aware decisionsGPU not detected:
Script execution fails:
uv pip install psutilchmod +x scripts/detect_resources.pyInaccurate memory readings:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 8,716 | 34,328 | +294% | 1 | 1 | 0% | 1,823 | 2,599 | +43% | 0 | 0 | — |
case-01 | fail→fail | 10,866 | 7,027 | -35% | 1 | 1 | 0% | 2,083 | 2,553 | +23% | 0 | 0 | — |
case-03 | fail→fail | 19,682 | 5,852 | -70% | 1 | 1 | 0% | 3,648 | 2,582 | -29% | 0 | 0 | — |
case-04 | pass→pass | 8,401 | 2,394 | -72% | 1 | 1 | 0% | 1,556 | 2,610 | +68% | 0 | 0 | — |
case-05 | pass→pass | 12,058 | 3,568 | -70% | 1 | 1 | 0% | 1,953 | 2,859 | +46% | 0 | 0 | — |
case-06 | fail→pass | 7,861 | 2,754 | -65% | 1 | 1 | 0% | 1,402 | 2,677 | +91% | 0 | 0 | — |
case-07 | fail→pass | 13,788 | 2,437 | -82% | 1 | 1 | 0% | 2,124 | 2,718 | +28% | 0 | 0 | — |
case-08 | pass→pass | 23,346 | 8,111 | -65% | 1 | 1 | 0% | 1,902 | 3,640 | +91% | 0 | 0 | — |
case-09 | pass→pass | 9,642 | 6,786 | -30% | 1 | 1 | 0% | 1,573 | 3,366 | +114% | 0 | 0 | — |
case-10 | pass→pass | 4,517 | 2,926 | -35% | 1 | 1 | 0% | 707 | 2,801 | +296% | 0 | 0 | — |
case-11 | pass→pass | 9,370 | 4,506 | -52% | 1 | 1 | 0% | 1,612 | 3,130 | +94% | 0 | 0 | — |
case-12 | pass→pass | 5,046 | 4,558 | -10% | 1 | 1 | 0% | 760 | 3,057 | +302% | 0 | 0 | — |
case-13 | pass→pass | 13,353 | 11,960 | -10% | 1 | 1 | 0% | 2,072 | 4,237 | +104% | 0 | 0 | — |
case-14 | fail→pass | 9,395 | 5,662 | -40% | 1 | 1 | 0% | 1,496 | 3,216 | +115% | 0 | 0 | — |
case-15 | pass→pass | 5,456 | 2,712 | -50% | 1 | 1 | 0% | 846 | 2,687 | +218% | 0 | 0 | — |
case-16 | pass→pass | 6,655 | 25,052 | +276% | 1 | 1 | 0% | 1,005 | 2,569 | +156% | 0 | 0 | — |
case-17 | pass→pass | 6,443 | 2,630 | -59% | 1 | 1 | 0% | 1,114 | 2,731 | +145% | 0 | 0 | — |
case-18 | pass→pass | 3,542 | 1,534 | -57% | 1 | 1 | 0% | 545 | 2,514 | +361% | 0 | 0 | — |
case-19 | pass→pass | 5,948 | 1,826 | -69% | 1 | 1 | 0% | 1,054 | 2,531 | +140% | 0 | 0 | — |
case-20 | pass→pass | 5,635 | 5,987 | +6% | 1 | 1 | 0% | 776 | 3,273 | +322% | 0 | 0 | — |
case-21 | pass→pass | 7,506 | 6,101 | -19% | 1 | 1 | 0% | 1,318 | 3,370 | +156% | 0 | 0 | — |
case-22 | pass→pass | 10,849 | 8,851 | -18% | 1 | 1 | 0% | 1,902 | 3,766 | +98% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.