A toolkit for testing and packaging portable AI agents that work across various LLMs, frameworks, deployment targets, and orchestrators.
- 🤖 Multi-LLM Support - Build agents that work with Claude, GPT, and other LLMs
- 🔌 Framework Agnostic - Support for various agent frameworks
- 📦 Portable Packaging - Deploy across different orchestrators and platforms
- ✅ Agent Testing - Comprehensive testing for agent behaviors and interactions
- 🔍 Agent Skills Validation - Audit skills for quality, compatibility, and best practices
- 🩺 Environment Diagnostics - Doctor command checks setup and health
- 📦 VAT Distribution Standard - Package-based distribution for skills, agents, and tools
- 🔨 Build Infrastructure -
vat skills buildcreates distributable skill packages - ⬇️ Smart Installation - Install skills from npm, local directories, or zip files
- 📋 Registry Tracking - Track installed skills for updates and management
- 🎯 Multi-Artifact Support - Distribute skills, agents, pure functions, and runtimes together
Install skills:
vat skills install npm:@vibe-agent-toolkit/vat-example-cat-agents
vat skills install ./path/to/local/package
vat skills list --installedSee Distributing VAT Skills Guide for creating your own distributable packages.
Comprehensive validation for Claude plugins, marketplaces, and configurations:
# Audit user-level Claude plugins
vat audit --user
# Audit specific plugin
vat audit ./my-plugin
# Recursive scan for all resources
vat audit ./resources --recursiveFeatures:
- Auto-detects resource type (plugin, marketplace, skill, registry)
- Schema validation using Zod
- Cache staleness detection using checksums
- Hierarchical output showing relationships
- Cross-platform support
See Audit Documentation for complete reference.
- 🚀 Bun - Fast package manager and runtime
- 📦 Monorepo - Workspace-based package management for agent components
- 🔒 TypeScript - Strict type checking with composite projects
- ✅ Vitest - Fast unit, integration, and system testing
- 🔍 ESLint - Maximum strictness with sonarjs, unicorn, and security plugins
- 📊 Code Coverage - 80% minimum threshold with Codecov integration
- 🎯 vibe-validate - Git-aware validation orchestration
- 🔧 Cross-Platform - Tested on Windows, macOS, and Linux
- 🤖 CI/CD - GitHub Actions with Node 22/24 matrix testing
Install the CLI globally:
npm install -g vibe-agent-toolkitScan and validate markdown resources:
vat resources scan docs/
vat resources validate docs/Audit and import Agent Skills:
vat agent audit my-skill/SKILL.md
vat agent import my-skill/SKILL.mdDiagnose project setup:
vat doctorSee CLI Reference for complete documentation (or run vat --help --verbose).
Prerequisites:
- Bun (latest version)
- Node.js 22 or 24
- Git
Installation:
# Clone the repository
git clone https://github.com/jdutton/vibe-agent-toolkit.git
cd vibe-agent-toolkit
# Install dependencies
bun install
# Build all packages
bun run build# Run full validation (recommended)
bunx vv validate
# Or run test suites individually:
bun run test:unit # Unit tests only
bun run test:watch # Watch mode for development
bun run test:integration # Integration tests
bun run test:system # System/e2e tests
# Lint code
bun run lint
# Type check
bun run typecheck
# Validate all markdown links (dogfooding)
bun run validate-linksThis project uses its own @vibe-agent-toolkit/resources package to validate all markdown links in the repository. This ensures our documentation stays accurate and all links remain valid.
Run link validation:
bun run validate-linksWhat it checks:
- ✅ All local file links (relative paths to other markdown files)
- ✅ All heading anchor links (links to sections within files)
- ℹ️ External URLs are noted but not validated
- 🚫 Test fixtures with intentionally broken links are excluded
Runs automatically in CI/CD as part of the System Tests phase, ensuring broken links are caught before merge.
Optionally validate external URLs with caching:
vat resources validate docs/ --check-external-urlsSee External URL Validation for details.
vibe-agent-toolkit/
├── packages/ # Published packages
│ └── example-utils/ # Example package (replace with your packages)
│ ├── src/ # Source code
│ ├── test/ # Tests
│ ├── package.json
│ └── tsconfig.json
├── tools/ # Development tools (TypeScript)
│ ├── common.ts # Shared utilities
│ ├── duplication-check.ts
│ ├── jscpd-check-new.ts
│ └── jscpd-update-baseline.ts
├── docs/ # Documentation
├── .github/ # CI/CD workflows
│ └── workflows/
│ └── validate.yml # Validation pipeline
├── eslint.config.js # ESLint configuration (strict!)
├── vitest.config.ts # Unit test configuration
├── vitest.integration.config.ts # Integration test config
├── vitest.system.config.ts # System test config
├── tsconfig.json # Root TypeScript config
├── tsconfig.base.json # Base config for packages
├── vibe-validate.config.yaml # Validation orchestration
├── package.json # Root package.json
├── CLAUDE.md # AI assistant guidelines
└── README.md # This file
- Create the package directory:
mkdir -p packages/my-package/src packages/my-package/test- Create
packages/my-package/package.json:
{
"name": "@your-org/my-package",
"version": "0.1.0",
"type": "module",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
}
},
"scripts": {
"build": "tsc",
"test": "vitest run",
"test:watch": "vitest",
"typecheck": "tsc --noEmit",
"clean": "rm -rf dist *.tsbuildinfo"
},
"devDependencies": {
"typescript": "^5.9.3",
"vitest": "^3.2.4"
}
}- Create
packages/my-package/tsconfig.json:
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "dist", "**/*.test.ts"]
}- Add to root
tsconfig.jsonreferences:
{
"references": [
{ "path": "./packages/example-utils" },
{ "path": "./packages/my-package" } // Add this
]
}- Create source and tests:
# Create your source files
touch packages/my-package/src/index.ts
# Create tests
touch packages/my-package/test/index.test.ts- Install and build:
bun install
bun run buildThe toolkit supports three levels of testing:
- Test individual functions/classes
- Fast execution (< 100ms)
- Mock external dependencies
- Run with:
bun test
- Test multiple modules together
- May use real dependencies
- Medium execution (< 5s)
- Run with:
bun test:integration
- End-to-end workflows
- Real external services
- Longer execution (< 30s)
- Run with:
bun test:system
packages/my-package/
├── src/
│ ├── utils.ts
│ └── utils.test.ts # Unit tests (co-located)
└── test/
├── api.test.ts # Unit tests
├── integration/
│ └── workflow.integration.test.ts
└── system/
└── e2e.system.test.ts
The toolkit enforces strict linting rules:
- Zero warnings policy:
--max-warnings=0 - SonarJS: Catches code smells and bugs
- Unicorn: Modern JavaScript patterns
- Security: Prevents common vulnerabilities
- Import organization: Alphabetical with groups
All code (src, tests, tools) is held to the same standards.
Minimum thresholds enforced:
- Statements: 80%
- Branches: 80%
- Functions: 80%
- Lines: 80%
Uses jscpd with a baseline approach:
- Existing duplication is baselined
- New duplication blocks commits
- Update baseline:
bun run duplication-update-baseline
Strict mode enabled with additional checks:
noUncheckedIndexedAccessnoImplicitOverrideexactOptionalPropertyTypes
The toolkit uses vibe-validate for git-aware validation:
# Run all validation checks
bun run validate
# Pre-commit check (fast)
bun run pre-commitValidation runs:
- TypeScript type checking
- ESLint (strict)
- Code duplication check
- Build
- Unit tests
- Integration tests (optional)
- Coverage report
- System tests (optional)
GitHub Actions workflows run on every push/PR:
- Matrix Testing: Node 22/24 × Ubuntu/Windows
- Full Validation: All checks must pass
- Parallel Execution: Faster feedback
- See
.github/workflows/validate.yml
- Codecov Integration: Automatic coverage upload
- 80% Threshold: Project and patch coverage targets
- PR Comments: Coverage diff on pull requests
- See
.github/workflows/coverage.yml
- Sign up at codecov.io with your GitHub account
- Enable your repository
- Add
CODECOV_TOKENto GitHub repository secrets - Coverage reports will be uploaded automatically on push/PR
- Update badge URLs in README.md with your repository details
Husky is configured to run validation before commits:
# Install hooks
bun install # Runs automatically via "prepare" script
# Manually run pre-commit checks
bun run pre-commitWhen you're ready to publish to npm:
- Update package versions
- Build packages:
bun run build - Test thoroughly:
bun run validate - Publish:
npm publish(or create publish scripts)
Replace @vibe-agent-toolkit with your org name:
# Update package names in:
# - packages/*/package.json
# - Import statementsEdit these files:
vitest.config.ts- Coverage thresholdseslint.config.js- Linting rulesvibe-validate.config.yaml- Validation steps
Add scripts to packages/dev-tools/src/ directory:
- Use TypeScript (cross-platform)
- Import from
common.ts - Add to package.json scripts
The project includes comprehensive validation checks:
# Run all validation checks
bun run validate
# Run pre-commit checks
bun run pre-commitThe example package (packages/example-utils/) demonstrates testing patterns and will be replaced with agent-specific packages.
- Getting Started - Detailed setup guide
- Documentation - Full documentation index
- Bun Documentation
- Vitest Documentation
- vibe-validate
- TypeScript
MIT - see LICENSE file
- Fork the repository
- Create a feature branch
- Make your changes
- Run
bun run validateto ensure quality - Submit a pull request
Built with ❤️ using Bun, TypeScript, and modern tooling