npx claudepluginhub metasaver/metasaver-marketplace --plugin core-claude-pluginWant just this skill?
Then install: npx claudepluginhub u/[userId]/[slug]
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.
This skill uses the workspace's default tool permissions.
Monorepo Composite Audit Skill
This skill provides the file-to-agent mapping and manifest generation for composite monorepo audits.
Purpose
Enable monorepo-setup-agent to perform composite audits that:
- Scan repository root for all config files
- Map each file to its specialized audit agent
- Generate exact spawn instructions for /ms
- Consolidate results from all audit agents
Repository Detection
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.
Core Concept: Agent Manifest
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-to-Agent Mapping
Root Configuration Files
| 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 |
Excluded Paths (Not Audited by Root Agents)
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 outputs
Library Repos (multi-mono):
components/- Shared componentsconfig/- Shared configs (source of truth)packages/- Published packagesnode_modules/- Dependenciesdist/,build/- Build outputs
Discovery Algorithm
CRITICAL: 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:
- SCAN directories -
Glob(".claude/agents/config/**/*-agent.md") - Extract agent names from file paths
- Group by category (directory name)
- Batch into waves of 10 (Claude Code max)
- Spawn all discovered agents with audit instructions
- Consolidate results
// 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.
Manifest Output Format
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)
Integration with /ms Workflow
Phase 1: Discovery
/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.
")
Phase 2: Execution
# /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
Phase 3: Consolidation
# /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
")
Best Practices
- Scan before spawning - Always discover what exists first
- Parallel execution - Root configs have no dependencies
- Priority ordering - Critical configs first in manifest
- Exclude workspace packages - They have their own configs
- Exact prompts - Manifest provides copy-paste Task calls
- Consistent format - Same manifest structure for all repos
- Library vs Consumer - Different exclusions based on repo type
Example: Multi-Repo Composite Audit
/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
Integration with Existing Skills
This skill integrates with:
/skill audit-workflow- Uses bi-directional comparison/skill remediation-options- Offers conform/update/ignore for violations- Repository type provided via
scopeparameter. If not provided, use/skill scope-check
The monorepo-audit skill is the orchestration layer that coordinates all other audit skills.
Similar Skills
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.