Skip to content
Back to skills

Config Set

ASecurity

Use when changing an engine-wide config value — currently `diff.tool`, the command `/skill-engine:review` prints for inspecting a proposed-vs-live diff.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
developmentshellgit

Works with

  • claude code

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add nick-railsback/skill-engine --skill config-set --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Config Set?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Config Set
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nick-railsback-config-set/badge)](https://www.skillsdirectory.com/skills/nick-railsback-config-set)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.