widen-return-type · v1 · 2026-07-02 · sha256 5ecbf0ebaf93ee16
widen-return-type v1A
Immutable. This exact content is served forever at /api/v1/blob/5ecbf0ebaf93ee16.
--- name: widen-return-type description: widen return type triggers: - widen return type - extensibility - overloads - opt-in tool map - feature flag gating - tool registration generated_from_knowledge: - f4a42419-d0bc-4f80-8a52-eb44233aadb9 - 15870ee2-0813-406f-afd6-f34a05343584 source_knowledge_ids: - f4a42419-d0bc-4f80-8a52-eb44233aadb9 - 15870ee2-0813-406f-afd6-f34a05343584 generated_at: 2026-07-02T02:11:00.606Z confidence: 0.60 status: active version: 1 skill_origin: generated --- <!-- generated by opencode-swarm skill-generator. Do not edit by hand; edits will be preserved on regeneration only with controlled update mode. --> # widen return type ## Trigger - widen return type - extensibility - overloads - opt-in tool map - feature flag gating - tool registration ## Required Procedure - use TypeScript overloads to preserve narrow return types when widening a function's return type for extensibility - mirror existing opt-in pattern: separate tool map constant, conditional merge in agents/index.ts, gating tests verifying disabled and enabled states ## Forbidden Shortcuts - invent new tool-gating mechanisms for opt-in feature flags ## Delegation Template When delegating a task affected by this skill, include: ``` SKILLS: file:.opencode/skills/generated/widen-return-type/SKILL.md ``` ## Reviewer Checks - Verify each required action above appears in the diff. ## Source Knowledge IDs - f4a42419-d0bc-4f80-8a52-eb44233aadb9 — When widening a function's return type (e.g. string instead of union) to support extensibility, use TypeScript overloads to preserve narrow types for known inputs — saves build-error round trips. - 15870ee2-0813-406f-afd6-f34a05343584 — Pre-existing opt-in maps (memory, external_skills, skills) follow a consistent pattern — when implementing new gates, mirror the existing structure (separate SKILL_AGENT_TOOL_MAP, conditional merge in agents/index.ts) rather than inventing new mechanisms.</item>