From vnext-ai-toolkit
Use when the user wants to create a vNext Mapping (sys-mappings) component — a reusable C# helper/code class (e.g. a crypto or JSON helper) that other components reference via scripts.helpers or encoding REF. Fetches mapping-definition.schema.json first, scaffolds the Mappings/{key}.json envelope + the .csx static class, and explains wiring it into consumers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vnext-ai-toolkit:component-mappingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A **Mapping** is a reusable C# class shared across components — a helper (`RsaCryptoHelper`,
sys-mappings)A Mapping is a reusable C# class shared across components — a helper (RsaCryptoHelper,
JsonHelper) or a whole reusable mapping (InitialTransMapping). Other components load it via a
scripts.helpers reference, or reference a whole mapping with encoding: "REF". This avoids
duplicating .csx logic across workflows/tasks/functions.
See references/concepts/mappings-and-scripts.md for the concept and references/concepts/csx-contracts.md
for the C# side.
vnext.config.json present).Before producing JSON, read
mapping-definition.schema.jsonfor the workspace's pinned schema (node_modules/@burgan-tech/vnext-schema/schemas/mapping-definition.schema.json; ifnode_modulesis absent,npm installor fall back toreferences/concepts/mappings-and-scripts.md). Drive the envelope from the schema, never from memory.
vnext.config.jsonCapture paths.componentsRoot, paths.mappings (e.g. Mappings), domain. Target write path:
{componentsRoot}/{paths.mappings}/{domain-subfolder}/{key}.json with the .csx under its src/.
key (kebab-case, e.g. rsa-crypto) and the C# class name (name, PascalCase, e.g. RsaCryptoHelper).public static class with utility methods) or a reusable mapping
(implements a mapping interface — see csx-contracts.md).System.Security.Cryptography, Newtonsoft.Json) — consumers
must list these in allowedAssemblies..csxA helper is a plain static class (no IMapping):
using System.Security.Cryptography;
namespace Acme.Helpers;
public static class RsaCryptoHelper
{
public static string Encrypt(string plain, string publicKeyBase64) { /* ... */ }
}
PascalCase class matching name; one class per file; kebab-case filename. Never hand-base64 code —
the VS Code extension encodes the .csx into code on save.
{
"key": "{key}", "version": "1.0.0", "domain": "{domain}",
"flow": "sys-mappings", "flowVersion": "1.0.0", "tags": ["{tag}"],
"attributes": {
"name": "{ClassName}",
"location": "./src/{ClassName}.csx",
"code": "",
"encoding": "NAT" // sys-mappings supports B64 or NAT only — NEVER REF (it is the ref target)
}
}
scripts block to the consumer's mapping (or workflow attributes.scripts):
"scripts": {
"helpers": [ { "key": "{key}", "version": "1.0.0", "domain": "{domain}", "flow": "sys-mappings" } ],
"allowedAssemblies": [ "System.Security.Cryptography" ]
}
The helper's static class is then callable by name in the consumer's .csx.encoding: "REF" and code to the
mappingRef { key, version, domain, flow: "sys-mappings" }.npm run validate. Hand failures to validate-and-fix.
sys-mappings encoding is B64 or NAT only — it cannot be REF (no self-reference).exports.mappings (vnext.config.json) only if shared cross-domain.allowedAssemblies and helper runtime linking is documented on the
vNext docs portal — fetch it if a consumer's script fails to resolve a helper or assembly.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub burgan-tech/vnext-ai-toolkit --plugin vnext-ai-toolkit