Skip to content

GitHub Copilot

LNAI exports unified configuration to GitHub Copilot’s native formats, including repository instructions, path-specific rules, and MCP servers.

.github/
├── copilot-instructions.md # Symlink → ../.ai/AGENTS.md
├── instructions/<name>.instructions.md # Transformed from .ai/rules/<name>.md
├── skills/<name>/ # Symlinks → ../../.ai/skills/<name>/
└── <overrides> # Symlinks from .ai/.copilot/
.vscode/
└── mcp.json # Generated MCP servers
SourceOutputType
.ai/AGENTS.md.github/copilot-instructions.mdSymlink
.ai/rules/<name>.md.github/instructions/<name>.instructions.mdTransformed
.ai/skills/<name>/.github/skills/<name>/Symlink
.ai/settings.json.vscode/mcp.jsonGenerated
.ai/.copilot/<path>.github/<path>Symlink

MCP servers are exported to .vscode/mcp.json with transformations:

// Input (LNAI format)
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@example/db"],
"env": { "DB_URL": "${DB_URL}" }
}
}
}
// Output (Copilot format in .vscode/mcp.json)
{
"inputs": [],
"servers": {
"database": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@example/db"],
"env": { "DB_URL": "${env:DB_URL}" }
}
}
}
LNAICopilot
${VAR}${env:VAR}
Stdio implicittype: "stdio" explicit
// Input (LNAI format)
{
"mcpServers": {
"api": {
"type": "http",
"url": "https://api.example.com/mcp",
"headers": { "Authorization": "Bearer ${TOKEN}" }
}
}
}
// Output (Copilot format)
{
"inputs": [],
"servers": {
"api": {
"url": "https://api.example.com/mcp",
"requestInit": {
"headers": { "Authorization": "Bearer ${env:TOKEN}" }
}
}
}
}
LNAICopilot
type: "http"url field only (no type)
type: "sse"url field only (no type)
headers: {}requestInit: { headers: {} }

Rules are transformed from .md to .instructions.md format with YAML frontmatter:

.ai/rules/typescript.md
paths:
- "\*_/_.ts"
- "\*_/_.tsx"
---
# TypeScript Guidelines
Use strict TypeScript...
.github/instructions/typescript.instructions.md
applyTo: "**/\*.ts,**/\*.tsx"
description: "TypeScript Guidelines"
---
# TypeScript Guidelines
Use strict TypeScript...
LNAI FieldCopilot FieldNotes
pathsapplyToJoined with comma
(first H1)descriptionExtracted from content
(empty paths)(no applyTo)Rule applies globally
FeatureStatusNotes
Permissions⚠️ IgnoredCopilot does not support permissions
Non-MCP overrides⚠️ IgnoredOnly mcpServers is supported in JSON overrides

LNAI will display warnings when unsupported features are configured.

Place Copilot-specific files in .ai/.copilot/ to have them symlinked to .github/:

.ai/.copilot/
└── workflows/
└── custom.yml → .github/workflows/custom.yml

When an override file exists at the same path as a generated file, the override takes priority.