Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .claude/skills/check-lower-compat-bounds/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
name: check-lower-compat-bounds

Check failure on line 2 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'compat'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'compat'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 2, "column": 19}}}, "severity": "ERROR"}
description: Test whether the lower compat bounds in Project.toml are still resolvable. Identifies stale bounds, dead version ranges, and suggests updates.
---

You are checking the lower compat bounds of a Julia package for staleness.

Check failure on line 6 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'compat'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'compat'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 6, "column": 28}}}, "severity": "ERROR"}

## How it works

The script `check_lower_compat_bounds.jl` (in the same directory as this skill) does the heavy lifting:
- Parses all compat entries from Project.toml

Check failure on line 11 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'compat'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'compat'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 11, "column": 14}}}, "severity": "ERROR"}
- For each dependency, tests whether the lower bound resolves in a fresh temp environment
- Binary searches for the true minimum resolvable version when a bound fails
- Reports dead ranges, stale bounds, and OK bounds
- Saves suggestions to `.compat_suggestions.toml` and prompts to apply

## Steps

1. Run the script and let it complete (it takes a while, one temp environment per test):

```
julia .claude/skills/check-lower-compat-bounds/check_lower_compat_bounds.jl
```

2. The script will print a report and prompt to apply changes. If the user declines, the suggestions are saved and can be applied later with:

```
julia .claude/skills/check-lower-compat-bounds/check_lower_compat_bounds.jl --apply
```

3. Do NOT commit automatically. Let the user decide how to handle that.

## Important context

- A bound that fails resolution is definitively stale: no user can install that version combination. This is caused by transitive dependency constraints, not bugs in this package.
- A bound that passes resolution is not guaranteed to pass tests. If the user wants deeper validation, offer to run the test suite with specific deps pinned to their lower bounds.

Check failure on line 36 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'deps'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'deps'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 36, "column": 146}}}, "severity": "ERROR"}
- The script skips stdlibs (LinearAlgebra, Printf, etc.) since those are tied to the Julia version.

Check failure on line 37 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'Printf'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'Printf'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 37, "column": 44}}}, "severity": "ERROR"}

Check failure on line 37 in .claude/skills/check-lower-compat-bounds/SKILL.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'stdlibs'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'stdlibs'?", "location": {"path": ".claude/skills/check-lower-compat-bounds/SKILL.md", "range": {"start": {"line": 37, "column": 20}}}, "severity": "ERROR"}
Loading
Loading