Skip to content
Conduit

skill

skill-customization

Portable discovery, binding, provenance, and reconciliation for skill customizations.

samitoyang/skill-customizationcommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/samitoyang/skill-customization itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 17, 2026

🛠️ Skill Customization

Skill Customization provides a reliable way to adapt installed agent skills while keeping custom workflows aligned with improvements from their original sources. It tracks where each skill came from, records intentional changes, and prevents future updates from silently overwriting or breaking customized behavior.

⚠️ Core Problems

📁 In-Place Edits Disappear

Update-managed source skills can overwrite direct tweaks during their next refresh; read-only sources cannot be edited in place.

  • The fix: Use a semantic overlay.
  • Mechanism: Keep the source live and read-only. Layer a documented behavior change beside it.
managed-skills/
└── handoff/
    └── SKILL.md                 # Live, read-only upstream source

customizations/
└── handoff-local-archive/
    ├── SKILL.md                 # Thin dispatcher
    ├── CUSTOMIZATION.md         # Semantic delta from source
    └── customization.json       # Descriptor: portable identity + review

📉 Full Copies Drift

Full-copy forks become difficult to audit as they drift, lose provenance, or collide with the source skill's name or trigger.

  • The fix: Capture explicit provenance.
  • Mechanism: Store a reviewed source snapshot directory alongside an explicit diff file.
managed-skills/
└── incident-response/
    └── SKILL.md                         # Source selected for review

customizations/
└── incident-response-standalone/
    ├── SKILL.md                         # Thin dispatcher
    ├── CUSTOMIZATION.md                 # Complete independent workflow
    ├── customization.json               # Descriptor: portable identity + provenance
    └── provenance/
        ├── source/                      # Reviewed source snapshot directory
        └── source.diff                  # Snapshot → owned payload

🛑 Multi-Agent Collisions

One logical skill may be active through several agent paths or skill managers at once, making the selected copy uncertain.

  • The fix: Use evidence-based discovery and binding.
  • Mechanism: Let the portable descriptor state the expected source identity and fingerprint, then keep the selected concrete path in a context-scoped local binding.
project/.agents/skills/review/                  # Shared candidate
project/.claude/skills/review/                  # Host-specific candidate
~/.codex/skills/review/                         # Personal candidate
~/.skills-manager/.../review/                   # Manager candidate

customizations/review-with-policy/
└── customization.json                       # Descriptor: portable source requirements

$XDG_STATE_HOME/skill-customization/
└── bindings.json                            # Confirmed path for this context

🎛️ Customization Models

Customization models describe the runtime relationship between a skill and its source.

ModelSource relationshipRuntime behavior
skill-overlayLive ordinary skill, verified overlay, or verified forkSource workflow composed with a semantic delta before execution; source updates remain available
skill-forkReviewed ordinary skill, verified overlay, or verified forkComplete independent workflow; no live runtime source required
Companion skillOrdinary dependencySeparate workflow that calls or consumes the source; no customization binding

Activation Modes

Activation is separate from source relationship: a customization either coexists with the source or intentionally replaces it.

ModeNamingBehavior
coexistUses a distinct nameSafe default; keeps the source available
replaceUses the source nameRequires deterministic customization-first precedence and separate confirmation

📥 Installation

Install both customization skills with skills:

npx skills@latest add samitoyang/skill-customization

Or clone the repository, then symlink the complete skill directories into a skill root supported by the host:

git clone https://github.com/samitoyang/skill-customization.git
skill-customization/
└── skills/
    ├── skill-fork/
    └── skill-overlay/

[!NOTE] A symlinked checkout can reuse its local helper after approval. If the skills are just copied to a skill root, an installed helper or the approved registry fallback is still needed.

Optionally pre-install the helper:

npm install --global skill-customization@latest

The helper is a dependency-free Node.js package for deterministic checks and requires Node.js 22.14 or newer. Compatibility is checked before use. Approval when selecting an on-demand helper covers subsequent helper commands while its recorded identity and state remain unchanged.

🌐 Ecosystem Compatibility

Hosts and roots

The checkpointed agent registry covers Codex, Claude Code, GitHub Copilot, Cursor, Gemini CLI, OpenCode, OpenHands, Windsurf, and other hosts through their declared project and personal roots.

Root typeRepresentative paths
Shared project.agents/skills
Host-specific project.claude/skills, .github/skills, .cursor/skills, .windsurf/skills
Personal~/.agents/skills, ~/.claude/skills, $CODEX_HOME/skills
Plugin-backedClaude ~/.claude/plugins/cache/.../skills, Codex $CODEX_HOME/plugins/cache/.../skills, Gemini ${GEMINI_CLI_HOME:-~}/.gemini/extensions/.../skills, Cursor ~/.cursor/plugins/local/.../skills
ConfiguredClaude additionalDirectories, COPILOT_SKILLS_DIRS, manager-owned roots, explicit custom paths

Plugin discovery is manifest-aware and bounded to documented host paths. It includes Claude synced skills under ~/.claude/skills/synced only when CLAUDE_CODE_SYNC_SKILLS=1; cache versions are provenance evidence rather than source identity, and plugin-only identities remain local.

Skill managers

Discovery understands metadata from:

[!NOTE] Compatibility means declared roots and metadata can be discovered. It does not imply that every host loads or executes skills identically.

💬 Usage

Explicit Skill Invocations

Invoke a skill without a trailing prompt to start interactive creation:

/skill-overlay
/skill-fork

Or include an initial request:

/skill-overlay customize handoff so every result is archived locally
/skill-fork make incident-response independent of its original checkout

Explicit invocation and automatic model selection enter the same creation process.

Natural Language Prompts

  • “Customize handoff so every result is archived locally, while keeping upstream updates.”
  • “Make incident-response independent of its original checkout.”
  • “Create a separate review skill that still calls the original.”
  • “Run my existing customized handoff workflow.”

After Creation

  • Destination: New workspace customizations use .agents/skills/<name>/ by default. During creation, a compatible host-specific project root or personal skill root may be selected instead.

  • Relocation: Move the entire customization directory to another supported skill root, then reload the agent host. In a different workspace, an overlay requires source confirmation before running; a fork continues independently.

📋 Creation Workflow

The creation phase can begin with a bare invocation, a known source and customization idea, or existing artifacts. Helper-assisted discovery inventories available evidence and asks only for unresolved decisions. Existing artifacts count as prior intake, and any overlay/fork mismatch is explained before changes are made.

Before artifacts are written or a binding is created, one brief confirms the complete customization boundary:

InputConfirms
Skill name, repository, or pathOne concrete source and its evidence
Behavior and completion criteriaDesired behavior, preserved behavior, non-goals, and observable success
Updates or independenceOverlay or fork
Name and activationCoexist or explicit replacement
Workspace contextDestination, binding scope, and directory boundaries
License and provenanceReview and redistribution evidence
Helper accessWhether to use an installed helper or approve an on-demand local or registry helper

[!IMPORTANT] Same-name replacement requires separate confirmation because it changes which skill activates.

🧭 Runtime Workflow

After creation, every invocation follows a checked runtime path. The graph distinguishes portable files, local state, installed tooling, and runtime instructions.

flowchart LR
    subgraph P["Preflight"]
        direction TB
        B["Preflight helper<br/>(skill-customization package)"]
        B -->|"reads"| G["Descriptor file<br/>(customization.json)<br/>source: ordinary skill / overlay / fork"]
        B -->|"uses when required"| H["Local binding state<br/>(bindings.json)"]
    end
    A["Dispatcher file<br/>(SKILL.md)"] -->|"runs"| B
    A -->|"helper unavailable / incompatible"| F["Maintenance skills<br/>(skill-overlay / skill-fork)"]
    B -->|"ready / ready-with-advisory"| C["Checked execution plan<br/>(workflow + ordered deltas)"]
    C --> D["Load the complete plan<br/>before any workflow action"]
    D --> E["Compose one effective workflow<br/>deltas refine inner to outer"]
    E --> I["Execute the effective workflow"]
    B -->|"maintenance-required"| F
    F -->|"accepted update"| B
Graph componentArtifactResponsibility
Dispatcher fileSKILL.mdSelects a compatible helper and starts preflight
Descriptor filecustomization.jsonStores portable identity, source requirements, and reviewed fingerprints
Local binding statebindings.jsonStores the concrete source path for one context when required
Preflight helperskill-customization packageValidates local evidence and returns checked runtime instructions or a maintenance stop
Runtime instructionsSource SKILL.md and customization CUSTOMIZATION.md filesLoad the full checked plan, compose the base or fork workflow with inner-to-outer deltas before any action, then execute the effective workflow
Maintenance skillsskill-overlay or skill-forkHandle creation, drift, repair, incompatible setup, and explicit maintenance

A ready customization executes its checked runtime instructions directly without invoking a maintenance skill.

🛡️ Security and Provenance

BoundaryGuarantee
Resolved sourceRead-only input with a symlink-free fingerprinted target tree that excludes clone-local version-control metadata; top-level installation aliases resolve to their canonical target
Portable descriptorStable identity, own/source licenses, relative artifacts, reviewed fingerprints, and activation; runtime selectors stay inside the reviewed owned payload and no concrete source paths are stored
Local stateContext-scoped bindings and compatibility decisions remain private and are written atomically; maintenance locks are canonically contained and portable descriptor/diff modes are preserved
Helper executionCheckout metadata identifies but does not authenticate a local candidate; approval when selecting an on-demand helper covers subsequent commands only while its recorded identity and state remain unchanged
OverlayLive context binding, reviewed owned payload, and full-source or customization-source effective fingerprint
ForkRuntime leaf with complete workflow and a relative, symlink-free snapshot directory and diff beneath reserved provenance/

Published descriptors keep stable identity and provenance portable. Concrete source paths, credentials, bindings, and compatibility decisions remain local. The supporting Node.js package has no runtime dependencies.

📚 References

  • For direct helper use, read the CLI reference; skill-customization --help is authoritative for commands and options.
  • For Node.js/npm prerequisites, lifecycle helper negotiation, canonical rendering, local-code execution approval, registry download/cache permission, package selection, and compatibility guarantees, read Helper contract 2. Helper contract 1 remains supported for existing dispatchers.
  • For publishable identity and activation fields, read Descriptor v1.
  • For roots, evidence order, source selection, and local state, read Discovery and bindings.
  • For deterministic discovery tests, ambient integration, artifact verification, performance scenarios, and snapshot freshness, read Testing and performance.
  • For overlay drift and fork-payload verification, read Reconciliation.
  • For embedding the engine in another Node.js tool, read the Library reference.
  • For the runtime decision, read ADR 0001.
  • For bounded plugin provenance discovery, read ADR 0002.
  • For vulnerability reporting and release history, see Security and the Changelog.
↑↓ navigate openesc close