From core-claude-plugin
File-to-agent mapping and manifest generation for composite monorepo audits. Provides dynamic discovery of all config agents, generates structured audit manifests with priority-ordered spawn instructions, and handles library vs consumer repo exclusions. Use when performing root-level composite audits that scan repository for all config files and coordinate parallel agent execution across 26+ config domains.
npx claudepluginhub metasaver/metasaver-marketplace --plugin core-claude-pluginThis skill uses the workspace's default tool permissions.
This skill provides the file-to-agent mapping and manifest generation for composite monorepo audits.
Audits repository for baseline compliance across 9 categories: configuration, code quality, git hygiene, CI/CD, testing, security, documentation, Clank integration, MCP. Emits Markdown report and JSON sidecar.
Audits and syncs AI agent configuration files (CLAUDE.md, CODEX.md, AGENTS.md, .cursorrules, hooks, settings) across workspaces for drift, duplicates, and staleness.
Coordinates parallel agent audits for codebase health, evaluation (12-pillar scoring), technical debt, and documentation drift, producing intake docs for /pipeline.
Share bugs, ideas, or general feedback.
This skill provides the file-to-agent mapping and manifest generation for composite monorepo audits.
Enable monorepo-setup-agent to perform composite audits that:
Use /skill scope-check to discover repositories. The skill scans /mnt/f/code/, reads package.json files, and classifies repos as library or consumer based on metasaver.applicationType.
The skill outputs a structured manifest that tells /ms exactly which agents to spawn:
interface AuditManifest {
mode: "audit";
targetPath: string;
repoType: "library" | "consumer";
agents: AgentInstruction[];
excludedPaths: string[];
totalFiles: number;
}
interface AgentInstruction {
agent: string; // Agent name from settings.json
file: string; // Target file/directory to audit
priority: "critical" | "high" | "medium" | "low";
taskDescription: string; // Exact description for Task tool
taskPrompt: string; // Exact prompt for Task tool
}
| File/Directory | Agent | Priority | Notes |
|---|---|---|---|
turbo.json | turbo-config-agent | critical | Turborepo pipeline |
package.json | root-package-json-agent | critical | Root package scripts |
pnpm-workspace.yaml | pnpm-workspace-agent | critical | Workspace globs |
tsconfig.json | typescript-agent | high | Root TypeScript config |
eslint.config.js or .eslintrc* | eslint-agent | high | Linting rules |
.prettierrc* | prettier-agent | high | Formatting rules |
.editorconfig | editorconfig-agent | medium | Editor consistency |
commitlint.config.js | commitlint-agent | high | Commit validation |
.husky/ | husky-agent | high | Git hooks |
.github/workflows/ | github-workflow-agent | high | CI/CD pipelines |
.nvmrc | nvmrc-agent | medium | Node version |
.vscode/ | vscode-agent | medium | VS Code settings |
docker-compose.yml | docker-compose-agent | medium | Dev services |
.dockerignore | dockerignore-agent | low | Docker exclusions |
.env.example | env-example-agent | medium | Environment template |
.npmrc.template | npmrc-template-agent | medium | NPM registry config |
scripts/ | scripts-agent | medium | Setup scripts |
README.md | readme-agent | low | Documentation |
nodemon.json | nodemon-agent | low | Dev server config |
vitest.config.ts | vitest-agent | medium | Test configuration |
vite.config.ts | vite-agent | medium | Build configuration |
tailwind.config.js | tailwind-agent | medium | CSS framework |
postcss.config.js | postcss-agent | low | CSS processing |
Consumer Repos (metasaver-com, resume-builder, rugby-crm):
apps/ - Application packages (have own configs)packages/ - Shared libraries (have own configs)services/ - Backend services (have own configs)node_modules/ - Dependenciesdist/, build/, .turbo/, .next/ - Build outputsLibrary Repos (multi-mono):
components/ - Shared componentsconfig/ - Shared configs (source of truth)packages/ - Published packagesnode_modules/ - Dependenciesdist/, build/ - Build outputsCRITICAL: Always use DYNAMIC DISCOVERY - ensure you scan actual agent directories, not hardcoded lists!
The Project Manager MUST scan the actual agent directories to discover all available agents:
# STEP 1: Scan .claude/agents/config/ directories dynamically
find .claude/agents/config -type f -name "*-agent.md" | sort
# This will discover ALL agents, including any newly added ones:
.claude/agents/config/build-tools/docker-compose-agent.md
.claude/agents/config/build-tools/dockerignore-agent.md
.claude/agents/config/build-tools/pnpm-workspace-agent.md
.claude/agents/config/build-tools/postcss-agent.md
.claude/agents/config/build-tools/tailwind-agent.md
.claude/agents/config/build-tools/turbo-config-agent.md
.claude/agents/config/build-tools/vite-agent.md
.claude/agents/config/build-tools/vitest-agent.md
.claude/agents/config/code-quality/editorconfig-agent.md
.claude/agents/config/code-quality/eslint-agent.md
.claude/agents/config/code-quality/prettier-agent.md
.claude/agents/config/version-control/commitlint-agent.md
.claude/agents/config/version-control/gitattributes-agent.md
.claude/agents/config/version-control/github-workflow-agent.md
.claude/agents/config/version-control/gitignore-agent.md
.claude/agents/config/version-control/husky-agent.md
.claude/agents/config/workspace/claude-md-agent.md # <- NEW!
.claude/agents/config/workspace/env-example-agent.md
.claude/agents/config/workspace/nodemon-agent.md
.claude/agents/config/workspace/npmrc-template-agent.md
.claude/agents/config/workspace/nvmrc-agent.md
.claude/agents/config/workspace/readme-agent.md
.claude/agents/config/workspace/root-package-json-agent.md
.claude/agents/config/workspace/scripts-agent.md
.claude/agents/config/workspace/typescript-agent.md
.claude/agents/config/workspace/vscode-agent.md
TOTAL: 26 config agents (self-discovering, always accurate)
The Project Manager uses DYNAMIC DISCOVERY:
Glob(".claude/agents/config/**/*-agent.md")// DYNAMIC DISCOVERY - The ONLY source of truth
async function discoverConfigAgents(repoPath: string): Promise<string[]> {
// Use Glob tool to find ALL agent files
const agentFiles = await Glob(".claude/agents/config/**/*-agent.md");
// Extract agent names from file paths
const agents = agentFiles.map((filePath) => {
const fileName = filePath.split("/").pop(); // e.g., "claude-md-agent.md"
return fileName.replace(".md", ""); // e.g., "claude-md-agent"
});
console.log(`DISCOVERED ${agents.length} config agents`);
return agents;
}
// Group by category for reporting
function groupAgentsByCategory(agentFiles: string[]): Record<string, string[]> {
const categories: Record<string, string[]> = {};
for (const filePath of agentFiles) {
// Extract: .claude/agents/config/CATEGORY/agent-name.md
const parts = filePath.split("/");
const category = parts[parts.length - 2]; // e.g., "workspace"
const agentName = parts[parts.length - 1].replace(".md", "");
if (!categories[category]) {
categories[category] = [];
}
categories[category].push(agentName);
}
return categories;
}
// Example output:
// {
// "build-tools": ["docker-compose-agent", "dockerignore-agent", ...],
// "code-quality": ["editorconfig-agent", "eslint-agent", "prettier-agent"],
// "version-control": ["commitlint-agent", "gitattributes-agent", ...],
// "workspace": ["claude-md-agent", "env-example-agent", "nodemon-agent", ...]
// }
async function discoverAuditTargets(repoPath: string): Promise<AuditManifest> {
const repoType = detectRepoType(repoPath);
const agents: AgentInstruction[] = [];
// Get ALL config agents from categories
const allAgents: string[] = [];
for (const category of Object.keys(CONFIG_AGENT_CATEGORIES)) {
allAgents.push(...CONFIG_AGENT_CATEGORIES[category]);
}
console.log(`Found ${allAgents.length} config agents to spawn`);
// Each agent audits its specific domain
for (const agentName of allAgents) {
agents.push({
agent: agentName,
priority: getAgentPriority(agentName),
taskDescription: `Audit ${agentName.replace("-agent", "")} config`,
taskPrompt: `Audit ${repoPath} for ${agentName.replace("-agent", "")} compliance. Report violations and recommendations.`,
});
}
return {
mode: "audit",
targetPath: repoPath,
repoType: repoType,
agents: agents,
totalAgents: allAgents.length,
excludedPaths: getExcludedPaths(repoType),
};
}
function getAgentPriority(agentName: string): string {
const criticalAgents = [
"turbo-config-agent",
"pnpm-workspace-agent",
"root-package-json-agent",
];
const highAgents = [
"typescript-agent",
"eslint-agent",
"prettier-agent",
"husky-agent",
"commitlint-agent",
"github-workflow-agent",
];
const lowAgents = [
"readme-agent",
"nodemon-agent",
"dockerignore-agent",
"postcss-agent",
];
if (criticalAgents.includes(agentName)) return "critical";
if (highAgents.includes(agentName)) return "high";
if (lowAgents.includes(agentName)) return "low";
return "medium";
}
function getExcludedPaths(repoType: string): string[] {
if (repoType === "library") {
return [
"components/",
"config/",
"packages/",
"node_modules/",
"dist/",
"build/",
];
} else {
return [
"apps/",
"packages/",
"services/",
"node_modules/",
"dist/",
"build/",
".turbo/",
".next/",
];
}
}
Important: The discovery agent MUST always run find .claude/agents -type f -name "*.md" BEFORE generating the manifest to ensure it discovers what agents are available in the current directory structure.
The monorepo-setup-agent returns this exact format for /ms to execute:
## Audit Manifest for /mnt/f/code/resume-builder
**Repository Type:** consumer
**Total Audit Agents:** 15
### Critical Priority (3 agents)
1. Task("turbo-config-agent", "Audit /mnt/f/code/resume-builder/turbo.json for MetaSaver standards")
2. Task("root-package-json-agent", "Audit /mnt/f/code/resume-builder/package.json for MetaSaver standards")
3. Task("pnpm-workspace-agent", "Audit /mnt/f/code/resume-builder/pnpm-workspace.yaml for MetaSaver standards")
### High Priority (5 agents)
4. Task("typescript-agent", "Audit /mnt/f/code/resume-builder/tsconfig.json for MetaSaver standards")
5. Task("eslint-agent", "Audit /mnt/f/code/resume-builder/eslint.config.js for MetaSaver standards")
6. Task("prettier-agent", "Audit /mnt/f/code/resume-builder/.prettierrc.json for MetaSaver standards")
7. Task("commitlint-agent", "Audit /mnt/f/code/resume-builder/commitlint.config.js for MetaSaver standards")
8. Task("husky-agent", "Audit /mnt/f/code/resume-builder/.husky for MetaSaver standards")
### Medium Priority (5 agents)
9. Task("editorconfig-agent", "Audit /mnt/f/code/resume-builder/.editorconfig for MetaSaver standards")
10. Task("nvmrc-agent", "Audit /mnt/f/code/resume-builder/.nvmrc for MetaSaver standards")
11. Task("vscode-agent", "Audit /mnt/f/code/resume-builder/.vscode for MetaSaver standards")
12. Task("env-example-agent", "Audit /mnt/f/code/resume-builder/.env.example for MetaSaver standards")
13. Task("scripts-agent", "Audit /mnt/f/code/resume-builder/scripts for MetaSaver standards")
### Low Priority (2 agents)
14. Task("dockerignore-agent", "Audit /mnt/f/code/resume-builder/.dockerignore for MetaSaver standards")
15. Task("readme-agent", "Audit /mnt/f/code/resume-builder/README.md for MetaSaver standards")
**Excluded Paths:** apps/, packages/, services/, node_modules/, dist/, build/, .turbo/, .next/
**Spawn Strategy:** All agents can run in PARALLEL (no dependencies between root config audits)
/ms "Composite audit of resume-builder monorepo"
# /ms spawns monorepo-setup-agent in discovery mode
Task("monorepo-setup-agent", "
MODE: audit-discovery
TARGET: /mnt/f/code/resume-builder
Scan the repository root and generate an audit manifest.
Use the monorepo-audit skill to map files to agents.
Return the exact Task calls needed for Phase 2.
Only discover what needs auditing - do not execute audits.
")
# /ms reads manifest from Phase 1 and spawns all agents in ONE message
Task("turbo-config-agent", "Audit /mnt/f/code/resume-builder/turbo.json...")
Task("root-package-json-agent", "Audit /mnt/f/code/resume-builder/package.json...")
Task("pnpm-workspace-agent", "Audit /mnt/f/code/resume-builder/pnpm-workspace.yaml...")
# ... all 15 agents in parallel
# /ms spawns monorepo-setup-agent with all results
Task("monorepo-setup-agent", "
MODE: audit-consolidate
TARGET: /mnt/f/code/resume-builder
Consolidate these audit results:
turbo-config-agent: [results]
root-package-json-agent: [results]
...
Provide unified audit report with:
- Total violations by priority
- Pass/fail status per config
- Top recommendations
")
/ms "Composite audit of all 4 MetaSaver monorepos"
# Phase 1: Spawn 4 monorepo-setup-agents for discovery
Task("monorepo-setup-agent", "MODE: audit-discovery, TARGET: /mnt/f/code/resume-builder")
Task("monorepo-setup-agent", "MODE: audit-discovery, TARGET: /mnt/f/code/multi-mono")
Task("monorepo-setup-agent", "MODE: audit-discovery, TARGET: /mnt/f/code/rugby-crm")
Task("monorepo-setup-agent", "MODE: audit-discovery, TARGET: /mnt/f/code/metasaver-com")
# Each returns manifest of ~15 agents
# Total agents needed: ~60 (but run max 10 at a time)
# Phase 2: Execute in batches of 10
# Phase 3: Consolidate all results
This skill integrates with:
/skill audit-workflow - Uses bi-directional comparison/skill remediation-options - Offers conform/update/ignore for violationsscope parameter. If not provided, use /skill scope-checkThe monorepo-audit skill is the orchestration layer that coordinates all other audit skills.