pumuki 6.3.60 → 6.3.62

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 (86) hide show
  1. package/VERSION +1 -1
  2. package/assets/rule-packs/ios-swiftui-modernization-v1.json +77 -0
  3. package/assets/rule-packs/ios-swiftui-modernization-v2.json +110 -0
  4. package/core/facts/detectors/text/ios.test.ts +472 -10
  5. package/core/facts/detectors/text/ios.ts +394 -0
  6. package/core/facts/detectors/text/iosSwiftUiModernizationSnapshot.test.ts +44 -0
  7. package/core/facts/detectors/text/iosSwiftUiModernizationSnapshot.ts +119 -0
  8. package/core/facts/extractHeuristicFacts.ts +35 -1
  9. package/core/gate/GateStage.test.ts +6 -4
  10. package/core/gate/GateStage.ts +6 -1
  11. package/core/rules/presets/heuristics/ios.test.ts +104 -1
  12. package/core/rules/presets/heuristics/ios.ts +472 -0
  13. package/docs/README.md +6 -5
  14. package/docs/codex-skills/core-data-expert.md +24 -0
  15. package/docs/codex-skills/swift-concurrency.md +3 -0
  16. package/docs/codex-skills/swift-testing-expert.md +31 -0
  17. package/docs/codex-skills/swiftui-expert-skill.md +1 -0
  18. package/docs/operations/RELEASE_NOTES.md +10 -1
  19. package/docs/rule-packs/ios.md +19 -0
  20. package/docs/validation/README.md +3 -32
  21. package/docs/validation/ios-avdlee-parity-matrix.md +48 -0
  22. package/integrations/config/skillsCompilerTemplates.test.ts +2 -0
  23. package/integrations/config/skillsCompilerTemplates.ts +253 -0
  24. package/integrations/config/skillsCustomRules.ts +6 -4
  25. package/integrations/config/skillsDetectorRegistry.ts +82 -0
  26. package/integrations/config/skillsLock.test.ts +3 -3
  27. package/integrations/config/skillsLock.ts +1 -1
  28. package/integrations/config/skillsMarkdownRules.ts +189 -2
  29. package/integrations/config/skillsPolicy.ts +2 -1
  30. package/integrations/config/skillsRuleSet.ts +1 -0
  31. package/integrations/config/skillsSources.test.ts +4 -4
  32. package/integrations/evidence/buildEvidence.ts +50 -0
  33. package/integrations/gate/stagePolicies.ts +591 -50
  34. package/integrations/git/brownfieldHotspots.ts +309 -0
  35. package/integrations/git/runPlatformGate.ts +17 -1
  36. package/integrations/lifecycle/cli.ts +32 -537
  37. package/integrations/lifecycle/cliOutputs.ts +14 -0
  38. package/integrations/lifecycle/cliSdd.ts +505 -0
  39. package/integrations/lifecycle/doctor.ts +13 -63
  40. package/integrations/lifecycle/policyReconcile.ts +227 -217
  41. package/integrations/lifecycle/policyValidationSnapshot.ts +1 -7
  42. package/integrations/policy/policyProfiles.ts +25 -0
  43. package/integrations/telemetry/gateTelemetry.ts +0 -4
  44. package/package.json +2 -1
  45. package/scripts/framework-menu-system-notifications-config-choice.ts +2 -2
  46. package/scripts/framework-menu-system-notifications-config-state.ts +2 -2
  47. package/scripts/framework-menu-system-notifications-macos-dialog-enabled.ts +1 -1
  48. package/scripts/framework-menu-system-notifications-macos-swift-source.ts +8 -1
  49. package/scripts/package-manifest-lib.ts +12 -0
  50. package/skills.lock.json +498 -229
  51. package/skills.sources.json +14 -0
  52. package/vendor/skills/MANIFEST.json +64 -0
  53. package/vendor/skills/android-enterprise-rules/SKILL.md +341 -0
  54. package/vendor/skills/backend-enterprise-rules/SKILL.md +262 -0
  55. package/vendor/skills/core-data-expert/SKILL.md +23 -0
  56. package/vendor/skills/enterprise-operating-system/SKILL.md +223 -0
  57. package/vendor/skills/frontend-enterprise-rules/SKILL.md +208 -0
  58. package/vendor/skills/ios-enterprise-rules/SKILL.md +916 -0
  59. package/vendor/skills/swift-concurrency/SKILL.md +246 -0
  60. package/vendor/skills/swift-concurrency/references/actors.md +640 -0
  61. package/vendor/skills/swift-concurrency/references/async-algorithms.md +819 -0
  62. package/vendor/skills/swift-concurrency/references/async-await-basics.md +249 -0
  63. package/vendor/skills/swift-concurrency/references/async-sequences.md +670 -0
  64. package/vendor/skills/swift-concurrency/references/core-data.md +533 -0
  65. package/vendor/skills/swift-concurrency/references/glossary.md +128 -0
  66. package/vendor/skills/swift-concurrency/references/linting.md +142 -0
  67. package/vendor/skills/swift-concurrency/references/memory-management.md +542 -0
  68. package/vendor/skills/swift-concurrency/references/migration.md +1073 -0
  69. package/vendor/skills/swift-concurrency/references/performance.md +574 -0
  70. package/vendor/skills/swift-concurrency/references/sendable.md +578 -0
  71. package/vendor/skills/swift-concurrency/references/tasks.md +604 -0
  72. package/vendor/skills/swift-concurrency/references/testing.md +565 -0
  73. package/vendor/skills/swift-concurrency/references/threading.md +452 -0
  74. package/vendor/skills/swift-testing-expert/SKILL.md +25 -0
  75. package/vendor/skills/swiftui-expert-skill/SKILL.md +263 -0
  76. package/vendor/skills/swiftui-expert-skill/references/image-optimization.md +286 -0
  77. package/vendor/skills/swiftui-expert-skill/references/layout-best-practices.md +312 -0
  78. package/vendor/skills/swiftui-expert-skill/references/liquid-glass.md +377 -0
  79. package/vendor/skills/swiftui-expert-skill/references/list-patterns.md +153 -0
  80. package/vendor/skills/swiftui-expert-skill/references/modern-apis.md +400 -0
  81. package/vendor/skills/swiftui-expert-skill/references/performance-patterns.md +377 -0
  82. package/vendor/skills/swiftui-expert-skill/references/scroll-patterns.md +305 -0
  83. package/vendor/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
  84. package/vendor/skills/swiftui-expert-skill/references/state-management.md +447 -0
  85. package/vendor/skills/swiftui-expert-skill/references/text-formatting.md +285 -0
  86. package/vendor/skills/swiftui-expert-skill/references/view-structure.md +276 -0
package/VERSION CHANGED
@@ -1 +1 @@
1
- v6.3.57
1
+ v6.3.61
@@ -0,0 +1,77 @@
1
+ {
2
+ "snapshotId": "ios-swiftui-modernization-v1",
3
+ "version": "1.0.0",
4
+ "generatedAt": "2026-03-31T00:00:00.000Z",
5
+ "sourceSkill": "swiftui-expert-skill",
6
+ "sourceReferences": [
7
+ "vendor/skills/swiftui-expert-skill/references/modern-apis.md",
8
+ "vendor/skills/swiftui-expert-skill/references/text-formatting.md",
9
+ "vendor/skills/swiftui-expert-skill/references/scroll-patterns.md"
10
+ ],
11
+ "entries": [
12
+ {
13
+ "id": "foreground-color",
14
+ "ruleId": "skills.ios.no-foreground-color",
15
+ "heuristicRuleId": "heuristics.ios.foreground-color.ast",
16
+ "category": "styling",
17
+ "legacyApi": ".foregroundColor(...)",
18
+ "modernApi": ".foregroundStyle(...)",
19
+ "rationale": "foregroundStyle supports hierarchical styles, gradients and materials.",
20
+ "confidence": "HIGH",
21
+ "minimumStage": "PRE_PUSH",
22
+ "minimumIos": "13.0",
23
+ "match": {
24
+ "kind": "regex",
25
+ "pattern": "\\.\\s*foregroundColor\\s*\\("
26
+ }
27
+ },
28
+ {
29
+ "id": "corner-radius",
30
+ "ruleId": "skills.ios.no-corner-radius",
31
+ "heuristicRuleId": "heuristics.ios.corner-radius.ast",
32
+ "category": "styling",
33
+ "legacyApi": ".cornerRadius(...)",
34
+ "modernApi": ".clipShape(.rect(cornerRadius: ...))",
35
+ "rationale": "cornerRadius is deprecated in modern SwiftUI and clipShape is explicit about the rendered shape.",
36
+ "confidence": "HIGH",
37
+ "minimumStage": "PRE_PUSH",
38
+ "minimumIos": "17.0",
39
+ "match": {
40
+ "kind": "regex",
41
+ "pattern": "\\.\\s*cornerRadius\\s*\\("
42
+ }
43
+ },
44
+ {
45
+ "id": "tab-item",
46
+ "ruleId": "skills.ios.no-tab-item",
47
+ "heuristicRuleId": "heuristics.ios.tab-item.ast",
48
+ "category": "tabs",
49
+ "legacyApi": ".tabItem { ... }",
50
+ "modernApi": "Tab { ... } label: { ... }",
51
+ "rationale": "The Tab API unlocks modern tab roles and avoids mixed syntax issues on iOS 18+.",
52
+ "confidence": "MEDIUM",
53
+ "minimumStage": "PRE_PUSH",
54
+ "minimumIos": "18.0",
55
+ "match": {
56
+ "kind": "regex",
57
+ "pattern": "\\.\\s*tabItem\\s*\\{"
58
+ }
59
+ },
60
+ {
61
+ "id": "scrollview-shows-indicators",
62
+ "ruleId": "skills.ios.no-scrollview-shows-indicators",
63
+ "heuristicRuleId": "heuristics.ios.scrollview-shows-indicators.ast",
64
+ "category": "scrolling",
65
+ "legacyApi": "ScrollView(..., showsIndicators: false)",
66
+ "modernApi": ".scrollIndicators(.hidden)",
67
+ "rationale": "The modifier-based API keeps the initializer clean and matches modern SwiftUI scrolling patterns.",
68
+ "confidence": "HIGH",
69
+ "minimumStage": "PRE_PUSH",
70
+ "minimumIos": "16.0",
71
+ "match": {
72
+ "kind": "regex",
73
+ "pattern": "\\bScrollView\\s*\\([\\s\\S]{0,80}showsIndicators\\s*:\\s*false\\b"
74
+ }
75
+ }
76
+ ]
77
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "snapshotId": "ios-swiftui-modernization-v2",
3
+ "version": "2.0.0",
4
+ "generatedAt": "2026-04-04T00:00:00.000Z",
5
+ "sourceSkill": "swiftui-expert-skill",
6
+ "sourceReferences": [
7
+ "vendor/skills/swiftui-expert-skill/references/modern-apis.md",
8
+ "vendor/skills/swiftui-expert-skill/references/text-formatting.md",
9
+ "vendor/skills/swiftui-expert-skill/references/scroll-patterns.md",
10
+ "vendor/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md"
11
+ ],
12
+ "entries": [
13
+ {
14
+ "id": "foreground-color",
15
+ "ruleId": "skills.ios.no-foreground-color",
16
+ "heuristicRuleId": "heuristics.ios.foreground-color.ast",
17
+ "category": "styling",
18
+ "legacyApi": ".foregroundColor(...)",
19
+ "modernApi": ".foregroundStyle(...)",
20
+ "rationale": "foregroundStyle supports hierarchical styles, gradients and materials.",
21
+ "confidence": "HIGH",
22
+ "minimumStage": "PRE_PUSH",
23
+ "minimumIos": "13.0",
24
+ "match": {
25
+ "kind": "regex",
26
+ "pattern": "\\.\\s*foregroundColor\\s*\\("
27
+ }
28
+ },
29
+ {
30
+ "id": "corner-radius",
31
+ "ruleId": "skills.ios.no-corner-radius",
32
+ "heuristicRuleId": "heuristics.ios.corner-radius.ast",
33
+ "category": "styling",
34
+ "legacyApi": ".cornerRadius(...)",
35
+ "modernApi": ".clipShape(.rect(cornerRadius: ...))",
36
+ "rationale": "cornerRadius is deprecated in modern SwiftUI and clipShape is explicit about the rendered shape.",
37
+ "confidence": "HIGH",
38
+ "minimumStage": "PRE_PUSH",
39
+ "minimumIos": "17.0",
40
+ "match": {
41
+ "kind": "regex",
42
+ "pattern": "\\.\\s*cornerRadius\\s*\\("
43
+ }
44
+ },
45
+ {
46
+ "id": "tab-item",
47
+ "ruleId": "skills.ios.no-tab-item",
48
+ "heuristicRuleId": "heuristics.ios.tab-item.ast",
49
+ "category": "tabs",
50
+ "legacyApi": ".tabItem { ... }",
51
+ "modernApi": "Tab { ... } label: { ... }",
52
+ "rationale": "The Tab API unlocks modern tab roles and avoids mixed syntax issues on iOS 18+.",
53
+ "confidence": "MEDIUM",
54
+ "minimumStage": "PRE_PUSH",
55
+ "minimumIos": "18.0",
56
+ "match": {
57
+ "kind": "regex",
58
+ "pattern": "\\.\\s*tabItem\\s*\\{"
59
+ }
60
+ },
61
+ {
62
+ "id": "scrollview-shows-indicators",
63
+ "ruleId": "skills.ios.no-scrollview-shows-indicators",
64
+ "heuristicRuleId": "heuristics.ios.scrollview-shows-indicators.ast",
65
+ "category": "scrolling",
66
+ "legacyApi": "ScrollView(..., showsIndicators: false)",
67
+ "modernApi": ".scrollIndicators(.hidden)",
68
+ "rationale": "The modifier-based API keeps the initializer clean and matches modern SwiftUI scrolling patterns.",
69
+ "confidence": "HIGH",
70
+ "minimumStage": "PRE_PUSH",
71
+ "minimumIos": "16.0",
72
+ "match": {
73
+ "kind": "regex",
74
+ "pattern": "\\bScrollView\\s*\\([\\s\\S]{0,80}showsIndicators\\s*:\\s*false\\b"
75
+ }
76
+ },
77
+ {
78
+ "id": "sheet-is-presented",
79
+ "ruleId": "skills.ios.no-sheet-is-presented",
80
+ "heuristicRuleId": "heuristics.ios.sheet-is-presented.ast",
81
+ "category": "presentation",
82
+ "legacyApi": ".sheet(isPresented: ...)",
83
+ "modernApi": ".sheet(item: ...)",
84
+ "rationale": "Item-based sheet presentation keeps model and presentation state aligned and avoids boolean drift in SwiftUI flows.",
85
+ "confidence": "MEDIUM",
86
+ "minimumStage": "PRE_PUSH",
87
+ "minimumIos": "13.0",
88
+ "match": {
89
+ "kind": "regex",
90
+ "pattern": "\\.\\s*sheet\\s*\\(\\s*isPresented\\s*:"
91
+ }
92
+ },
93
+ {
94
+ "id": "legacy-onchange",
95
+ "ruleId": "skills.ios.no-legacy-onchange",
96
+ "heuristicRuleId": "heuristics.ios.legacy-onchange.ast",
97
+ "category": "state",
98
+ "legacyApi": ".onChange(of: ...) { value in ... }",
99
+ "modernApi": ".onChange(of: ...) { oldValue, newValue in ... } or .onChange(of: ...) { ... }",
100
+ "rationale": "Modern onChange variants make value transitions explicit and remove the need for legacy single-value closure patterns.",
101
+ "confidence": "HIGH",
102
+ "minimumStage": "PRE_PUSH",
103
+ "minimumIos": "17.0",
104
+ "match": {
105
+ "kind": "regex",
106
+ "pattern": "\\.\\s*onChange\\s*\\(\\s*of\\s*:[\\s\\S]{0,160}?(?:,\\s*perform\\s*:\\s*\\{\\s*(?:\\[[^\\]]+\\]\\s*)?(?:\\(\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\s*:\\s*[^,)]+)?\\s*\\)|[A-Za-z_][A-Za-z0-9_]*)\\s+in\\b|\\)\\s*\\{\\s*(?:\\[[^\\]]+\\]\\s*)?(?:\\(\\s*[A-Za-z_][A-Za-z0-9_]*(?:\\s*:\\s*[^,)]+)?\\s*\\)|[A-Za-z_][A-Za-z0-9_]*)\\s+in\\b)"
107
+ }
108
+ }
109
+ ]
110
+ }