.agents/skills/implement-command/SKILL.md
Use this skill when adding a missing Redis command, correcting an existing command signature, changing command return types, or adding coverage for command-specific Buffer, callback, pipeline, or transformer behavior.
@ioredis/commands: upstream command metadata consumed by the generator.bin/index.js: generator entry point for lib/utils/RedisCommander.ts.bin/returnTypes.js: command return type map. Most new commands need an entry here.bin/argumentTypes.js: command-specific argument shape overrides when metadata or global mapping is insufficient.bin/typeMaps.js: global Redis argument category to TypeScript type mapping.bin/overrides.js: manual overloads for signatures the generator cannot express cleanly.bin/sortArguments.js: argument reordering for commands whose generated order is wrong.lib/utils/RedisCommander.ts: generated declarations. Regenerate it; do not hand-edit it.lib/Command.ts: command argument and reply transformer registry. Touch only when transformer behavior is needed.test/functional/commands/<command>.ts: runtime command coverage.test/functional/transformer.ts: transformer runtime coverage.test/typing/commands.test-d.ts: public command typing coverage.test/typing/transformers.test-d.ts: transformer typing coverage.Establish command scope.
bin/returnTypes.js.@ioredis/commands. If it is missing there, stop and report that the metadata package must be updated before ioredis can generate typed command support.Inspect current support.
lib/utils/RedisCommander.ts, bin/, test/functional/commands/, and test/typing/ for the command and related aliases.Update generator inputs.
bin/returnTypes.js for return type corrections.hasToken and matchSubcommand in bin/returnTypes.js when they fit.bin/argumentTypes.js only for command-specific argument overrides.bin/typeMaps.js only for broad metadata category fixes that should affect multiple commands.bin/overrides.js only when generated overloads cannot express the supported API cleanly.Regenerate declarations.
node bin/index.js unless package.json later adds an explicit generation script.lib/utils/RedisCommander.ts.Add focused runtime coverage.
test/functional/commands/<lowercase-command>.ts.import Redis from "../../../lib/Redis"; and import { expect } from "chai";.let redis: Redis, beforeEach(() => { redis = new Redis(); }), and afterEach(() => { redis.disconnect(); }).test/functional/commands/, import isRedisVersionLowerThan from ../../helpers/util, and use before(async function () { ... this.skip(); }); use function syntax when calling this.skip().${command}_${caseName}_${Date.now()}.Add typing coverage when useful.
test/typing/commands.test-d.ts when the command has nontrivial overloads, return types, Buffer variants, callback typing, or option-dependent replies.expectType<Promise<...>>(redis.command(...)).expectError only for meaningful invalid signatures.test/typing/transformers.test-d.ts only when transformer APIs are affected.Consider documentation.
docs-sync skill when command support changes public signatures, return mapping, examples, or documented command behavior.Validate.
node bin/index.js after generator input changes.test/helpers/*.ts.npm run build when generated declarations, public TypeScript, or generator output changed.npx tsd --files test/typing/commands.test-d.ts after building.code-change-verification skill before handoff to choose any additional validation.Report: