Loading...
Loading...
Use when the user is unsure which LVTD skill or marketplace plugin fits their problem, asks what skill to use, describes a cross-domain workflow, or needs help choosing among installed or source LVTD skills.
npx skill4agent add lvtd-llc/skills lvtd-skills-routernpm run build:registrydist/registry.jsondist/registry.jsonnamedescriptioncategorytagshosts.codex.pluginhosts.claudeCode.pluginhosts.*.pluginskills/*/SKILL.mdscripts/marketplace-utils.mjsnode --input-type=module -e '
import { readFile } from "node:fs/promises";
const registry = JSON.parse(await readFile("dist/registry.json", "utf8"));
const plugins = new Map();
const direct = [];
for (const skill of registry.skills) {
const plugin = skill.hosts?.codex?.plugin || skill.hosts?.claudeCode?.plugin;
if (!plugin) {
direct.push(skill.name);
continue;
}
plugins.set(plugin, [...(plugins.get(plugin) || []), skill.name]);
}
for (const [plugin, skills] of [...plugins.entries()].sort()) {
console.log(`${plugin}: ${skills.sort().join(", ")}`);
}
if (direct.length) {
console.log(`direct-install: ${direct.sort().join(", ")}`);
}
'node --input-type=module -e '
import { readFile } from "node:fs/promises";
const query = process.argv.slice(1).join(" ").toLowerCase();
const registry = JSON.parse(await readFile("dist/registry.json", "utf8"));
for (const skill of registry.skills) {
const haystack = [
skill.name,
skill.displayName,
skill.description,
skill.category,
...(skill.tags || []),
].join(" ").toLowerCase();
if (haystack.includes(query)) {
const plugin = skill.hosts?.codex?.plugin || "direct-install";
console.log(`${skill.name} (${plugin}) - ${skill.description}`);
}
}
' "calibredb"django-htmxhtmx-*rust-game-*traction-seo-contentseopractical-ab-testingtractiondeveloper-docsmake-product-viralcalibredbtdd