Run any Skill in Manus
with one click
with one click
Run any Skill in Manus with one click
Get Started$pwd:
$ git log --oneline --stat
stars:239
forks:2
updated:February 1, 2026 at 17:00
SKILL.md
| name | add-tool-plugin |
| description | Add support for a new AI coding tool |
Guide for adding LNAI support for a new AI coding tool.
Each plugin implements the Plugin interface to transform unified .ai/ config into a tool's native format.
Search the official documentation for the target tool to understand its configuration format:
Update packages/core/src/constants.ts:
TOOL_IDS array (e.g., "newtool")TOOL_OUTPUT_DIRS mapOVERRIDE_DIRS mapCreate packages/core/src/plugins/<tool-name>/:
<tool-name>/
āāā index.ts # Plugin implementation
āāā types.ts # Tool-specific types (optional)
āāā transforms.ts # Transformation functions (optional)
āāā index.test.ts # Tests
In index.ts, implement the Plugin interface:
import type { Plugin } from "../types";
import type { OutputFile, UnifiedState, ValidationResult } from "../../types";
import { applyFileOverrides } from "../../utils/transforms";
export const newToolPlugin: Plugin = {
id: "newtool",
name: "New Tool",
async detect(rootDir: string): Promise<boolean> {
// Check if tool's config exists
return false;
},
async import(rootDir: string): Promise<Partial<UnifiedState> | null> {
// Import existing config to unified format
return null;
},
async export(state: UnifiedState, rootDir: string): Promise<OutputFile[]> {
const files: OutputFile[] = [];
// Add AGENTS.md symlink
if (state.agents) {
files.push({
path: ".newtool/AGENTS.md",
type: "symlink",
target: "../.ai/AGENTS.md",
});
}
// Add rules, settings, MCP servers...
return applyFileOverrides(files, rootDir, "newtool");
},
validate(state: UnifiedState): ValidationResult {
const warnings: ValidationWarningDetail[] = [];
const skipped: SkippedFeatureDetail[] = [];
// Add warnings for unsupported features
return { valid: true, errors: [], warnings, skipped };
},
};
In packages/core/src/plugins/index.ts:
import { newToolPlugin } from "./newtool/index";
pluginRegistry.register(newToolPlugin);
Create index.test.ts with tests for export() and validate().
Create apps/docs/src/content/docs/tools/<tool-name>.md documenting:
pnpm lint && pnpm typecheck && pnpm test
.ai/.<tool>/When implementing, refer to:
packages/core/src/plugins/ as examplespackages/core/src/plugins/types.tspackages/core/src/utils/transforms.ts