changing it
changing it
The core has no extension API: the loop is a file, and the file is
the extension point. What you add for yourself lives outside it, in
~/.micro-cc, where an update cannot reach it.
the life of a self-edit
Edit any .py file in the package, by hand or by asking the
model in plain words. A two-second poll compares a manifest of file modification times and
sizes, and a change marks a reload as pending.
The restart only fires when the app is idle: no turn in flight, no /gui
session owning the conversation, no live subagent. Otherwise the poll keeps retrying until
the first tick where every gate is clear. Then micro·cc stashes your unsent prompt, flushes
messages.jsonl and re-executes in place with
os.execv. The process id stays the same and the conversation is
rebuilt from disk.
Every launch goes through a small supervisor. If the edited tree fails to boot, it reinstalls the published release over it and retries, at most three consecutive times. A boot that succeeds clears the count, and a crash after a good boot never triggers a reinstall.
$ /reload re-execs this install: applies your edit now $ /update installs a new version: replaces core edits, keeps your layer
source: src/micro_cc/utils/self_reload_.py · src/micro_cc/self_heal_.py · design/architecture.toml
adding to it without editing the core
Editing the package is the strong way to change micro·cc and the fragile one: the next
/update overwrites the file. So the things you are most likely
to want have a second home, outside the package, where the installer never looks.
Built-in defaults live in the package and are replaced on every release. What you add lives
in ~/.micro-cc/, which pip never installs into. The two are merged
by name at startup and yours wins — which is a trade, not a free lunch: a default you
overrode stops improving for you, because the version you wrote is the one that runs. That is
why the defaults are never copied into your directory. A copy would freeze you on today's
version for no reason; a file you wrote on purpose is a choice you made.
Editing the core is the other case, and it is not free. /update
reinstalls the package and overwrites those edits, and so does the supervisor if a bad edit
ever stops the harness booting. The user layer above is the answer for anything that fits it;
for anything that does not, edit the core knowing the next update takes it back.
- commands/<name>.md
- a slash command as a prompt, with
$ARGSsubstituted - commands/<name>.py
- a slash command as code:
async def run(ui, arg) - renderers/*.py
- override how a message type or a tool call is drawn
- panels/*.py
- lines in the header, or above the input
- glyphs.json
- the glyph and label for each message type
- keys.json
- a key mapped to a slash command or an action
- banner.txt
- the wordmark
- statusline.sh
- a script that gets JSON on stdin and prints one line; leave it out and the built-in one runs, and still improves with the package
Your files are handed a small, stable facade — notify,
get_input, set_input,
send_prompt, project_dir,
model(), request_render() — and
never the app's internals. The facade is
versioned: a file written against a different version is disabled rather than left to
half-work. A file that will not import is skipped and reported; it never stops the harness
booting. Most edits here restart the app into the change at the next idle moment — the
status line and the model catalog need no restart at all.
skills
Skills are packaged instructions the model loads when a task calls for them: a workflow
with its own reference files, not a single prompt. /new-skill
writes one and /skills lists what is installed. They load from
~/.micro-cc/skills/<name>/SKILL.md (every project) or
{project_dir}/skills/<name>/SKILL.md (this project only).
Bundled with the package:
- customizing-micro-cc
- Read before changing micro-cc itself (slash commands, look of the TUI, keys, status line, banner, models, or harness source)
- design
- Create visual design artifacts, in two modes
- docx
- Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction
- github
- Research public GitHub repositories
- graph-orchestration
- Reference for the /graph subagent-orchestration mechanism
- painted-video
- Use when the user wants a painted/brushstroke-style animation synced to music: a real music video (not a typographic lyric video), or any WebGL2 canvas animation keyed to…
- pptx
- Use this skill any time a .pptx presentation is being created from scratch
- system-design-review
- Review downstream system effects before and after code changes: concurrency, asyncio task lifetime, cancellation, persistence, process/deployment boundaries, ownership an…
- xlsx
- Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization
source: src/micro_cc/skills/
MCP servers
/new-mcp registers an external MCP server and
/mcp lists what you have. Their tools join the same list as the
built-ins, so the model does not care where a tool came from.
built 2026-10-04 from microcc@6501e4a · v0.2.103 · llms.txt