Awesome-omni-skill monorepo-package-workflow
Guides creation of new MCP tool packages in @j0kz/mcp-agents monorepo following modular architecture with constants/, helpers/, utils/ extraction, tools.json registration, and version.json synchron...
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/monorepo-package-workflow" ~/.claude/skills/diegosouzapw-awesome-omni-skill-monorepo-package-workflow && rm -rf "$T"
manifest:
skills/tools/monorepo-package-workflow/SKILL.mdsource content
Monorepo Package Creation for @j0kz/mcp-agents
Create new MCP tool packages following established patterns from the 9 existing tools.
Prerequisites Checklist
- Tool purpose clearly defined and unique
- No duplicate functionality in existing tools (check tools.json)
- Tool fits one category: analysis, generation, refactoring, design, orchestration
- Name follows pattern:
@j0kz/{tool-name}-mcp
Quick Start: Create New Package
# 1. Create structure cd packages mkdir -p your-tool/src/{constants,helpers,utils} mkdir your-tool/tests # 2. Initialize package.json (copy template below) # 3. Create thin mcp-server.ts (<150 LOC) # 4. Implement main-logic.ts with @j0kz/shared # 5. Register in tools.json # 6. Sync version: npm run version:sync # 7. Build and test
Package Structure (Modular Architecture)
your-tool/ ├── src/ │ ├── mcp-server.ts # Thin MCP layer (<150 LOC) │ ├── main-logic.ts # Core functionality │ ├── types.ts # TypeScript interfaces │ ├── constants/ # Thresholds, patterns │ ├── helpers/ # Complex logic (30+ LOC) │ └── utils/ # Cross-cutting utilities ├── tests/ # Vitest tests ├── package.json # With "type": "module" └── tsconfig.json
Target: All files <300 LOC (extract when exceeded)
For detailed structure guide:
cat .claude/skills/monorepo-package-workflow/references/package-structure-guide.md
Critical package.json Template
{ "name": "@j0kz/your-tool-mcp", "version": "1.1.0", // From version.json "type": "module", // CRITICAL: ES modules "main": "./dist/index.js", "bin": { "your-tool-mcp": "dist/mcp-server.js" }, "scripts": { "build": "tsc", "test": "vitest", "test:coverage": "vitest run --coverage" }, "dependencies": { "@j0kz/shared": "^1.1.0", // Must match version "@modelcontextprotocol/sdk": "^1.19.1" } }
MCP Server Pattern (Thin Orchestration)
// mcp-server.ts - ONLY protocol handling import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { handleYourTool } from './main-logic.js'; // .js extension! // Setup server (thin, delegates all logic) // Target: <150 LOC
For complete MCP patterns:
cat .claude/skills/monorepo-package-workflow/references/mcp-server-patterns.md
Using @j0kz/shared Utilities
import { FileSystemManager, // File ops with caching AnalysisCache, // LRU cache (30min TTL) PerformanceMonitor, // Performance tracking MCPPipeline // Tool chaining } from '@j0kz/shared';
For shared utilities guide:
cat .claude/skills/monorepo-package-workflow/references/shared-utilities-guide.md
Registration & Version Sync
1. Register in tools.json
{ "id": "your-tool", "name": "Your Tool Name", "package": "@j0kz/your-tool-mcp", "category": "analysis", "features": ["Feature 1", "Feature 2", "Feature 3"] }
2. Sync Version (CRITICAL!)
# Never manually edit version in package.json! npm run version:sync # Updates all packages npm run version:check-shared # Verify consistency
Testing with Vitest
// tests/main-logic.test.ts import { describe, it, expect } from 'vitest'; import { handleYourTool } from '../src/main-logic.js'; describe('YourTool', () => { it('should handle valid input', async () => { const result = await handleYourTool({ filePath: 'test.ts' }); expect(result.success).toBe(true); }); });
Target: >70% coverage
For testing setup guide:
cat .claude/skills/monorepo-package-workflow/references/testing-setup-guide.md
Import Pattern (ES Modules)
// ✅ CORRECT - Always use .js import { foo } from './bar.js'; import { helper } from './helpers/my-helper.js'; // ❌ WRONG - Will fail import { foo } from './bar'; import { foo } from './bar.ts';
Build & Validation
# Build TypeScript npm run build -w packages/your-tool # Verify structure ls dist/ # Should have .js files # Run tests npm test -w packages/your-tool # Check file sizes find src -name "*.ts" -exec wc -l {} \; | sort -n # All should be <300 LOC
Complete Registration Checklist
For detailed checklist with all steps:
cat .claude/skills/monorepo-package-workflow/references/registration-checklist.md
Quick validation:
- Package name:
@j0kz/{tool}-mcp - Registered in tools.json
- Version synced from version.json
- mcp-server.ts <150 LOC
- All files <300 LOC
- Tests >70% coverage
- Imports use .js extension
- "type": "module" in package.json
Common Mistakes to Avoid
| Mistake | Fix |
|---|---|
| Manually set version | Use |
| Forget tools.json | Register before publishing |
| Fat mcp-server.ts | Keep <150 LOC, delegate to main-logic |
| Missing .js extension | Add to all relative imports |
| Files >300 LOC | Extract to constants/helpers/utils |
Reference Examples
Study these well-structured packages:
- security-scanner - Best modular refactoring (395→209 LOC)
- smart-reviewer - AST analysis with fixers/
- orchestrator-mcp - MCPPipeline usage
- test-generator - Code generation patterns
Publishing Workflow
# 1. Build all npm run build # 2. Publish npm run publish-all # 3. Git operations git add . && git commit -m "feat: add your-tool" git tag v1.1.0 && git push --tags
Related Skills
- project-standardization: Version management and automation
- modular-refactoring-pattern: Reducing file complexity
- code-quality-pipeline: Ensuring code quality
Quick Commands
npm run version:sync # Sync versions npm run build # Build all packages npm test # Run tests npm run publish-all # Publish to npm
For modular refactoring:
.claude/skills/modular-refactoring-pattern/SKILL.md
For project standards: .claude/skills/project-standardization/SKILL.md