argus-build-diagnostics
Diagnose xcodebuild builds using argus. Use this instead of parsing xcodebuild output to avoid filling the context window. Query build errors, warnings, slowest targets, bottlenecks, implicit/redundant dependencies, and dependency graph with linking information for optimization analysis.
What this skill does
# Argus Build Diagnostics Use argus to analyze Xcode builds instead of parsing raw xcodebuild output. ## Installation ```bash mise install github:tuist/[email protected] ``` ## Running a Build Run xcodebuild with argus intercepting the build: ```bash BUILD_TRACE_ID=$(uuidgen) XCBBUILDSERVICE_PATH=$(which argus) BUILD_TRACE_ID=$BUILD_TRACE_ID xcodebuild build -scheme MyScheme ``` ## Querying Build Results After the build completes, use these commands to analyze results: ```bash # Get build summary argus trace summary --build $BUILD_TRACE_ID # Get compilation errors argus trace errors --build $BUILD_TRACE_ID # Get slowest targets argus trace slowest-targets --build $BUILD_TRACE_ID --limit 5 # Get build bottlenecks argus trace bottlenecks --build $BUILD_TRACE_ID ``` ## Dependency Analysis Detect dependency issues in your project: ```bash # Show what each target imports argus trace imports --build $BUILD_TRACE_ID # Find implicit dependencies (imports not declared as dependencies) argus trace implicit-deps --build $BUILD_TRACE_ID # Find redundant dependencies (declared but never imported) argus trace redundant-deps --build $BUILD_TRACE_ID ``` Add `--json` flag for structured output. ## Dependency Graph and Linking Analysis Query the build dependency graph with product type and linking information to identify optimization opportunities: ```bash # Get the full dependency graph with linking info argus trace graph --build $BUILD_TRACE_ID # Query what a specific target depends on (transitive) argus trace graph --source MyApp # Query only direct dependencies argus trace graph --source MyApp --direct # Query what depends on a specific target argus trace graph --sink CoreKit # Find the path between two targets argus trace graph --source MyApp --sink CoreKit # Filter by dependency type argus trace graph --source MyApp --label package argus trace graph --source MyApp --label framework ``` ### Available Labels - `target`: Project targets - `package`: Swift package dependencies - `framework`: Framework dependencies - `xcframework`: XCFramework dependencies - `sdk`: System SDK frameworks - `bundle`: Bundle dependencies ### Output Fields The graph output includes: - `name`: Target name - `productType`: Xcode product type identifier (e.g., `com.apple.product-type.framework`) - `artifactKind`: The kind of artifact (e.g., `framework`, `staticLibrary`, `dynamicLibrary`) - `machOType`: Mach-O type (`staticlib`, `mh_dylib`, `mh_execute`) - `dependencies`: Array of linked dependencies with: - `kind`: Link kind (`static`, `dynamic`, `framework`) - `mode`: Link mode - `isSystem`: Whether it's a system dependency ### Optimizing Launch Time and Binary Size Use the graph information combined with linking types to make optimization decisions: **To improve launch time (reduce dylib loading):** 1. Query the graph to find dynamically linked dependencies: `argus trace graph --source MyApp --json` 2. Look for dependencies with `kind: "dynamic"` or `kind: "framework"` 3. Consider converting frequently-used internal frameworks from dynamic to static linking 4. Targets with `machOType: "mh_dylib"` that are only used by one app are candidates for static linking 5. Fewer dynamic libraries means fewer `dlopen` calls at launch **To reduce binary size:** 1. Query the graph to identify statically linked dependencies 2. Look for large targets with `kind: "static"` that are shared across multiple apps 3. Converting these to dynamic frameworks allows code sharing and reduces total install size 4. Targets with `machOType: "staticlib"` used by multiple apps benefit from being dynamic **Analysis workflow:** ```bash # 1. Get the full graph to understand the dependency structure argus trace graph --build latest --json > graph.json # 2. Find all targets that depend on a library you want to optimize argus trace graph --sink MyLibrary --json # 3. Check if a target is statically or dynamically linked argus trace graph --source MyApp --direct --json | jq '.dependencies[] | select(.name == "MyLibrary")' ``` **Decision criteria:** - If a library is used by only one target: prefer **static** linking (better launch time) - If a library is used by multiple apps/extensions: prefer **dynamic** linking (smaller total size) - For debug builds: prefer **dynamic** linking (faster incremental builds) - For release builds with App Thinning: static linking may be preferred ## Listing Previous Builds ```bash # List all tracked projects argus trace projects # List builds for a project argus trace builds --project my-app --limit 10 ```
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.