Serena config
Agent skill repository that don't fit cleanly into any of my other cheese-related repositories
npx -y skills add paulnsorensen/skillz-that-grillz --skill serena-configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Configure the Serena MCP server — its global defaults and a repo's per-project settings. Use when the user says "configure serena", "set up serena for this repo", "serena project config", "serena global config", "tune serena for this codebase", "edit serena_config.yml", "edit project.yml", "monorepo serena", "serena picked the wrong language", "serena is indexing vendor/node_modules", "make serena read-only here", "serena contexts and modes", "what context for claude-code", "disable serena memory/onboarding", "point serena at my installed language server", "ls_specific_settings", "ls_path", "SERENA_HOME", or "move the .serena folder". Routes per-repo `.serena/project.yml` questions to `references/project-config.md` and machine-wide `~/.serena/serena_config.yml` (settings, contexts, modes, language-server tuning) to `references/global-config.md`. Do NOT use for general "use serena to find / edit X" routing — that is an MCP-routing concern, not configuration.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.0 KB, as published. Nobody here has run it
serena-config
Configure Serena across its two layers: the machine-wide global config and a repo's per-project config.
Serena is configured in layers, each overriding or extending the one above:
- Global —
~/.serena/serena_config.yml. Defaults for every project: language backend, default tools/modes, global ignore rules, language-server tuning. - Project —
<repo>/.serena/project.yml. Per-repo overrides: languages, ignore rules, write access, monorepo workspace folders, added modes. - Contexts & modes — composable toolset/prompt presets, set globally, per-project, or at startup.
- CLI args to
serena start-mcp-server— override or extend everything above.
<certain>Manyproject.ymlkeys extend or overrideserena_config.yml. Put machine-wide defaults in the global file; put only repo-specific aspects in the project file.
Route to the right reference
| The user wants to… | Read |
|---|---|
Tune a single repo: wrong language, monorepo cross-refs, ignore vendor//generated dirs, read-only repo, per-repo LSP path | references/project-config.md |
Create / index / activate a project; understand project.local.yml local overrides | references/project-config.md |
| Set machine-wide defaults: language backend, default tools/modes, global ignore, logging | references/global-config.md |
Pick or change a context (claude-code, ide, desktop-app, …) | references/global-config.md |
Add / override modes (planning, editing, no-memories, query-projects, …) | references/global-config.md |
Point Serena at a self-installed language server (ls_path) or pin an LSP version | references/global-config.md |
Move the data directory (SERENA_HOME) or the per-project .serena folder | references/global-config.md |
When to act (and when not to)
Serena auto-creates both config files with sensible defaults — global on first run, project on first activation of a repo. Most repos need no edits. Touch a config only when one of these is true:
| Symptom | Layer | Fix lives in |
|---|---|---|
| LSP can't resolve symbols across package boundaries (monorepo) | project | additional_workspace_folders |
find_symbol returns wrong-language results or LSP errors at startup | project | languages: |
Symbol search floods from vendor/, node_modules/, dist/, generated code | project | ignored_paths: |
| Repo is review-only and Serena should not write | project | read_only: true |
| Wrong toolset for the harness (e.g. Claude Code duplicating built-ins) | global | --context |
| Want planning-only or memory-free behavior | global | modes |
| Self-installed LSP, or need to pin an LSP/runtime version | either | ls_specific_settings |
If none apply, leave the config alone — the bootstrap is correct.
The one proactive exception — ignored_paths. Unlike the rows above, this is
worth setting before you feel pain in any repo that commits vendored or
generated code (vendor/, checked-in dist/, generated clients, snapshot
fixtures). .gitignore is honored by default, but committed noise pollutes
find_symbol / get_symbols_overview (and can cut the LSP's initial indexing). See
references/project-config.md § "ignored_paths — set this in most non-trivial
repos". ls_path, by contrast, stays an escape hatch — managed-first is the
recommended default (see references/global-config.md).
Editing discipline
- Never hand-create a config from scratch. Let Serena bootstrap it
(
serena project createfor a project, first run for the global file), then edit. The generated files carry inline documentation comments and fields added by newer versions — preserve them. - Verify after editing.
serena print-system-prompt "$(pwd)"renders the resolved config; confirm the project name, language list, active modes, and excluded tools are what you expect. Then probe the LSP with afind_symbolcall against a known symbol — a clean record means the languages parsed; an LSP startup error meanslanguages:orls_specific_settings:is wrong. - On LSP weirdness after a change, delete
.serena/cache/to force a rebuild; some servers also need the MCP server restarted to fully reset.
References
- Project config schema (template): https://github.com/oraios/serena/blob/main/src/serena/resources/project.template.yml
- Global config schema (template): https://github.com/oraios/serena/blob/main/src/serena/resources/serena_config.template.yml
- Language enum (valid
languages:/ls_specific_settingskeys): https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py - Workflow docs: https://oraios.github.io/serena/02-usage/040_workflow.html
- Configuration docs: https://oraios.github.io/serena/02-usage/050_configuration.html