analyze-selective-test…
Analyzes Xcode selective testing effectiveness for a test run, showing which test targets…
Compares two Gradle build runs to identify duration regressions, cache changes, and task outcome differences. Can be invoked with build IDs, dashboard URLs, or branch names.
$ npx -y skills add tuist/tuist --skill compare-gradle-builds --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/compare-gradle-buildsContext preview
The summary Claude sees to decide when to auto-load this skill.
Compares two Gradle build runs to identify duration regressions, cache changes, and task outcome differences. Can be invoked with build IDs, dashboard URLs, or branch names.
name: compare-gradle-builds description: Compares two Gradle build runs to identify duration regressions, cache changes, and task outcome differences. Can be invoked with build IDs, dashboard URLs, or branch names.
You'll typically receive two build identifiers (IDs, dashboard URLs, or branch names). Follow these steps using the Tuist MCP tools:
1. Use `list_gradle_builds` to find builds on each branch. 2. Use `get_gradle_build` for both base and head builds. 3. Use `list_gradle_build_tasks` to fetch task-level details for both builds. 4. Compare duration, status, cache hit rates, and task outcomes. 5. Summarize regressions, improvements, and recommendations.
If only one identifier is provided, use the project's default branch as the baseline.
Fetch each directly with `get_gradle_build(build_run_id: "<id>")`.
List recent builds on each branch and pick the latest:
list_gradle_builds(account_handle: "...", project_handle: "...", git_branch: "<branch>", page_size: 1)
Then fetch full details with `get_gradle_build(build_run_id: "<id>")`.
After fetching both builds, compare:
| Metric | What to check | |---|---| | `duration_ms` | Flag if head is >10% slower than base | | `status` | Flag if base succeeded but head failed | | `tasks_local_hit_count` | Compare local cache hit counts | | `tasks_remote_hit_count` | Compare remote cache hit counts | | `tasks_executed_count` | Compare how many tasks ran (higher means more cache misses) | | `cacheable_tasks_count` | Note if the cacheable task count changed | | `cache_hit_rate` | `(local_hits + remote_hits) / cacheable_tasks_count * 100` | | `requested_tasks` | Ensure both builds ran the same tasks for a fair comparison | | `gradle_version` / `java_version` | Note environment differences that affect comparability |
Compute the cache miss delta: `base_executed - head_executed`. Positive means head has fewer executions (improvement). Negative means regression.
Use `list_gradle_build_tasks` for both builds. Compare `duration_ms` and `outcome` per task path.
Look for:
Sort by absolute time difference to find the biggest regressions.
Use the `outcome` filter to focus on specific task states:
If the head build is significantly slower:
1. Check if `requested_tasks` differ (different task sets are not directly comparable). 2. Check if cache hit rate dropped, which would explain longer builds. 3. Look for tasks that changed from cache hits to `executed`. 4. Check if `gradle_version` or `java_version` changed, which can affect performance. 5. Compare individual task durations to find the biggest contributors.
Compare task-level cache behavior:
Compare environment details:
Produce a summary with:
1. **Overall verdict**: Better, worse, or neutral compared to base. 2. **Duration**: Absolute and percentage change in `duration_ms`. 3. **Cache hit rate**: Change in hit rate with explanation. 4. **Task outcomes**: Notable outcome changes (hit to executed, new failures). 5. **Status**: Any status changes (success to failure or vice versa). 6. **Environment**: Note any environment differences that affect comparability. 7. **Recommendations**: Actionable next steps based on findings.
Example:
Build Comparison: base (abc123 on main) vs head (def456 on feature-x) Duration: 45200ms -> 62800ms (+39%) -- REGRESSION Cache hit rate: 85% -> 72% (-13%) -- 8 tasks went from cache hit to executed Status: success -> success Root cause: Cache hit rate dropped because 8 tasks had invalidated caches. The :app:compileKotlin task changed from remote_hit to executed, cascading to 7 downstream tasks. Recommendations: - Investigate which source changes invalidated :app:compileKotlin cache - Consider splitting large modules to reduce cache invalidation cascading
Tuist supercharges your build system, whether you build with Xcode, Gradle, or Bazel.
Analyzes Xcode selective testing effectiveness for a test run, showing which test targets…
Compares two Xcode build runs to identify duration regressions, cache changes, and new…
Compares two app bundles to identify size changes, new or removed artifacts, and platform…
Compares two `tuist cache` runs to identify cache hit rate changes and root-cause analysis of…
Compares two `tuist generate` runs to identify cache hit rate changes and root-cause analysis…
Compares a single test case's behavior across two branches, analyzing pass/fail status,…