Fix ART Issue
Fix a GitHub issue on OpenPipe/ART and open a PR.
- Repo:
OpenPipe/ART
- Base branch:
main
Assumes the workspace is already set up with the correct branch checked out and .env in place (handled by the system-level fix-art-workspace skill).
Workflow
1. Read the Issue
gh issue view <number> --repo OpenPipe/ART --json title,body,labels,assignees,comments
2. Explore, Plan, Implement
- Use the Explore agent to understand relevant code before making changes.
- Plan clearly, implement with minimal focused changes. No over-engineering.
3. Commit and Push
- Commit with a message that includes
Closes #<issue-number>.
- Push the feature branch. If HTTPS push fails due to SAML SSO, set SSH remote:
git remote set-url origin git@github.com:OpenPipe/ART.git
4. Open a Draft PR
gh pr create --base main --draft.
- PR body:
## Summary, Closes #<number>, ## Changes, ## Test plan.
5. Testing
- No test artifacts in the final PR: debug prints, test scripts, and temporary changes must NOT be committed.
- Update the PR's test plan section with detailed results.
- When testing passes, mark the PR as ready:
gh pr ready.
Reference
Read CONTRIBUTING.md at the repo root for guidance on code quality checks (prek), CI cache refresh, and the release process.
Dependency Management Tips
- Pin versions strictly (
==) for critical deps like transformers, trl, unsloth, unsloth-zoo, vllm to avoid surprise breakage from new releases.
- Don't loosen pins without reason: if a dep was
==X.Y.Z, keep it pinned unless there's a specific reason to change. Don't use >= just because it seems more flexible.
uv run fails on macOS for backend deps (apex/torch need CUDA). This is expected — use uvx ruff for linting locally, test on GPU cluster.
Deploying a GPU Cluster
Name the SkyPilot cluster after the branch name without the fix/ prefix, replacing / with - (SkyPilot doesn't allow slashes). For example, if the branch is fix/short-description:
uv run sky launch -c short-description skypilot-config.yaml -y
To connect: ssh short-description
To tear down when done: uv run sky down short-description
GPU Cluster Testing Tips
- Kill stale GPU processes before re-running tests:
nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -r kill -9. Previous failed runs leave processes holding GPU memory.
- Set
gpu_memory_utilization in test scripts (e.g. 0.7) — the default 0.9 is too high when Unsloth's training model is also loaded on the same GPU.
- Redirect test output to a log file:
nohup python test.py > /tmp/output.log 2>&1 & then tail -f /tmp/output.log. SSH background tasks lose output when connection drops.
- Git on cluster: SSH keys may not be configured. Use HTTPS with token:
git remote set-url origin https://${GITHUB_TOKEN}@github.com/OpenPipe/ART.git
- Tear down clusters when done:
sky down <cluster-name> -y
$ARGUMENTS
1---
2name: fix-art-issues
3description: >
4 Fix a GitHub issue on OpenPipe/ART and open a PR.
5 Use when the user asks to fix, solve, or work on an ART issue,
6 or references a GitHub issue URL containing "OpenPipe/ART".
7 Triggers: "fix ART issue", "solve this issue" with an OpenPipe/ART URL,
8 "work on ART #N".
9---1011
12# Fix ART Issue
13
14Fix a GitHub issue on `OpenPipe/ART` and open a PR.
15
16- **Repo**: `OpenPipe/ART`
17- **Base branch**: `main`
18
19Assumes the workspace is already set up with the correct branch checked out and `.env` in place (handled by the system-level `fix-art-workspace` skill).
20
21## Workflow
22
23### 1. Read the Issue
24```
25gh issue view <number> --repo OpenPipe/ART --json title,body,labels,assignees,comments
26```
27
28### 2. Explore, Plan, Implement
29- Use the Explore agent to understand relevant code before making changes.
30- Plan clearly, implement with minimal focused changes. No over-engineering.
31
32### 3. Commit and Push
33- Commit with a message that includes `Closes #<issue-number>`.
34- Push the feature branch. If HTTPS push fails due to SAML SSO, set SSH remote: `git remote set-url origin git@github.com:OpenPipe/ART.git`
35
36### 4. Open a Draft PR
37- `gh pr create --base main --draft`.
38- PR body: `## Summary`, `Closes #<number>`, `## Changes`, `## Test plan`.
39
40### 5. Testing
41- **No test artifacts in the final PR**: debug prints, test scripts, and temporary changes must NOT be committed.
42- Update the PR's test plan section with detailed results.
43- When testing passes, mark the PR as ready: `gh pr ready`.
44
45## Reference
46
47Read `CONTRIBUTING.md` at the repo root for guidance on code quality checks (prek), CI cache refresh, and the release process.
48
49## Dependency Management Tips
50
51- **Pin versions strictly** (`==`) for critical deps like `transformers`, `trl`, `unsloth`, `unsloth-zoo`, `vllm` to avoid surprise breakage from new releases.
52- **Don't loosen pins without reason**: if a dep was `==X.Y.Z`, keep it pinned unless there's a specific reason to change. Don't use `>=` just because it seems more flexible.
53- **`uv run` fails on macOS** for backend deps (apex/torch need CUDA). This is expected — use `uvx ruff` for linting locally, test on GPU cluster.
54
55## Deploying a GPU Cluster
56
57Name the SkyPilot cluster after the branch name without the `fix/` prefix, replacing `/` with `-` (SkyPilot doesn't allow slashes). For example, if the branch is `fix/short-description`:
58```
59uv run sky launch -c short-description skypilot-config.yaml -y
60```
61
62To connect: `ssh short-description`
63
64To tear down when done: `uv run sky down short-description`
65
66## GPU Cluster Testing Tips
67
68- **Kill stale GPU processes** before re-running tests: `nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -r kill -9`. Previous failed runs leave processes holding GPU memory.
69- **Set `gpu_memory_utilization`** in test scripts (e.g. `0.7`) — the default `0.9` is too high when Unsloth's training model is also loaded on the same GPU.
70- **Redirect test output to a log file**: `nohup python test.py > /tmp/output.log 2>&1 &` then `tail -f /tmp/output.log`. SSH background tasks lose output when connection drops.
71- **Git on cluster**: SSH keys may not be configured. Use HTTPS with token: `git remote set-url origin https://${GITHUB_TOKEN}@github.com/OpenPipe/ART.git`
72- **Tear down clusters** when done: `sky down <cluster-name> -y`
73
74$ARGUMENTS