name: update-tool-plugin description: Update an existing LNAI tool plugin
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