@leejungkiin/awkit 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/bin/awk.js +432 -6
  2. package/bin/claude-generators.js +122 -0
  3. package/core/AGENTS.md +16 -0
  4. package/core/CLAUDE.md +155 -0
  5. package/core/GEMINI.md +44 -9
  6. package/package.json +1 -1
  7. package/skills/ai-sprite-maker/SKILL.md +81 -0
  8. package/skills/ai-sprite-maker/scripts/animate_sprite.py +102 -0
  9. package/skills/ai-sprite-maker/scripts/process_sprites.py +140 -0
  10. package/skills/code-review/SKILL.md +21 -33
  11. package/skills/lucylab-tts/SKILL.md +64 -0
  12. package/skills/lucylab-tts/resources/voices_library.json +908 -0
  13. package/skills/lucylab-tts/scripts/.env +1 -0
  14. package/skills/lucylab-tts/scripts/lucylab_tts.py +506 -0
  15. package/skills/orchestrator/SKILL.md +5 -0
  16. package/skills/short-maker/SKILL.md +150 -0
  17. package/skills/short-maker/_backup/storyboard.html +106 -0
  18. package/skills/short-maker/_backup/video_mixer.py +296 -0
  19. package/skills/short-maker/outputs/fitbite-promo/background.jpg +0 -0
  20. package/skills/short-maker/outputs/fitbite-promo/final/promo-final.mp4 +0 -0
  21. package/skills/short-maker/outputs/fitbite-promo/script.md +19 -0
  22. package/skills/short-maker/outputs/fitbite-promo/segments/scene-01.mp4 +0 -0
  23. package/skills/short-maker/outputs/fitbite-promo/segments/scene-02.mp4 +0 -0
  24. package/skills/short-maker/outputs/fitbite-promo/segments/scene-03.mp4 +0 -0
  25. package/skills/short-maker/outputs/fitbite-promo/segments/scene-04.mp4 +0 -0
  26. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-01.png +0 -0
  27. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-02.png +0 -0
  28. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-03.png +0 -0
  29. package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-04.png +0 -0
  30. package/skills/short-maker/outputs/fitbite-promo/storyboard.html +133 -0
  31. package/skills/short-maker/outputs/fitbite-promo/storyboard.json +38 -0
  32. package/skills/short-maker/outputs/fitbite-promo/temp/merged_chroma.mp4 +0 -0
  33. package/skills/short-maker/outputs/fitbite-promo/temp/merged_crossfaded.mp4 +0 -0
  34. package/skills/short-maker/outputs/fitbite-promo/temp/ready_00.mp4 +0 -0
  35. package/skills/short-maker/outputs/fitbite-promo/temp/ready_01.mp4 +0 -0
  36. package/skills/short-maker/outputs/fitbite-promo/temp/ready_02.mp4 +0 -0
  37. package/skills/short-maker/outputs/fitbite-promo/temp/ready_03.mp4 +0 -0
  38. package/skills/short-maker/outputs/fitbite-promo/tts/manifest.json +31 -0
  39. package/skills/short-maker/outputs/fitbite-promo/tts/scene-01.wav +0 -0
  40. package/skills/short-maker/outputs/fitbite-promo/tts/scene-02.wav +0 -0
  41. package/skills/short-maker/outputs/fitbite-promo/tts/scene-03.wav +0 -0
  42. package/skills/short-maker/outputs/fitbite-promo/tts/scene-04.wav +0 -0
  43. package/skills/short-maker/outputs/fitbite-promo/tts_script.txt +11 -0
  44. package/skills/short-maker/scripts/google-flow-cli/.project-identity +41 -0
  45. package/skills/short-maker/scripts/google-flow-cli/.trae/rules/project_rules.md +52 -0
  46. package/skills/short-maker/scripts/google-flow-cli/CODEBASE.md +67 -0
  47. package/skills/short-maker/scripts/google-flow-cli/GoogleFlowCli.code-workspace +29 -0
  48. package/skills/short-maker/scripts/google-flow-cli/README.md +168 -0
  49. package/skills/short-maker/scripts/google-flow-cli/docs/specs/PROJECT.md +12 -0
  50. package/skills/short-maker/scripts/google-flow-cli/docs/specs/REQUIREMENTS.md +22 -0
  51. package/skills/short-maker/scripts/google-flow-cli/docs/specs/ROADMAP.md +16 -0
  52. package/skills/short-maker/scripts/google-flow-cli/docs/specs/TECH-SPEC.md +13 -0
  53. package/skills/short-maker/scripts/google-flow-cli/gflow/__init__.py +3 -0
  54. package/skills/short-maker/scripts/google-flow-cli/gflow/api/__init__.py +19 -0
  55. package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +1921 -0
  56. package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +64 -0
  57. package/skills/short-maker/scripts/google-flow-cli/gflow/api/rpc_ids.py +98 -0
  58. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/__init__.py +15 -0
  59. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/browser_auth.py +692 -0
  60. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/humanizer.py +417 -0
  61. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/proxy_ext.py +120 -0
  62. package/skills/short-maker/scripts/google-flow-cli/gflow/auth/recaptcha.py +482 -0
  63. package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/__init__.py +5 -0
  64. package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/client.py +414 -0
  65. package/skills/short-maker/scripts/google-flow-cli/gflow/cli/__init__.py +1 -0
  66. package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +1075 -0
  67. package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +36 -0
  68. package/skills/short-maker/scripts/google-flow-cli/script.txt +22 -0
  69. package/skills/short-maker/scripts/google-flow-cli/tests/__init__.py +0 -0
  70. package/skills/short-maker/scripts/google-flow-cli/tests/test_batchexecute.py +113 -0
  71. package/skills/short-maker/scripts/google-flow-cli/tests/test_client.py +190 -0
  72. package/skills/short-maker/templates/aida_script.md +40 -0
  73. package/skills/short-maker/templates/mimic_analyzer.md +29 -0
  74. package/skills/single-flow-task-execution/SKILL.md +9 -6
  75. package/skills/skill-creator/SKILL.md +44 -0
  76. package/skills/spm-build-analysis/SKILL.md +92 -0
  77. package/skills/spm-build-analysis/references/build-optimization-sources.md +155 -0
  78. package/skills/spm-build-analysis/references/recommendation-format.md +85 -0
  79. package/skills/spm-build-analysis/references/spm-analysis-checks.md +105 -0
  80. package/skills/spm-build-analysis/scripts/check_spm_pins.py +118 -0
  81. package/skills/symphony-enforcer/SKILL.md +51 -83
  82. package/skills/symphony-orchestrator/SKILL.md +1 -1
  83. package/skills/trello-sync/SKILL.md +27 -28
  84. package/skills/verification-gate/SKILL.md +13 -2
  85. package/skills/xcode-build-benchmark/SKILL.md +88 -0
  86. package/skills/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
  87. package/skills/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
  88. package/skills/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
  89. package/skills/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
  90. package/skills/xcode-build-fixer/SKILL.md +218 -0
  91. package/skills/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
  92. package/skills/xcode-build-fixer/references/fix-patterns.md +290 -0
  93. package/skills/xcode-build-fixer/references/recommendation-format.md +85 -0
  94. package/skills/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
  95. package/skills/xcode-build-orchestrator/SKILL.md +156 -0
  96. package/skills/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
  97. package/skills/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
  98. package/skills/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
  99. package/skills/xcode-build-orchestrator/references/recommendation-format.md +85 -0
  100. package/skills/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
  101. package/skills/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
  102. package/skills/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
  103. package/skills/xcode-compilation-analyzer/SKILL.md +89 -0
  104. package/skills/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
  105. package/skills/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
  106. package/skills/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
  107. package/skills/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
  108. package/skills/xcode-project-analyzer/SKILL.md +76 -0
  109. package/skills/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
  110. package/skills/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
  111. package/skills/xcode-project-analyzer/references/project-audit-checks.md +101 -0
  112. package/skills/xcode-project-analyzer/references/recommendation-format.md +85 -0
  113. package/templates/project-identity/android.json +0 -10
  114. package/templates/project-identity/backend-nestjs.json +0 -10
  115. package/templates/project-identity/expo.json +0 -10
  116. package/templates/project-identity/ios.json +0 -10
  117. package/templates/project-identity/web-nextjs.json +0 -10
  118. package/workflows/_uncategorized/ship-to-code.md +85 -0
  119. package/workflows/context/codebase-sync.md +10 -87
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: xcode-project-analyzer
3
+ description: Kiểm tra toàn diện Xcode project configuration, build settings, schemes, và run script phases để tìm ra cơ hội tối ưu hoá tốc độ build (yêu cầu dev phê duyệt). Sử dụng khi dev muốn phân tích project-level, gặp lỗi incremental build quá chậm, cần review target dependencies, build settings, song song hoá tác vụ (parallelization), hoặc xử lý lỗi module-map và DEFINES_MODULE.
4
+ ---
5
+
6
+ # Xcode Project Analyzer
7
+
8
+ Use this skill for project- and target-level build inefficiencies that are unlikely to be solved by source edits alone.
9
+
10
+ ## Core Rules
11
+
12
+ - Recommendation-first by default.
13
+ - Require explicit approval before changing project files, schemes, or build settings.
14
+ - Prefer measured findings tied to timing summaries, build logs, or project configuration evidence.
15
+ - Distinguish debug-only pain from release-only pain.
16
+
17
+ ## What To Review
18
+
19
+ - scheme build order and target dependencies
20
+ - debug vs release build settings against the [build settings best practices](references/build-settings-best-practices.md)
21
+ - run script phases and dependency-analysis settings
22
+ - derived-data churn or obviously invalidating custom steps
23
+ - opportunities for parallelization
24
+ - explicit module dependency settings and module-map readiness
25
+ - "Planning Swift module" time in the Build Timing Summary -- if it dominates incremental builds, suspect unexpected input modification or macro-related invalidation
26
+ - asset catalog compilation time, especially in targets with large or numerous catalogs
27
+ - `ExtractAppIntentsMetadata` time in the Build Timing Summary -- if this phase consumes significant time, record it as `xcode-behavior` (report the cost and impact, but do not suggest a repo-local optimization unless there is explicit Apple guidance)
28
+ - zero-change build overhead -- if a no-op rebuild exceeds a few seconds, investigate fixed-cost phases (script execution, codesign, validation, CopySwiftLibs)
29
+ - CocoaPods usage -- if a `Podfile` or `Pods.xcodeproj` exists, CocoaPods is deprecated; recommend migrating to SPM and do not attempt CocoaPods-specific optimizations (see [project-audit-checks.md](references/project-audit-checks.md))
30
+ - Task Backtraces (Xcode 16.4+: Scheme Editor > Build > Build Debugging) to diagnose why tasks re-run unexpectedly in incremental builds
31
+
32
+ ## Build Settings Best Practices Audit
33
+
34
+ Every project audit should include a build settings checklist comparing the project's Debug and Release configurations against the recommended values in [build-settings-best-practices.md](references/build-settings-best-practices.md). Present results using checkmark/cross indicators (`[x]`/`[ ]`). The scope is strictly build performance -- do not flag language-migration settings like `SWIFT_STRICT_CONCURRENCY` or `SWIFT_UPCOMING_FEATURE_*`.
35
+
36
+ ## Apple-Derived Checks
37
+
38
+ Review these items in every audit:
39
+
40
+ - target dependencies are accurate and not missing or inflated
41
+ - schemes build in `Dependency Order`
42
+ - run scripts declare inputs and outputs
43
+ - `.xcfilelist` files are used when scripts have many inputs or outputs
44
+ - `DEFINES_MODULE` is enabled where custom frameworks or libraries should expose module maps
45
+ - headers are self-contained enough for module-map use
46
+ - explicit module dependency settings are consistent for targets that should share modules
47
+
48
+ ## Typical Wins
49
+
50
+ - skip debug-time scripts that only matter in release
51
+ - add missing script guards or dependency-analysis metadata
52
+ - remove accidental serial bottlenecks in schemes
53
+ - align build settings that cause unnecessary module variants
54
+ - fix stale project structure that forces broader rebuilds than necessary
55
+ - identify linters or formatters that touch file timestamps without changing content, silently invalidating build inputs and forcing module replanning
56
+ - split large asset catalogs into separate resource bundles across targets to parallelize compilation
57
+ - use Task Backtraces to pinpoint the exact input change that triggers unnecessary incremental work
58
+
59
+ ## Reporting Format
60
+
61
+ For each issue, include:
62
+
63
+ - evidence
64
+ - likely scope
65
+ - why it affects clean builds, incremental builds, or both
66
+ - estimated impact
67
+ - approval requirement
68
+
69
+ If the evidence points to package graph or build plugins, hand off to [`spm-build-analysis`](../spm-build-analysis/SKILL.md) by reading its SKILL.md and applying its workflow to the same project context.
70
+
71
+ ## Additional Resources
72
+
73
+ - For the detailed audit checklist, see [references/project-audit-checks.md](references/project-audit-checks.md)
74
+ - For build settings best practices, see [references/build-settings-best-practices.md](references/build-settings-best-practices.md)
75
+ - For the shared recommendation structure, see [references/recommendation-format.md](references/recommendation-format.md)
76
+ - For Apple-aligned source summaries, see [references/build-optimization-sources.md](references/build-optimization-sources.md)
@@ -0,0 +1,155 @@
1
+ # Build Optimization Sources
2
+
3
+ This file stores the external sources that the README and skill docs should cite consistently.
4
+
5
+ ## Apple: Improving the speed of incremental builds
6
+
7
+ Source:
8
+
9
+ - <https://developer.apple.com/documentation/xcode/improving-the-speed-of-incremental-builds>
10
+
11
+ Key takeaways:
12
+
13
+ - Measure first with `Build With Timing Summary` or `xcodebuild -showBuildTimingSummary`.
14
+ - Accurate target dependencies improve correctness and parallelism.
15
+ - Run scripts should declare inputs and outputs so Xcode can skip unnecessary work.
16
+ - `.xcfilelist` files are appropriate when scripts have many inputs or outputs.
17
+ - Custom frameworks and libraries benefit from module maps, typically by enabling `DEFINES_MODULE`.
18
+ - Module reuse is strongest when related sources compile with consistent options.
19
+ - Breaking monolithic targets into better-scoped modules can reduce unnecessary rebuilds.
20
+
21
+ ## Apple: Improving build efficiency with good coding practices
22
+
23
+ Source:
24
+
25
+ - <https://developer.apple.com/documentation/xcode/improving-build-efficiency-with-good-coding-practices>
26
+
27
+ Key takeaways:
28
+
29
+ - Use framework-qualified imports when module maps are available.
30
+ - Keep Objective-C bridging surfaces narrow.
31
+ - Prefer explicit type information when inference becomes expensive.
32
+ - Use explicit delegate protocols instead of overly generic delegate types.
33
+ - Simplify complex expressions that are hard for the compiler to type-check.
34
+
35
+ ## Apple: Building your project with explicit module dependencies
36
+
37
+ Source:
38
+
39
+ - <https://developer.apple.com/documentation/xcode/building-your-project-with-explicit-module-dependencies>
40
+
41
+ Key takeaways:
42
+
43
+ - Explicit module builds make module work visible in the build log and improve scheduling.
44
+ - Repeated builds of the same module often point to avoidable module variants.
45
+ - Inconsistent build options across targets can force duplicate module builds.
46
+ - Timing summaries can reveal option drift that prevents module reuse.
47
+
48
+ ## SwiftLee: Build performance analysis for speeding up Xcode builds
49
+
50
+ Source:
51
+
52
+ - <https://www.avanderlee.com/optimization/analysing-build-performance-xcode/>
53
+
54
+ Key takeaways:
55
+
56
+ - Clean and incremental builds should both be measured because they reveal different problems.
57
+ - Build Timeline and Build Timing Summary are practical starting points for build optimization.
58
+ - Build scripts often produce large incremental-build wins when guarded correctly.
59
+ - `-warn-long-function-bodies` and `-warn-long-expression-type-checking` help surface compile hotspots.
60
+ - Typical debug and release build setting mismatches are worth auditing, especially in older projects.
61
+
62
+ ## Apple: Xcode Release Notes -- Compilation Caching
63
+
64
+ Source:
65
+
66
+ - Xcode Release Notes (149700201)
67
+
68
+ Key takeaways:
69
+
70
+ - Compilation caching is an opt-in feature for Swift and C-family languages.
71
+ - It caches prior compilation results and reuses them when the same source inputs are recompiled.
72
+ - Branch switching and clean builds benefit the most.
73
+ - Can be enabled via the "Enable Compilation Caching" build setting or per-user project settings.
74
+
75
+ ## Apple: Demystify explicitly built modules (WWDC24)
76
+
77
+ Source:
78
+
79
+ - <https://developer.apple.com/videos/play/wwdc2024/10171/>
80
+
81
+ Key takeaways:
82
+
83
+ - Explains how explicitly built modules divide compilation into scan, module build, and source compile stages.
84
+ - Unrelated modules build in parallel, improving CPU utilization.
85
+ - Module variant duplication is a key bottleneck -- uniform compiler options across targets prevent it.
86
+ - The build log shows each module as a discrete task, making it easier to diagnose scheduling issues.
87
+
88
+ ## Swift Compile-Time Best Practices
89
+
90
+ Well-known Swift language patterns that reduce type-checker workload during compilation:
91
+
92
+ - Mark classes `final` when they are not intended for subclassing. This eliminates dynamic dispatch overhead and allows the compiler to de-virtualize method calls.
93
+ - Restrict access control to the narrowest useful scope (`private`, `fileprivate`). Fewer visible symbols reduce the compiler's search space during type resolution.
94
+ - Prefer value types (`struct`, `enum`) over `class` when reference semantics are not needed. Value types are simpler for the compiler to reason about.
95
+ - Break long method chains (`.map().flatMap().filter()`) into intermediate `let` bindings with explicit type annotations. Even simple-looking chains can take seconds to type-check.
96
+ - Provide explicit return types on closures passed to generic functions, especially in SwiftUI result-builder contexts.
97
+ - Decompose large SwiftUI `body` properties into smaller extracted subviews. Each subview narrows the scope of the result-builder expression the type-checker must resolve.
98
+
99
+ ## Bitrise: Demystifying Explicitly Built Modules for Xcode
100
+
101
+ Source:
102
+
103
+ - <https://bitrise.io/blog/post/demystifying-explicitly-built-modules-for-xcode>
104
+
105
+ Key takeaways:
106
+
107
+ - Explicit module builds give `xcodebuild` visibility into smaller compilation tasks for better parallelism.
108
+ - Enabled by default for C/Objective-C in Xcode 16+; experimental for Swift.
109
+ - Minimizing module variants by aligning build options is the primary optimization lever.
110
+ - Some projects see regressions from dependency scanning overhead -- benchmark before and after.
111
+
112
+ ## Bitrise: Xcode Compilation Cache FAQ
113
+
114
+ Source:
115
+
116
+ - <https://docs.bitrise.io/en/bitrise-build-cache/build-cache-for-xcode/xcode-compilation-cache-faq.html>
117
+
118
+ Key takeaways:
119
+
120
+ - Granular caching is controlled by `SWIFT_ENABLE_COMPILE_CACHE` and `CLANG_ENABLE_COMPILE_CACHE`, under the umbrella `COMPILATION_CACHING` setting.
121
+ - Non-cacheable tasks include `CompileStoryboard`, `CompileXIB`, `CompileAssetCatalogVariant`, `PhaseScriptExecution`, `DataModelCompile`, `CopyPNGFile`, `GenerateDSYMFile`, and `Ld`.
122
+ - SPM dependencies are not yet cacheable as of Xcode 26 beta.
123
+
124
+ ## RocketSim Docs: Build Insights
125
+
126
+ Sources:
127
+
128
+ - <https://www.rocketsim.app/docs/features/build-insights/build-insights/>
129
+ - <https://www.rocketsim.app/docs/features/build-insights/team-build-insights/>
130
+
131
+ Key takeaways:
132
+
133
+ - RocketSim automatically tracks clean vs incremental builds over time without build scripts.
134
+ - It reports build counts, duration trends, and percentile-based metrics such as p75 and p95.
135
+ - Team Build Insights adds machine, Xcode, and macOS comparisons for cross-team visibility.
136
+ - This repository is best positioned as the point-in-time analyze-and-improve toolkit, while RocketSim is the monitor-over-time companion.
137
+
138
+ ## Swift Forums: Slow incremental builds because of planning swift module
139
+
140
+ Source:
141
+
142
+ - <https://forums.swift.org/t/slow-incremental-builds-because-of-planning-swift-module/84803>
143
+
144
+ Key takeaways:
145
+
146
+ - "Planning Swift module" can dominate incremental builds (up to 30s per module), sometimes exceeding clean build time.
147
+ - Replanning every module without scheduling compiles is a sign that build inputs are being modified unexpectedly (e.g., a misconfigured linter touching file timestamps).
148
+ - Enable **Task Backtraces** (Xcode 16.4+: Scheme Editor > Build > Build Debugging) to see why each task re-ran in an incremental build.
149
+ - Heavy Swift macro usage (e.g., TCA / swift-syntax) can cause trivial changes to cascade into near-full rebuilds.
150
+ - `swift-syntax` builds universally (all architectures) when no prebuilt binary is available, adding significant overhead.
151
+ - `SwiftEmitModule` can take 60s+ after a single-line change in large modules.
152
+ - Asset catalog compilation is single-threaded per target; splitting assets into separate bundles across targets enables parallel compilation.
153
+ - Multi-platform targets (e.g., adding watchOS) can cause SPM packages to build 3x (iOS arm64, iOS x86_64, watchOS arm64).
154
+ - Zero-change incremental builds still incur ~10s of fixed overhead: compute dependencies, send project description, create build description, script phases, codesigning, and validation.
155
+ - Codesigning and validation run even when output has not changed.
@@ -0,0 +1,216 @@
1
+ # Build Settings Best Practices
2
+
3
+ This reference lists Xcode build settings that affect build performance. Use it to audit a project and produce a pass/fail checklist.
4
+
5
+ The scope is strictly **build performance**. Do not flag language-migration settings like `SWIFT_STRICT_CONCURRENCY` or `SWIFT_UPCOMING_FEATURE_*` -- those are developer adoption choices unrelated to build speed.
6
+
7
+ ## How To Read This Reference
8
+
9
+ Each setting includes:
10
+
11
+ - **Setting name** and the Xcode build-settings key
12
+ - **Recommended value** for Debug and Release
13
+ - **Why it matters** for build time
14
+ - **Risk** of changing it
15
+
16
+ Use checkmark and cross indicators when reporting:
17
+
18
+ - `[x]` -- setting matches the recommended value
19
+ - `[ ]` -- setting does not match; include the actual value and the expected value
20
+
21
+ ## Debug Configuration
22
+
23
+ These settings optimize for fast iteration during development.
24
+
25
+ ### Compilation Mode
26
+
27
+ - **Key:** `SWIFT_COMPILATION_MODE`
28
+ - **Recommended:** `singlefile` (Xcode UI: "Incremental"; or unset -- Xcode defaults to singlefile for Debug)
29
+ - **Why:** Single-file mode recompiles only changed files. `wholemodule` recompiles the entire target on every change.
30
+ - **Risk:** Low
31
+
32
+ ### Swift Optimization Level
33
+
34
+ - **Key:** `SWIFT_OPTIMIZATION_LEVEL`
35
+ - **Recommended:** `-Onone`
36
+ - **Why:** Optimization passes add significant compile time. Debug builds do not benefit from runtime speed improvements.
37
+ - **Risk:** Low
38
+
39
+ ### GCC Optimization Level
40
+
41
+ - **Key:** `GCC_OPTIMIZATION_LEVEL`
42
+ - **Recommended:** `0`
43
+ - **Why:** Same rationale as Swift optimization level, but for C/C++/Objective-C sources.
44
+ - **Risk:** Low
45
+
46
+ ### Build Active Architecture Only
47
+
48
+ - **Key:** `ONLY_ACTIVE_ARCH` (`BUILD_ACTIVE_ARCHITECTURE_ONLY`)
49
+ - **Recommended:** `YES`
50
+ - **Why:** Building all architectures doubles or triples compile and link time for no debug benefit.
51
+ - **Risk:** Low
52
+
53
+ ### Debug Information Format
54
+
55
+ - **Key:** `DEBUG_INFORMATION_FORMAT`
56
+ - **Recommended:** `dwarf`
57
+ - **Why:** `dwarf-with-dsym` generates a separate dSYM bundle which adds overhead. Plain `dwarf` embeds debug info directly in the binary, which is sufficient for local debugging.
58
+ - **Risk:** Low
59
+
60
+ ### Enable Testability
61
+
62
+ - **Key:** `ENABLE_TESTABILITY`
63
+ - **Recommended:** `YES`
64
+ - **Why:** Required for `@testable import`. Adds minor overhead by exporting internal symbols, but this is expected during development.
65
+ - **Risk:** Low
66
+
67
+ ### Active Compilation Conditions
68
+
69
+ - **Key:** `SWIFT_ACTIVE_COMPILATION_CONDITIONS`
70
+ - **Recommended:** Should include `DEBUG`
71
+ - **Why:** Guards conditional compilation blocks (e.g., `#if DEBUG`) and ensures debug-only code paths are included.
72
+ - **Risk:** Low
73
+
74
+ ### Eager Linking
75
+
76
+ - **Key:** `EAGER_LINKING`
77
+ - **Recommended:** `YES`
78
+ - **Why:** Allows the linker to start work before all compilation tasks finish, reducing wall-clock build time. Particularly effective for Debug builds where link time is a meaningful fraction of total build time.
79
+ - **Risk:** Low
80
+
81
+ ## Release Configuration
82
+
83
+ These settings optimize for production builds.
84
+
85
+ ### Compilation Mode
86
+
87
+ - **Key:** `SWIFT_COMPILATION_MODE`
88
+ - **Recommended:** `wholemodule`
89
+ - **Why:** Whole-module optimization produces faster runtime code. Build time is secondary for release.
90
+ - **Risk:** Low
91
+
92
+ ### Swift Optimization Level
93
+
94
+ - **Key:** `SWIFT_OPTIMIZATION_LEVEL`
95
+ - **Recommended:** `-O` or `-Osize`
96
+ - **Why:** Produces optimized binaries. `-Osize` trades some speed for smaller binary size.
97
+ - **Risk:** Low
98
+
99
+ ### GCC Optimization Level
100
+
101
+ - **Key:** `GCC_OPTIMIZATION_LEVEL`
102
+ - **Recommended:** `s`
103
+ - **Why:** Optimizes C/C++/Objective-C for size, matching the typical release expectation.
104
+ - **Risk:** Low
105
+
106
+ ### Build Active Architecture Only
107
+
108
+ - **Key:** `ONLY_ACTIVE_ARCH`
109
+ - **Recommended:** `NO`
110
+ - **Why:** Release builds must include all supported architectures for distribution.
111
+ - **Risk:** Low
112
+
113
+ ### Debug Information Format
114
+
115
+ - **Key:** `DEBUG_INFORMATION_FORMAT`
116
+ - **Recommended:** `dwarf-with-dsym`
117
+ - **Why:** dSYM bundles are required for crash symbolication in production.
118
+ - **Risk:** Low
119
+
120
+ ### Enable Testability
121
+
122
+ - **Key:** `ENABLE_TESTABILITY`
123
+ - **Recommended:** `NO`
124
+ - **Why:** Removes internal-symbol export overhead from release builds. Testing should use Debug configuration.
125
+ - **Risk:** Low
126
+
127
+ ## General (All Configurations)
128
+
129
+ ### Compilation Caching
130
+
131
+ - **Key:** `COMPILATION_CACHING`
132
+ - **Recommended:** `YES`
133
+ - **Why:** Caches compilation results for Swift and C-family sources so repeated compilations of the same inputs are served from cache. The biggest wins come from branch switching and clean builds where source files are recompiled unchanged. This is an opt-in feature. The umbrella setting controls both `SWIFT_ENABLE_COMPILE_CACHE` and `CLANG_ENABLE_COMPILE_CACHE` under the hood; those can be toggled independently if needed.
134
+ - **Measurement:** Measured 5-14% faster clean builds across tested projects (87 to 1,991 Swift files). The benefit compounds in real developer workflows where the cache persists between builds -- branch switching, pulling changes, and CI with persistent DerivedData -- though the exact savings depend on how many files change between builds.
135
+ - **Risk:** Low -- can also be enabled via per-user project settings so it does not need to be committed to the shared project file.
136
+
137
+ ### Integrated Swift Driver
138
+
139
+ - **Key:** `SWIFT_USE_INTEGRATED_DRIVER`
140
+ - **Recommended:** `YES`
141
+ - **Why:** Uses the integrated Swift driver which runs inside the build system process, eliminating inter-process overhead for compilation scheduling. Enabled by default in modern Xcode but worth verifying in migrated projects.
142
+ - **Risk:** Low
143
+
144
+ ### Clang Module Compilation
145
+
146
+ - **Key:** `CLANG_ENABLE_MODULES`
147
+ - **Recommended:** `YES`
148
+ - **Why:** Enables Clang module compilation for C/Objective-C sources, caching module maps on disk instead of reprocessing headers on every import. Eliminates redundant header parsing across translation units.
149
+ - **Risk:** Low
150
+
151
+ ### Explicit Module Builds
152
+
153
+ - **Key:** `SWIFT_ENABLE_EXPLICIT_MODULES` (C/ObjC enabled by default in Xcode 16+; for Swift use `_EXPERIMENTAL_SWIFT_EXPLICIT_MODULES`)
154
+ - **Recommended:** Evaluate per-project
155
+ - **Why:** Makes module compilation visible to the build system as discrete tasks, improving parallelism and scheduling. Reduces redundant module rebuilds by making dependency edges explicit. Some projects see regressions due to the overhead of dependency scanning, so benchmark before and after enabling.
156
+ - **Risk:** Medium -- test thoroughly; currently experimental for Swift targets.
157
+
158
+ ## Cross-Target Consistency
159
+
160
+ These checks find settings differences between targets that cause redundant build work.
161
+
162
+ ### Project-Level vs Target-Level Overrides
163
+
164
+ Build-affecting settings should be set at the project level unless a target has a specific reason to override. Unnecessary per-target overrides cause confusion and can silently create module variants.
165
+
166
+ Settings to check for project-level consistency:
167
+
168
+ - `SWIFT_COMPILATION_MODE`
169
+ - `SWIFT_OPTIMIZATION_LEVEL`
170
+ - `ONLY_ACTIVE_ARCH`
171
+ - `DEBUG_INFORMATION_FORMAT`
172
+
173
+ ### Module Variant Duplication
174
+
175
+ When multiple targets import the same SPM package but compile with different Swift compiler options, the build system produces separate module variants for each combination. This inflates `SwiftEmitModule` task counts.
176
+
177
+ Check for drift in:
178
+
179
+ - `SWIFT_OPTIMIZATION_LEVEL`
180
+ - `SWIFT_COMPILATION_MODE`
181
+ - `OTHER_SWIFT_FLAGS`
182
+ - Target-level build settings that override project defaults
183
+
184
+ ### Out of Scope
185
+
186
+ Do **not** flag the following as build-performance issues:
187
+
188
+ - `SWIFT_STRICT_CONCURRENCY` -- language migration choice
189
+ - `SWIFT_UPCOMING_FEATURE_*` -- language migration choice
190
+ - `SWIFT_APPROACHABLE_CONCURRENCY` -- language migration choice
191
+ - `SWIFT_ACTIVE_COMPILATION_CONDITIONS` values beyond `DEBUG` (e.g., `WIDGETS`, `APPCLIP`) -- intentional per-target customization
192
+
193
+ ## Checklist Output Format
194
+
195
+ When reporting results, use this structure:
196
+
197
+ ```markdown
198
+ ### Debug Configuration
199
+ - [x] `SWIFT_COMPILATION_MODE`: `singlefile` (recommended: `singlefile`)
200
+ - [ ] `DEBUG_INFORMATION_FORMAT`: `dwarf-with-dsym` (recommended: `dwarf`)
201
+ - [x] `SWIFT_OPTIMIZATION_LEVEL`: `-Onone` (recommended: `-Onone`)
202
+ ...
203
+
204
+ ### Release Configuration
205
+ - [x] `SWIFT_COMPILATION_MODE`: `wholemodule` (recommended: `wholemodule`)
206
+ ...
207
+
208
+ ### General (All Configurations)
209
+ - [ ] `COMPILATION_CACHING`: `NO` (recommended: `YES`)
210
+ ...
211
+
212
+ ### Cross-Target Consistency
213
+ - [x] All targets inherit `SWIFT_OPTIMIZATION_LEVEL` from project level
214
+ - [ ] `OTHER_SWIFT_FLAGS` differs between Stock Analyzer and StockAnalyzerClip
215
+ ...
216
+ ```
@@ -0,0 +1,101 @@
1
+ # Project Audit Checks
2
+
3
+ Use this reference when reviewing build-system configuration rather than source-level compile behavior.
4
+
5
+ ## Target And Scheme Checks
6
+
7
+ - Confirm target dependencies are explicit and accurate.
8
+ - Remove dependencies that no longer reflect real build requirements.
9
+ - Ensure the scheme builds targets in `Dependency Order`.
10
+ - Look for oversized or monolithic targets that block parallel work.
11
+
12
+ ## Build Script Checks
13
+
14
+ - Does each script need to run during incremental builds?
15
+ - Are input and output files declared?
16
+ - Should inputs and outputs be moved into `.xcfilelist` files?
17
+ - Can the script skip debug builds, simulator builds, or unchanged inputs?
18
+ - Would the script become parallelizable if dependency analysis were declared correctly?
19
+ - Could a misconfigured linter or formatter script be touching file timestamps without changing content? This silently invalidates build inputs and forces replanning of every module.
20
+
21
+ ## Build Planning And Incremental Overhead Checks
22
+
23
+ - Check whether "Planning Swift module" appears as a significant category in the Build Timing Summary. In projects with many modules this step can take up to 30s per module, sometimes exceeding clean build time.
24
+ - If modules are replanned but no compiles are scheduled, suspect unexpected input modification (see Build Script Checks above).
25
+ - Enable **Task Backtraces** (Xcode 16.4+) to diagnose why tasks re-run in incremental builds: Scheme Editor > Build tab > Build Debugging > enable "Task Backtraces." Expanding tasks in the build log will show a backtrace explaining what input change triggered the re-run.
26
+ - Measure zero-change incremental build time as a baseline. Even with no source changes, builds incur fixed overhead: compute dependencies, send project description to build service, create build description, run script phases, codesign, and validate. If this baseline exceeds a few seconds, investigate each contributor.
27
+ - Check whether codesigning and validation run on every build even when the build output has not changed.
28
+
29
+ ## Zero-Change Build Overhead Analysis
30
+
31
+ When a zero-change build (no edits, immediate rebuild) takes more than a few seconds, the overhead comes from fixed-cost phases rather than compilation. Investigate these categories in the Build Timing Summary:
32
+
33
+ - **PhaseScriptExecution**: Script phases with `alwaysOutOfDate = 1` or missing input/output declarations run on every build regardless of changes. Linters, formatters, and upload scripts are common offenders.
34
+ - **CodeSign**: Codesigning runs on every build for the app target and any embedded frameworks. Time scales with the number of signed binaries.
35
+ - **ValidateEmbeddedBinary**: Validates embedded binaries against the host app's provisioning profile. Runs unconditionally.
36
+ - **CopySwiftLibs**: Copies Swift standard libraries into the app bundle. Runs even when nothing changed.
37
+ - **RegisterWithLaunchServices**: Registers the built app with Launch Services. Fast but present in every build.
38
+ - **ProcessInfoPlistFile**: Re-processes Info.plist files. Time scales with the number of targets.
39
+ - **ExtractAppIntentsMetadata**: Extracts App Intents metadata from all targets. This phase is driven by Xcode and runs across all targets including CocoaPods and SwiftPM dependencies, not just first-party targets. If the project does not use App Intents, the work is unnecessary overhead, but it is not cleanly suppressible from project-level build settings alone. Classify findings about this phase as `xcode-behavior` actionability -- report the measured cost for awareness but do not promise a repo-local fix.
40
+
41
+ A zero-change build above 5 seconds on Apple Silicon typically indicates script phase overhead or an excessive number of targets requiring codesign and validation passes.
42
+
43
+ ## Asset Catalog Checks
44
+
45
+ - Asset catalog compilation (`CompileAssetCatalog`) is single-threaded per target. Multiple catalogs within the same target compile sequentially in a single process.
46
+ - If asset catalog compilation appears as a significant timing category, recommend splitting assets into separate resource bundles across separate targets to enable parallel compilation.
47
+ - Asset catalog compilation is not cacheable by the Xcode compilation cache (`CompileAssetCatalogVariant` is non-cacheable).
48
+ - Check whether asset catalogs rebuild during incremental builds even when no assets changed. If so, investigate whether build inputs for the catalog step are being invalidated unexpectedly.
49
+
50
+ ## Build Setting Checks
51
+
52
+ Audit project-level and target-level settings against the [build settings best practices](build-settings-best-practices.md). Present results as a checklist with `[x]`/`[ ]` indicators.
53
+
54
+ Key settings to verify:
55
+
56
+ - `SWIFT_COMPILATION_MODE` -- `singlefile` for Debug, `wholemodule` for Release
57
+ - `SWIFT_OPTIMIZATION_LEVEL` -- `-Onone` for Debug, `-O` or `-Osize` for Release
58
+ - `ONLY_ACTIVE_ARCH` -- `YES` for Debug, `NO` for Release
59
+ - `DEBUG_INFORMATION_FORMAT` -- `dwarf` for Debug, `dwarf-with-dsym` for Release
60
+ - `GCC_OPTIMIZATION_LEVEL` -- `0` for Debug, `s` for Release
61
+ - `ENABLE_TESTABILITY` -- `YES` for Debug, `NO` for Release
62
+ - `COMPILATION_CACHING` -- recommended `YES` for all configurations; caches repeated compilations during branch switching and clean builds
63
+ - `EAGER_LINKING` -- recommended `YES` for Debug; starts linking before all compilation finishes
64
+ - `SWIFT_USE_INTEGRATED_DRIVER` -- recommended `YES`; uses the integrated driver for better scheduling
65
+ - `CLANG_ENABLE_MODULES` -- recommended `YES`; caches module maps on disk for C/ObjC
66
+
67
+ Do not flag language-migration settings (`SWIFT_STRICT_CONCURRENCY`, `SWIFT_UPCOMING_FEATURE_*`) as build performance issues.
68
+
69
+ ## Module And Header Checks
70
+
71
+ - `DEFINES_MODULE` is enabled for custom frameworks that should benefit from module maps.
72
+ - Public headers are self-contained enough to compile as a module.
73
+ - Import statements use framework-qualified imports where available.
74
+ - targets that should share built modules use consistent options
75
+
76
+ ## Explicit Module Dependency Checks
77
+
78
+ - Check whether explicit modules are enabled or expected in the current Xcode version and Swift mode.
79
+ - Look for repeated module builds caused by configuration drift.
80
+ - Compare preprocessor macros or other build options across sibling targets that import the same modules.
81
+
82
+ ## CocoaPods Projects
83
+
84
+ CocoaPods is deprecated. Do not attempt CocoaPods-specific build optimizations such as linkage mode changes (`use_frameworks! :linkage => :static`), `COCOAPODS_PARALLEL_CODE_SIGN`, or Podfile tweaks. These are unreliable and frequently regress build times.
85
+
86
+ When a project uses CocoaPods (presence of `Podfile`, `Pods/`, or a `Pods.xcodeproj`), recommend migrating to Swift Package Manager as the highest-impact long-term improvement. SPM advantages for build time:
87
+
88
+ - **Compilation caching**: `COMPILATION_CACHING` works with SPM targets out of the box, delivering cumulative benefits across branch switching, pulling changes, and CI.
89
+ - **Better build parallelism**: SPM targets build in parallel based on the dependency graph without the overhead of a separate Pods project.
90
+ - **No xcconfig regeneration**: CocoaPods regenerates xcconfigs and its own project file on every `pod install`. SPM resolution is lighter and its outputs integrate natively.
91
+ - **Native Xcode integration**: No separate `Pods.xcodeproj`, no workspace stitching, and full support for modern Xcode features like explicit modules.
92
+
93
+ Focus the remaining analysis on first-party targets and build settings that the project controls directly. Do not audit or recommend changes to `Pods.xcodeproj` or the Podfile.
94
+
95
+ ## Recommendation Prioritization
96
+
97
+ Qualify every estimated impact with wall-clock framing. High-priority items should be those likely to reduce the developer's actual wait time, not just cumulative task totals. If the impact on wait time is uncertain, say so.
98
+
99
+ - High: serial script bottlenecks, missing dependency metadata, configuration drift causing redundant module builds, excessive "Planning Swift module" time, or scripts silently invalidating build inputs.
100
+ - Medium: stale target structure, noncritical scripts running too often, slow asset catalog compilation blocking the critical path, unnecessary codesigning on unchanged output, or significant `ExtractAppIntentsMetadata` time in projects without App Intents.
101
+ - Low: settings cleanup without strong evidence of current impact.
@@ -0,0 +1,85 @@
1
+ # Recommendation Format
2
+
3
+ All optimization skills should report recommendations in a shared structure so the orchestrator can merge and prioritize them cleanly.
4
+
5
+ ## Required Fields
6
+
7
+ Each recommendation should include:
8
+
9
+ - `title`
10
+ - `wait_time_impact` -- plain-language statement of expected wall-clock impact, e.g. "Expected to reduce your clean build by ~3s", "Reduces parallel compile work but unlikely to reduce build wait time", or "Impact on wait time is uncertain -- re-benchmark to confirm"
11
+ - `actionability` -- classifies how fixable the issue is from the project (see values below)
12
+ - `category`
13
+ - `observed_evidence`
14
+ - `estimated_impact`
15
+ - `confidence`
16
+ - `approval_required`
17
+ - `benchmark_verification_status`
18
+
19
+ ### Actionability Values
20
+
21
+ Every recommendation must include an `actionability` classification:
22
+
23
+ - `repo-local` -- Fix lives entirely in project files, source code, or local configuration. The developer can apply it without side effects outside the repo.
24
+ - `package-manager` -- Requires CocoaPods or SPM configuration changes that may have broad side effects (e.g., linkage mode, dependency restructuring). These should be benchmarked before and after.
25
+ - `xcode-behavior` -- Observed cost is driven by Xcode internals and is not suppressible from the project. Report the finding for awareness but do not promise a fix.
26
+ - `upstream` -- Requires changes in a third-party dependency or external tool. The developer cannot fix it locally.
27
+
28
+ ## Suggested Optional Fields
29
+
30
+ - `scope`
31
+ - `affected_files`
32
+ - `affected_targets`
33
+ - `affected_packages`
34
+ - `implementation_notes`
35
+ - `risk_level`
36
+
37
+ ## JSON Example
38
+
39
+ ```json
40
+ {
41
+ "recommendations": [
42
+ {
43
+ "title": "Guard a release-only symbol upload script",
44
+ "wait_time_impact": "Expected to reduce your incremental build by approximately 6 seconds.",
45
+ "actionability": "repo-local",
46
+ "category": "project",
47
+ "observed_evidence": [
48
+ "Incremental builds spend 6.3 seconds in a run script phase.",
49
+ "The script runs for Debug builds even though the output is only needed in Release."
50
+ ],
51
+ "estimated_impact": "High incremental-build improvement",
52
+ "confidence": "High",
53
+ "approval_required": true,
54
+ "benchmark_verification_status": "Not yet verified",
55
+ "scope": "Target build phase",
56
+ "risk_level": "Low"
57
+ }
58
+ ]
59
+ }
60
+ ```
61
+
62
+ ## Markdown Rendering Guidance
63
+
64
+ When rendering for human review, preserve the same field order:
65
+
66
+ 1. title
67
+ 2. wait-time impact
68
+ 3. actionability
69
+ 4. observed evidence
70
+ 5. estimated impact
71
+ 6. confidence
72
+ 7. approval required
73
+ 8. benchmark verification status
74
+
75
+ That makes it easier for the developer to approve or reject specific items quickly.
76
+
77
+ ## Verification Status Values
78
+
79
+ Recommended values:
80
+
81
+ - `Not yet verified`
82
+ - `Queued for verification`
83
+ - `Verified improvement`
84
+ - `No measurable improvement`
85
+ - `Inconclusive due to benchmark noise`
@@ -1,10 +1,5 @@
1
1
  {
2
- "_comments": {
3
- "projectId": "Auto-generated from folder name. DO NOT change — used by Symphony for task scoping.",
4
- "trello": "Fill in your Trello board/list/card names. Run 'awkit trello info' to verify."
5
- },
6
2
  "projectName": "MyAndroidApp",
7
- "projectId": "myandroidapp",
8
3
  "projectType": "android",
9
4
  "packageName": "com.company.myandroidapp",
10
5
  "primaryLanguage": "en",
@@ -21,11 +16,6 @@
21
16
  "testing": "JUnit + Espresso",
22
17
  "buildSystem": "Gradle (KTS)"
23
18
  },
24
- "trello": {
25
- "board": "Your Board Name",
26
- "list": "Your List Name",
27
- "card": "Your Card Name"
28
- },
29
19
  "projectStage": "planning",
30
20
  "codingStandards": {
31
21
  "language": "en",