pumuki 6.3.130 → 6.3.131
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.
|
@@ -319,6 +319,16 @@ export const skillsCompilerTemplates: Record<string, SkillsCompilerTemplate> = {
|
|
|
319
319
|
description:
|
|
320
320
|
'Curated enforcement mapping for Swift Testing adoption in iOS unit and integration tests.',
|
|
321
321
|
rules: [
|
|
322
|
+
{
|
|
323
|
+
id: 'skills.ios.critical-test-quality',
|
|
324
|
+
description:
|
|
325
|
+
'Critical iOS test quality contract: Swift tests must be covered by modern testing rules and XCTest compatibility guards.',
|
|
326
|
+
severity: 'ERROR',
|
|
327
|
+
platform: 'ios',
|
|
328
|
+
confidence: 'HIGH',
|
|
329
|
+
stage: 'PRE_COMMIT',
|
|
330
|
+
locked: true,
|
|
331
|
+
},
|
|
322
332
|
{
|
|
323
333
|
id: 'skills.ios.prefer-swift-testing',
|
|
324
334
|
description:
|
|
@@ -112,6 +112,15 @@ const registryByRuleId: Record<string, SkillsDetectorBinding> = {
|
|
|
112
112
|
'skills.ios.no-uiscreen-main-bounds': heuristicDetector('ios.uiscreen-main-bounds', [
|
|
113
113
|
'heuristics.ios.uiscreen-main-bounds.ast',
|
|
114
114
|
]),
|
|
115
|
+
'skills.ios.critical-test-quality': heuristicDetector('ios.testing.critical-quality', [
|
|
116
|
+
'heuristics.ios.testing.xctest-import.ast',
|
|
117
|
+
'heuristics.ios.testing.xctest-suite-modernizable.ast',
|
|
118
|
+
'heuristics.ios.testing.xctassert.ast',
|
|
119
|
+
'heuristics.ios.testing.xctunwrap.ast',
|
|
120
|
+
'heuristics.ios.testing.wait-for-expectations.ast',
|
|
121
|
+
'heuristics.ios.testing.legacy-expectation-description.ast',
|
|
122
|
+
'heuristics.ios.testing.mixed-frameworks.ast',
|
|
123
|
+
]),
|
|
115
124
|
'skills.ios.prefer-swift-testing': heuristicDetector('ios.testing.xctest-import', [
|
|
116
125
|
'heuristics.ios.testing.xctest-import.ast',
|
|
117
126
|
'heuristics.ios.testing.xctest-suite-modernizable.ast',
|
|
@@ -507,6 +507,38 @@ const emptyResult = (): SkillsRuleSetLoadResult => {
|
|
|
507
507
|
};
|
|
508
508
|
};
|
|
509
509
|
|
|
510
|
+
const IOS_CRITICAL_TEST_QUALITY_RULE: SkillsCompiledRule = {
|
|
511
|
+
id: 'skills.ios.critical-test-quality',
|
|
512
|
+
description:
|
|
513
|
+
'Critical iOS test quality contract: Swift tests must be covered by modern testing rules and XCTest compatibility guards.',
|
|
514
|
+
severity: 'ERROR',
|
|
515
|
+
platform: 'ios',
|
|
516
|
+
sourceSkill: 'ios-swift-testing-guidelines',
|
|
517
|
+
sourcePath: 'compat:synthetic/ios-critical-test-quality',
|
|
518
|
+
stage: 'PRE_COMMIT',
|
|
519
|
+
confidence: 'HIGH',
|
|
520
|
+
locked: true,
|
|
521
|
+
evaluationMode: 'AUTO',
|
|
522
|
+
origin: 'core',
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
const withSyntheticCompatibilityRules = (
|
|
526
|
+
bundles: ReadonlyArray<SkillsLockBundle>
|
|
527
|
+
): SkillsLockBundle[] => {
|
|
528
|
+
return bundles.map((bundle) => {
|
|
529
|
+
if (bundle.name !== 'ios-swift-testing-guidelines') {
|
|
530
|
+
return bundle;
|
|
531
|
+
}
|
|
532
|
+
if (bundle.rules.some((rule) => rule.id === IOS_CRITICAL_TEST_QUALITY_RULE.id)) {
|
|
533
|
+
return bundle;
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
536
|
+
...bundle,
|
|
537
|
+
rules: [IOS_CRITICAL_TEST_QUALITY_RULE, ...bundle.rules],
|
|
538
|
+
};
|
|
539
|
+
});
|
|
540
|
+
};
|
|
541
|
+
|
|
510
542
|
export const loadSkillsRuleSetForStage = (
|
|
511
543
|
stage: Exclude<GateStage, 'STAGED'>,
|
|
512
544
|
repoRoot: string = process.cwd(),
|
|
@@ -521,13 +553,13 @@ export const loadSkillsRuleSetForStage = (
|
|
|
521
553
|
const policy = loadSkillsPolicy(repoRoot);
|
|
522
554
|
const defaultBundleEnabled = policy?.defaultBundleEnabled ?? true;
|
|
523
555
|
|
|
524
|
-
const activeBundles = lock.bundles.filter((bundle) => {
|
|
556
|
+
const activeBundles = withSyntheticCompatibilityRules(lock.bundles.filter((bundle) => {
|
|
525
557
|
return resolveBundleEnabled({
|
|
526
558
|
bundleName: bundle.name,
|
|
527
559
|
defaultBundleEnabled,
|
|
528
560
|
bundlePolicy: policy?.bundles[bundle.name],
|
|
529
561
|
});
|
|
530
|
-
});
|
|
562
|
+
}));
|
|
531
563
|
|
|
532
564
|
if (activeBundles.length === 0) {
|
|
533
565
|
return emptyResult();
|
|
@@ -150,6 +150,8 @@ const PLATFORM_REQUIRED_SKILLS_BUNDLES: Readonly<Record<PreWriteSkillsPlatform,
|
|
|
150
150
|
'ios-guidelines',
|
|
151
151
|
'ios-concurrency-guidelines',
|
|
152
152
|
'ios-swiftui-expert-guidelines',
|
|
153
|
+
'ios-swift-testing-guidelines',
|
|
154
|
+
'ios-core-data-guidelines',
|
|
153
155
|
],
|
|
154
156
|
android: ['android-guidelines'],
|
|
155
157
|
backend: ['backend-guidelines'],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.131",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
package/skills.lock.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0",
|
|
3
3
|
"compilerVersion": "1.0.0",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-05-03T12:45:29.960Z",
|
|
5
5
|
"bundles": [
|
|
6
6
|
{
|
|
7
7
|
"name": "android-guidelines",
|
|
@@ -8176,8 +8176,21 @@
|
|
|
8176
8176
|
"name": "ios-swift-testing-guidelines",
|
|
8177
8177
|
"version": "1.0.0",
|
|
8178
8178
|
"source": "file:vendor/skills/swift-testing-expert/SKILL.md",
|
|
8179
|
-
"hash": "
|
|
8179
|
+
"hash": "1d5d5236f9cd9fdd12a860048512fa3c2d6b9af5aedfafaaa4a18f837d2ca9e1",
|
|
8180
8180
|
"rules": [
|
|
8181
|
+
{
|
|
8182
|
+
"id": "skills.ios.critical-test-quality",
|
|
8183
|
+
"description": "Critical iOS test quality contract: Swift tests must be covered by modern testing rules and XCTest compatibility guards.",
|
|
8184
|
+
"severity": "ERROR",
|
|
8185
|
+
"platform": "ios",
|
|
8186
|
+
"confidence": "HIGH",
|
|
8187
|
+
"stage": "PRE_COMMIT",
|
|
8188
|
+
"locked": true,
|
|
8189
|
+
"sourceSkill": "ios-swift-testing-guidelines",
|
|
8190
|
+
"sourcePath": "vendor/skills/swift-testing-expert/SKILL.md",
|
|
8191
|
+
"evaluationMode": "AUTO",
|
|
8192
|
+
"origin": "core"
|
|
8193
|
+
},
|
|
8181
8194
|
{
|
|
8182
8195
|
"id": "skills.ios.guideline.ios-swift-testing.keep-tests-isolated-expressive-and-aligned-with-swift-concurrency",
|
|
8183
8196
|
"description": "Keep tests isolated, expressive, and aligned with Swift Concurrency.",
|