skills/devtu-github/SKILL.md
GitHub workflow for ToolUniverse - push code safely by moving temp files, activating pre-commit hooks, running tests, and cleaning staged files. Use when pushing to GitHub, fixing CI failures, or cleaning up before commits.
npx skillsauth add mims-harvard/tooluniverse devtu-githubInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Safely push ToolUniverse code to GitHub by enforcing pre-push cleanup, pre-commit hooks, and test validation.
When the user wants to push code, fix CI, or prepare a commit, follow this workflow:
# Move session markdown files to temp_docs_and_tests/
for f in $(ls *.md 2>/dev/null | grep -v README.md | grep -v CHANGELOG.md | grep -v LICENSE.md); do
mv "$f" temp_docs_and_tests/
done
# Move root-level test scripts to temp_docs_and_tests/
for f in $(ls test_*.py 2>/dev/null); do
mv "$f" temp_docs_and_tests/
done
git status --short
Red flags - these should NEVER be staged:
*_SUMMARY.md, *_REPORT.md, SESSION_*.md in roottest_*.py in root (these are ad-hoc scripts, not real tests).env or credential filestemp_docs_and_tests/ contentspre-commit install
This enables automatic checks on every git commit:
ruff check --fix - Python linting with auto-fixruff format - Code formattingls -la .git/hooks/pre-commit
python -m pytest tests/ -x --tb=short -q
git add . or git add -A):git add src/tooluniverse/specific_file.py tests/specific_test.py
git commit -m "Clear, descriptive message"
git fetch origin
git stash # stash any uncommitted work
git rebase origin/main
git stash pop # restore uncommitted work
If rebase conflicts arise, resolve them (keep our newer changes), then:
git add <conflicted-file>
git rebase --continue
git push --force-with-lease origin <branch-name>
After pushing, verify the PR is conflict-free:
gh pr view <PR-number> --json mergeable,mergeStateStatus
# Must show: "mergeable":"MERGEABLE"
These are session notes created during development. Move to temp_docs_and_tests/ before committing:
| Pattern | Example |
|---------|---------|
| *_SUMMARY.md | API_DISCOVERY_SESSION_SUMMARY.md |
| *_REPORT.md | SKILL_TESTING_REPORT.md, TOOLUNIVERSE_BUG_REPORT.md |
| SESSION_*.md | SESSION_2026_02_13.md |
| IMPLEMENTATION_*.md | IMPLEMENTATION_COMPLETE.md |
| BUG_ANALYSIS_*.md | BUG_ANALYSIS_DETAILED.md |
| FIX_*.md | FIX_SUMMARY.md, CORRECT_FIX.md |
| AGENT_*.md | AGENT_DESIGN_UPDATES.md |
Exception: README.md, CHANGELOG.md, LICENSE.md are real docs and MUST stay.
Ad-hoc test scripts like test_*.py in root are NOT part of the test suite (tests/ directory is). Move them to temp_docs_and_tests/:
| File | Purpose |
|------|---------|
| test_clear_tools.py | One-off tool cleanup test |
| test_finemapping_tools.py | Ad-hoc tool validation |
| test_metabolomics_tools.py | Ad-hoc tool validation |
| test_original_bug.py | Bug reproduction |
| test_pathway_tools.py | Ad-hoc tool validation |
| test_protein_interaction_skill.py | Skill test |
| test_reload_fix.py | Bug reproduction |
| test_round10_tools.py | Ad-hoc tool validation |
.env - Environment variables with secretstemp_docs_and_tests/ - Already in .gitignore.claude/ - Claude Code configuration__pycache__/, *.pyc - Python bytecode.DS_Store - macOS metadataSymptom: KeyError: 'role' when accessing message dicts
Fix: Add return_message=True to tu.run() and use .get():
messages = tu.run(calls, use_cache=True, return_message=True)
if msg.get("role") == "tool":
Symptom: TypeError: 'Mock' object is not subscriptable
Fix: Use real dicts for all_tool_dict and add _get_tool_instance:
mock_tu.all_tool_dict = {"Tool": mock_tool}
mock_tu._get_tool_instance = lambda name, cache=True: mock_tu.all_tool_dict.get(name)
Fix F841 (unused variable): Use _ prefix or _ = func()
Fix E731 (lambda assignment): Replace with def
Symptom: git status shows temp files as modified/staged
Fix:
git rm -r --cached temp_docs_and_tests/
git rm --cached API_DISCOVERY_SESSION_SUMMARY.md
git commit -m "Remove temp files from tracking"
The project uses .pre-commit-config.yaml:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
hooks: [end-of-file-fixer, trailing-whitespace, check-yaml, check-toml]
- repo: https://github.com/astral-sh/ruff-pre-commit
hooks: [ruff-check --fix, ruff-format]
Scope: Only files matching ^(ToolUniverse/)?src/tooluniverse/
| Task | Command |
|------|---------|
| Activate hooks | pre-commit install |
| Run all tests | pytest tests/ -x --tb=short -q |
| Run specific test | pytest tests/path/test.py::Class::method -xvs |
| Check staged files | git status --short |
| Unstage a file | git restore --staged <file> |
| Remove from tracking | git rm --cached <file> |
| Move temp files | See Phase 1 commands |
| Run hooks manually | pre-commit run --all-files |
Before every push, verify:
temp_docs_and_tests/test_*.py scripts moved to temp_docs_and_tests/pre-commit install)pytest tests/ -x).env, no temp files)git add <specific-files> instead of git add .tools
PCR / qPCR primer and oligo design — design forward/reverse primers for a target region (SantaLucia nearest-neighbor thermodynamics), compute melting temperature (Tm) and annealing temperature (Ta), check GC content, and screen an oligo for hairpins and primer-dimers. Use when you need primers for a sequence, want to QC an existing primer pair, or need the Tm of an oligo. Covers the primer-design rules (Tm matching, GC clamp, 3'-end, length) and the tools' constraint quirks.
tools
Pharmacokinetic (PK) analysis of concentration-time data — non-compartmental analysis (NCA) for Cmax, Tmax, AUC (0-t and 0-∞), terminal half-life, clearance (CL), volume of distribution (Vd), MRT, and absolute bioavailability (F). Also one-compartment fitting. Use when you have plasma/serum drug concentrations over time after a dose and need PK parameters, or to compute bioavailability from IV + oral AUCs. NOT for ADMET property prediction from structure (use tooluniverse-admet-prediction).
tools
Molecular cloning assembly design — Gibson Assembly (overlap design for seamless multi-fragment joining) and Golden Gate Assembly (Type IIS / BsaI / BbsI design with unique 4-bp fusion overhangs). Use when you need to plan how to join DNA fragments into a construct, design assembly overlaps/overhangs, or decide between cloning methods. Covers the domestication (internal-site removal), overhang-uniqueness, and overlap-Tm rules. For PCR primers to generate the fragments, see tooluniverse-primer-design.
tools
Meta-analysis / evidence synthesis — pool effect sizes across studies (odds ratios, risk ratios, hazard ratios, mean differences, correlations, GWAS betas) with fixed- or random-effects models, quantify heterogeneity (Q, I², τ²), and build a forest plot. Use when you have results from MULTIPLE studies and need a single pooled estimate, or to synthesize evidence from a systematic review / multiple GWAS / replicated experiments. Handles the error-prone effect-size + standard-error preparation (converting OR/HR/CI, two-group means±SD, proportions, and correlations into the (effect, SE) the pooling step needs).