SKILL.md
Update Tool Plugin
Guide for modifying an existing plugin to support new features or fix issues.
Before You Start
Search the official documentation for the target tool to understand:
- Has the configuration format changed?
- Are there new features to support?
- What is the expected output format?
Plugin Locations
All plugins are in packages/core/src/plugins/:
claude-code/- Claude Codecursor/- Cursor IDEcopilot/- GitHub Copilotwindsurf/- Windsurf IDEopencode/- OpenCodegemini/- Gemini CLIcodex/- Codex
Common Update Scenarios
Adding Support for a New Feature
- Search official docs for the feature's config format
- Update
export()method to generate new output files - Remove from
skippedinvalidate()if feature was previously skipped - Add tests for the new export behavior
Fixing Transformation Issues
- Check
transforms.tsfor transformation logic - Update transformation functions as needed
- Verify with tests that output matches expected format
Updating Output Format
- Review tool's official docs for current format requirements
- Update
export()to match new format requirements - Update tests to verify new output structure
Testing Changes
# Run plugin-specific tests
pnpm test packages/core/src/plugins/<tool-name>/
# Run all tests
pnpm test
# Test against real project
lnai sync --dry-run -t <tool-name>
Key Files to Review
| File | Purpose |
|---|---|
index.ts |
Main plugin implementation |
types.ts |
Tool-specific type definitions |
transforms.ts |
Format transformation functions |
../types.ts |
Plugin interface definition |
../../utils/transforms.ts |
Shared transform utilities |
Validation Patterns
// Mark feature as skipped (not supported)
skipped.push({
feature: "permissions",
reason: "Tool uses global permissions only",
});
// Add warning (supported but with caveats)
warnings.push({
message: "MCP servers require manual setup",
path: ["settings", "mcpServers"],
});
After Making Changes
- Run
pnpm typecheckto verify types - Run
pnpm testto verify tests pass - Run
lnai sync --dry-runto preview output - Update documentation if behavior changed
Reference Documentation
- Existing plugins in
packages/core/src/plugins/as examples - The Plugin interface in
packages/core/src/plugins/types.ts - Transform utilities in
packages/core/src/utils/transforms.ts