Use when changing an engine-wide config value — currently `diff.tool`, the command `/skill-engine:review` prints for inspecting a proposed-vs-live diff.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add nick-railsback/skill-engine --skill config-set --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Config Set?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/nick-railsback-config-set)More formats (shields.io, HTML) on the badges page.
---
name: config-set
description: Use when changing an engine-wide config value — currently `diff.tool`, the command `/skill-engine:review` prints for inspecting a proposed-vs-live diff.
---
# Config set
Persist an engine-wide configuration value. The single key the engine reads today is `diff.tool` — the command `/skill-engine:review` prints when surfacing how to inspect a proposed-vs-live diff. The default value is `git diff --no-index --color`; users with a preferred diff tool override it once and the choice persists across sessions.
## Argument shape
`/skill-engine:config-set <key> "<value>"`
Example invocations:
```
/skill-engine:config-set diff.tool "delta"
/skill-engine:config-set diff.tool "git diff --no-index --color"
/skill-engine:config-set diff.tool "code --diff"
```
The `<value>` is taken verbatim; quote it so shell-splitting does not eat embedded spaces. The engine does not validate that the configured command exists on the user's PATH — that is the user's responsibility. A misconfigured command surfaces as a runtime failure when `/skill-engine:review` prints it and the user runs it.
## Resolution of the config file
The config file lives at `$CLAUDE_PLUGIN_DATA/config.json`. The directory is created if absent.
When `$CLAUDE_PLUGIN_DATA` is unset, surface:
```
$CLAUDE_PLUGIN_DATA is unset. The engine's plugin-data tree is not reachable from this shell. Run the skill from a Claude Code session where the plugin is installed, or set $CLAUDE_PLUGIN_DATA to the engine's plugin-data directory.
```
Exit non-zero. Do not write a config file to a fallback location — the engine's other surfaces (`/skill-engine:review`) key off `$CLAUDE_PLUGIN_DATA`, and writing to a different path would create a config that the readers never find.
## The write
Read the existing `config.json` (or initialize an empty object if absent). Merge the new key/value into it, preserving any other keys present. Write back with `schema_version: 1` if not already set.
Example file shape after `/skill-engine:config-set diff.tool "delta"`:
```json
{
"schema_version": 1,
"diff.tool": "delta"
}
```
The flat key shape (`diff.tool` as one string, not nested) keeps the file shallow and matches the argument the user typed. Future keys (`diff.binary`, `cache.location`, etc.) follow the same shape.
## Exit message
```
Set diff.tool = "<value>" in $CLAUDE_PLUGIN_DATA/config.json.
```
## What this skill does NOT do
- It does not list current values. A separate `config-list` skill would be the symmetric surface; it is out of scope for the v0.3.0 review workflow.
- It does not unset values. Hand-edit `config.json` to remove a key, or set it back to the engine default.
- It does not validate the diff tool against the user's shell environment. The engine treats `<value>` as opaque.
- It does not gate keys against a schema. Any `<key>` accepted by the argument parser is written; readers (`/skill-engine:review`) read the keys they know and ignore the rest.
- It does not enforce read-only-ness on user-configured diff tools. The doctrine constraint "no engine git mutations" binds the engine, not user config (the `git.readonly` lint codifies engine-codebase read-only-ness).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!