Skip to content
Luciai

Documentation

Lucicoder

Lucicoder is the coding agent in Luciai Studio. It plans, edits files, runs commands, reads your errors and keeps going until the job is done — as far on its own as you allow.

Approval modes

The approval mode decides how far Lucicoder goes before it asks you. Switch at any moment — with /mode, for example /mode ask.

  • Chat answers and explains. It touches nothing.
  • Ask asks before every tool it wants to use.
  • Agent reads and searches freely, and asks before it edits a file or runs a command.
  • Auto works on its own — still inside the command denylist, still with a checkpoint for every turn.

Preview is a fifth way to work: edits are staged for your review instead of written. It is described below.

Diffs, checkpoints and undo

Every edit Lucicoder proposes is shown as a red-and-green diff before it is written.

Every turn is a checkpoint. One click reverts everything that turn changed, across every file it touched — so trying something is cheap.

For anything older, Local History keeps every save and every Lucicoder edit as a version outside the repository: a timeline, side-by-side diffs, labels and one-click restore. Open it from the command palette.

Preview mode

In Preview mode, Lucicoder's edits are staged instead of written. You review the multi-file diff — and can edit it — then apply or discard each file. A file that changed on disk after its edit was staged is flagged, so nothing is overwritten by surprise.

Two refactoring commands use the same review:

  • Rename Symbol with Preview (Ctrl+F2) stages the language server's rename.
  • Refactor with Lucicoder (preview) (Ctrl+Shift+R) drafts the request from your selection.

Commands and background tasks

A command Lucicoder runs is stopped after 120 seconds. Dev servers and watchers run as background tasks instead — Lucicoder starts, reads and stops them with run_background, task_output and task_stop — and /tasks lists them.

A hard denylist blocks dangerous commands in every mode, whatever the prompt says. Commands you trust can go on the project's “always allow” list.

Slash commands

Type / in the Lucicoder panel to see them all. The ones you will use most:

  • /init — Studies the project and writes LUCIAI.md at its root: instructions Lucicoder reads on every turn.
  • /model <name> — Switches the model.
  • /mode <mode> — Sets the approval mode: chat, ask, agent, auto or preview.
  • /mcp — Lists your MCP servers and their tools. /mcp reload restarts them.
  • /tasks — Lists the background tasks Lucicoder started, such as dev servers and watchers.
  • /skills — Skills, commands and plugins: list, create and import them.
  • /native auto|on|off — Native function calling, or the universal XML grammar for models that need it.
  • /help — Shows every command.

Your own skills and Markdown commands appear in the same menu, as /their-name.

@file mentions

Mention a file with @ — for example @src/billing/total.ts — to put it in front of Lucicoder together with your message.

Sessions and context

Sessions are per project and per window. Each keeps its own agent memory, survives a restart of the IDE and resumes with its context.

Long sessions compress on their own, so they keep fitting the model's context window. Live language-server diagnostics are attached to every turn, so “fix the errors” just works.

For bigger jobs, Lucicoder keeps a live plan checklist, and can hand a focused part of the work to a subagent (spawn_agent) that has its own context.

Skills, commands and plugins

Lucicoder uses the layout Claude Code uses, so skill repositories, plugins and marketplaces made for it install unchanged — and what you write here works there.

Skills

A skill is a folder with a SKILL.md file — YAML front matter with a name and a description, then the instructions — and any files it needs. Lucicoder sees a one-line catalog of your skills and loads a skill's full text only when a task needs it; /name runs one directly.

Put project skills in .luciai/skills/<name>/SKILL.md inside the project, or in the same folder under your home directory for every project. Skills in .claude/skills are found too.

.luciai/skills/release-notes/SKILL.md
---
name: release-notes
description: Write release notes from the changes since the last tag
---
Read the Git history since the last tag. Group the changes into
Added, Changed and Fixed, in plain sentences, one line each.

Commands

A command is a Markdown file in .luciai/commands/ (or .claude/commands/). Its name becomes a slash command, and $ARGUMENTS is replaced by what you type after it.

.luciai/commands/fix-bug.md
---
description: Find and fix a bug from its description
argument-hint: <what goes wrong>
---
Find the cause of this bug, fix it and add a test that fails without the fix:
$ARGUMENTS

Plugins

A plugin bundles skills, commands and MCP servers in Claude Code's plugin layout. Manage skills, commands and plugins with /skills.

MCP servers

Model Context Protocol servers give Lucicoder more tools. Declare them in <project>/.luciai/mcp.json, in the format Claude Code and Claude Desktop use — you can copy an existing configuration as it is.

.luciai/mcp.json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "D:/some/dir"],
      "env": {}
    },
    "remote-example": {
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}
  • A local server has a command, with optional args and env; it runs on your machine and talks over stdio.
  • A remote server has a url instead, with optional headers, and is reached over HTTP.
  • "disabled": true keeps a server in the file without starting it.

/mcp lists the servers and their tools, and /mcp reload restarts them after you edit the file. Lucicoder sees each tool as mcp__<server>__<tool>, and calls to them follow the same approval rules as commands.

Tokens in mcp.json

mcp.json is a file in your project. If a server needs a token in its headers or env, keep the file out of version control.

Still stuck? Ask on the support page or write to adeel.ahm1985@gmail.com.