# Shift

> Restate the problem in a distant domain's terms. Use when a problem circles inside its own vocabulary.

- Skill: `majiayu000/shift` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/shift`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/shift/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/shift

---


## Extract

From the conversation/context/user:

- The **problem** as stated in its home vocabulary.
- Its **circling** — the restatements already made in its own terms, and where each left it still not moving.

## Gate

Proceed only when: the problem has circled — restated in its own terms more than once and still not moving.

Anything else, say which in one plain line — never shift anyway:

- The question has a direct answer in its own vocabulary → answer it and proceed with what the answer settles; if the answer is something settled and the user shows they don't hold it → use **explain** skill.
- The problem hasn't circled — stated once, not yet restated in its own terms → stop; shifting starts only after the home vocabulary has failed more than once.

## Recast

Everything here, retry included, runs inside this one turn — nothing waits on the user.

1. Pick a distant domain that lives with the same tension daily — distant enough that its words are not synonyms for yours. Prefer the domain that has been paying for this tension longest: its answers are old and tested.
2. Restate the problem entirely in that domain's terms — no mixed vocabulary, every home term replaced.
3. Test the mapping before delivering anything: if each borrowed term lands one-to-one on a home term, the shift bought nothing — a renaming, not movement. Pick a more distant domain and run the restatement and this test once more. If the second mapping is also one-to-one, the problem resists shifting — carry that verdict out as the result instead of a restatement.

## Output

The restatement is the result — hand it back entirely in the distant domain's terms, with one line on what the borrowed terms expose that the home terms hid. Nothing more rides along: one restatement, one exposure line.

If the recasting ended with the problem resisting shifting, hand back that verdict instead — name the domains tried, and let no restatement stand as movement when the test showed none.

Then check whether anything still unresolved would change what gets built:

- Nothing would → return to the work the shift interrupted.
- What the borrowed terms exposed is something already settled that the user does not hold → use **explain** skill.

The shift is spent once its turn is out — anything further runs under the branch picked here, never as another restatement.

