Generate dynamic plugin loading system with discovery, validation, and lifecycle management.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add a5c-ai/babysitter --skill plugin-loader-generator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Plugin Loader Generator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/a5c-ai-plugin-loader-generator-babysitter)More formats (shields.io, HTML) on the badges page.
---
name: plugin-loader-generator
description: Generate dynamic plugin loading system with discovery, validation, and lifecycle management.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
graph:
domains: [domain:software-engineering]
specializations: [specialization:cli-mcp-development]
skillAreas: [skill-area:cli-design, skill-area:plugin-systems]
roles: [role:backend-engineer, role:platform-engineer]
workflows: [workflow:feature-development, workflow:product-discovery]
topics: [topic:developer-experience]
---
# Plugin Loader Generator
Generate dynamic plugin loading system.
## Generated Patterns
```typescript
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
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!