用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/a5c-ai/babysitter --skill plugin-dependency-resolver命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | plugin-dependency-resolver |
| description | Generate plugin dependency resolution logic with topological sorting. |
| 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"],"topics":["topic:developer-experience"]} |
Generate plugin dependency resolution logic.
interface PluginNode {
name: string;
dependencies: string[];
}
export function resolveDependencies(plugins: PluginNode[]): string[] {
const graph = new Map<string, string[]>();
const inDegree = new Map<string, number>();
for (const plugin of plugins) {
graph.set(plugin.name, plugin.dependencies);
inDegree.set(plugin.name, 0);
}
for (const [, deps] of graph) {
for (const dep of deps) {
inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
}
}
const queue = [...inDegree.entries()].filter(([, d]) => d === 0).map(([n]) => n);
const result: string[] = [];
while (queue.length > 0) {
const node = queue.shift()!;
result.push(node);
for (const dep of graph.get(node) || []) {
inDegree.set(dep, inDegree.get(dep)! - 1);
if (inDegree.get(dep) === 0) queue.push(dep);
}
}
if (result.length !== plugins.length) {
throw new Error('Circular dependency detected');
}
return result.reverse();
}