contract-rules
IBL CBA salary cap rules including Bird Rights, veteran minimums, and maximum contracts. Use when working on extensions, free agency, negotiations, or salary calculations.
When & Why to Use This Skill
This Claude skill serves as a specialized logic engine for IBL CBA (Collective Bargaining Agreement) salary cap management. It provides automated calculations and rule validation for complex financial scenarios including Bird Rights eligibility, veteran minimums, and maximum contract tiers, ensuring all player negotiations and extensions remain compliant with league regulations.
Use Cases
- Determining maximum contract offers for free agents by calculating first-year salary caps based on years of experience.
- Validating Bird Rights eligibility for players to apply the correct annual raise percentage (10% vs 12.5%) during extension talks.
- Automating the generation of multi-year Mid-Level Exception (MLE) offer schedules with predefined annual raises.
- Ensuring roster compliance by cross-referencing player experience with the mandatory veteran minimum salary table.
- Streamlining salary cap planning for front-office modules like Free Agency, Negotiations, and Waivers using standardized PHP helper methods.
| name | contract-rules |
|---|---|
| description | IBL CBA salary cap rules including Bird Rights, veteran minimums, and maximum contracts. Use when working on extensions, free agency, negotiations, or salary calculations. |
IBL Contract Rules (CBA)
Salary cap rules from ContractRules class. Used by Extension, FreeAgency, Negotiation, and Waivers modules.
Bird Rights
Threshold
Player must play 3+ consecutive years with the same team.
Raise Percentages
| Status | Max Annual Raise |
|---|---|
| Without Bird Rights | 10% |
| With Bird Rights | 12.5% |
Helper Methods
use ContractRules;
$hasBird = ContractRules::hasBirdRights($yearsWithTeam); // bool
$raisePercent = ContractRules::getMaxRaisePercentage($yearsWithTeam); // 0.10 or 0.125
Veteran Minimum Salaries
| Experience | Minimum Salary |
|---|---|
| 10+ years | $103 |
| 9 years | $100 |
| 8 years | $89 |
| 7 years | $82 |
| 6 years | $76 |
| 5 years | $70 |
| 4 years | $64 |
| 3 years | $61 |
| 2 years | $51 |
| 1 year (rookie) | $35 |
$minSalary = ContractRules::getVeteranMinimumSalary($experience);
Maximum Contract Salaries (First Year)
| Experience | Max First-Year Salary |
|---|---|
| 10+ years | $1,451 |
| 7-9 years | $1,275 |
| 0-6 years | $1,063 |
$maxSalary = ContractRules::getMaxContractSalary($experience);
Salary Exceptions
Mid-Level Exception (MLE)
6-year contract with 10% annual raises:
| Year | Amount |
|---|---|
| 1 | $450 |
| 2 | $495 |
| 3 | $540 |
| 4 | $585 |
| 5 | $630 |
| 6 | $675 |
$mleAmounts = ContractRules::getMLEOffers($years); // array of amounts
Lower-Level Exception (LLE)
Maximum: $145
$lleAmount = ContractRules::LLE_OFFER; // 145
Usage Example
use ContractRules;
// Calculate max offer for a player
$experience = 8;
$yearsWithTeam = 4;
if (ContractRules::hasBirdRights($yearsWithTeam)) {
$maxRaise = ContractRules::BIRD_RIGHTS_RAISE_PERCENTAGE; // 0.125
$maxFirstYear = ContractRules::getMaxContractSalary($experience); // 1275
} else {
$maxRaise = ContractRules::STANDARD_RAISE_PERCENTAGE; // 0.10
}
// Or get veteran minimum as floor
$minOffer = ContractRules::getVeteranMinimumSalary($experience); // 89
Examples
See examples/ for calculations: