plugin-loader-generator
Generate dynamic plugin loading system with discovery, validation, and lifecycle management.
它会碰到什么
扫了多少2 个文本文件,2 KB
它会碰到什么不碰外部(只输出文字)
命中总数1 处
命中统计严重 0 · 高 0 · 中 0 · 低 0
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Plugin Loader Generator
Generate dynamic plugin loading system.
Generated Patterns
import fs from 'fs';
import path from 'path';
interface Plugin {
name: string;
version: string;
init: () => Promise<void>;
destroy?: () => Promise<void>;
}
export class PluginLoader {
private plugins = new Map<string, Plugin>();
private pluginDirs: string[];
constructor(pluginDirs: string[]) {
this.pluginDirs = pluginDirs;
}
async discover(): Promise<string[]> {
const found: string[] = [];
for (const dir of this.pluginDirs) {
if (!fs.existsSync(dir)) continue;
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
if (entry.isDirectory()) {
const manifestPath = path.join(dir, entry.name, 'manifest.json');
if (fs.existsSync(manifestPath)) {
found.push(path.join(dir, entry.name));
}
}
}
}
return found;
}
async load(pluginPath: string): Promise<Plugin> {
const manifest = JSON.parse(fs.readFileSync(path.join(pluginPath, 'manifest.json'), 'utf-8'));
const module = await import(path.join(pluginPath, manifest.main));
const plugin: Plugin = { name: manifest.name, version: manifest.version, ...module };
await plugin.init();
this.plugins.set(plugin.name, plugin);
return plugin;
}
async unload(name: string): Promise<void> {
const plugin = this.plugins.get(name);
if (plugin?.destroy) await plugin.destroy();
this.plugins.delete(name);
}
}
Target Processes
- plugin-architecture-implementation
- cli-application-bootstrap
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
它属于哪个仓库
星标★ 1,796
本站分层T1
该仓技能数2115
原文件路径
library/specializations/cli-mcp-development/skills/plugin-loader-generator/SKILL.md