UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

95 lines (94 loc) 3.56 kB
/** * Android Enhancement Pack * 条件: { languages: ['kotlin', 'java'], frameworks: ['android'] } */ import { EnhancementPack } from './EnhancementPack.js'; class AndroidEnhancement extends EnhancementPack { get id() { return 'android'; } get displayName() { return 'Android (Kotlin/Java) Enhancement'; } get conditions() { return { languages: ['kotlin', 'java'], frameworks: ['android'] }; } getExtraDimensions() { return [ { id: 'android-lifecycle-scan', label: 'Activity/Fragment 生命周期', guide: 'Activity/Fragment 生命周期方法合规检查、ViewModel 使用、LiveData/StateFlow 状态管理', tierHint: 2, knowledgeTypes: ['architecture', 'best-practice'], skillWorthy: true, dualOutput: true, skillMeta: { name: 'project-android-lifecycle', description: 'Android lifecycle compliance and ViewModel patterns (auto-generated by enhancement)', }, }, { id: 'android-compose-scan', label: 'Jetpack Compose 分析', guide: '@Composable 函数组织与状态管理、remember/rememberSaveable 使用、Side Effect API', tierHint: 2, knowledgeTypes: ['code-pattern'], skillWorthy: true, dualOutput: true, skillMeta: { name: 'project-android-compose', description: 'Jetpack Compose patterns and state management (auto-generated by enhancement)', }, }, ]; } detectPatterns(astSummary) { const patterns = []; for (const cls of astSummary.classes || []) { // ViewModel if (cls.superclass && /ViewModel$/.test(cls.superclass)) { patterns.push({ type: 'android-viewmodel', className: cls.name, line: cls.line, confidence: 0.9, }); } // Activity / Fragment if (cls.superclass && /Activity$|AppCompatActivity$|ComponentActivity$/.test(cls.superclass)) { patterns.push({ type: 'android-activity', className: cls.name, line: cls.line, confidence: 0.9, }); } if (cls.superclass && /Fragment$/.test(cls.superclass)) { patterns.push({ type: 'android-fragment', className: cls.name, line: cls.line, confidence: 0.9, }); } // Hilt DI const annos = cls.annotations || []; if (annos.some((a) => /@HiltAndroidApp|@AndroidEntryPoint/.test(a))) { patterns.push({ type: 'hilt-di', className: cls.name, line: cls.line, confidence: 0.95 }); } // Composable (class-level) if (annos.some((a) => /@Composable/.test(a))) { patterns.push({ type: 'composable', className: cls.name, line: cls.line, confidence: 0.95, }); } } return patterns; } } export const pack = new AndroidEnhancement();