os-ask-simple
ALWAYS invoke this skill before asking the user any technical question or offering options, and whenever they ask to be asked in plain words - "ask simple", "ask me simply", "ask me in plain words" - or ask if something is worth doing or if something simpler would do, in any lang
Install
npx skills add https://github.com/kharmanskyi/open-steps/tree/main/skills/os-ask-simple
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install kharmanskyi-open-steps@llmmart
git clone https://github.com/kharmanskyi/open-steps.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole kharmanskyi/open-steps collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
os-ask-simple
Two jobs. Ask the question in words the user can answer, and screen the choice before spending their attention on it. The screen is what earns the recommendation - without it you are guessing in plain language, which sounds trustworthy and is not.
Language
Write in the language the user speaks in this session. Detect it from the conversation. Keep code, file names and identifiers in English.
When to use
- You are about to ask the user a technical question.
- You are about to offer options.
- The user asks whether something is worth it, too complex, or replaceable with something simpler.
- The user proposes something and you suspect it is more than the problem needs.
Before anything: is this even a question for them?
Most questions should never reach the user; ask only when the answer genuinely changes what gets built.
- Can you answer it by looking? Read the code, the config, the last report. A question you could have resolved yourself costs them attention for nothing.
- Is there a conventional default? Take it and say you took it.
- Would both answers lead to the same work? Then it is not a fork.
Light form - every question
<The question in one plain sentence. No jargon; if a term is unavoidable, give a
three-to-five word analogy.>
Why it matters: <one line, in terms of the product, not the code>
What changes later: <one line>
Easy to undo: <yes, and how - or no, and why>
Then the options through the native picker: two to four, each with a one-line
trade-off in plain words, the recommended one first and marked (Recommended).
Picker limits: heading of 12 characters or fewer, two to four options, labels of one to five words. Where the picker is not available, write the same content as plain text.
Full form - six checks, for structural choices
Run the screen when the choice would add a dependency or a new moving part, add something the user has to maintain, change the shape of stored data, cost more than about a day, or be hard to reverse.
Show it as a table. Answer every row - "not checked" is allowed and honest; silence is not.
| Check | What goes in the answer |
|---|---|
| How long now | Real effort, in hours or days, plus what has to be touched |
| Simpler substitute | The simplest thing that would also work - or "none found", having looked |
| Extra work for you later | Anything the user must do repeatedly afterwards: approvals, manual steps, watching a dashboard |
| Harder to change later | What this locks in, and what would be expensive to move afterwards |
| Over-engineering | Say yes when it is yes. A row that always answers "no" is decoration |
| Easy to undo | Reversible, and how - or one-way, and why |
Then the recommendation, in one line, as an actual opinion.
Hard rules
- Always weigh doing nothing. "Change nothing" is a real candidate, often the winner. If it lost, say in one line why.
- A recommendation is required. Never lay out options and stop. "It depends" is not a recommendation - if it truly depends, say what it depends on and pick the option that is right under the more likely condition.
- Recommend against the user's own idea when the screen says so. Plainly, in one sentence, with the simpler substitute named. They asked for a filter, not for agreement.
- Never recommend what you have not screened. If the six checks were skipped because the choice looked small, say the choice looked small.
- One question at a time. Two questions in one message means the second gets a careless answer.
- Watch your own bias. The most interesting thing to build is not the recommendation. If an option is more fun to implement, that is a reason for suspicion, not for preference.
Known gotchas
- Two options that end in the same place are one option. Do not pad the picker to look thorough.
- "Over-engineering: no" answered reflexively kills the whole screen. The row exists to be answered yes sometimes.
- Effort estimates are guesses. Say "roughly" and give a range. A confident number that turns out wrong costs more trust than a range ever does.
- The user may pick the option you did not recommend. That is the point of asking. Do it their way without re-arguing, and note the trade-off once.
Files (open-steps)
-
references
-
01-sign-in-now-or-later.md 2.8 KB
# Example 1 - three questions in one, none of them answerable Source: a real session in my own analytics dashboard project, condensed. No client or third-party material. ## What the agent asked > Should I integrate Clerk with Next.js middleware for route-level protection, > or defer auth and keep the deployment protection for now? If Clerk, do you > want the hosted sign-in page or embedded components, and should I model > organizations from the start in case you go multi-tenant later? Three questions stacked in one message, each assuming the answer to the one before it, all in the vendor's vocabulary. ## `os-ask-simple` > Should the dashboard get real sign-in now, or stay behind the single > password it has today? > > Why it matters: today one password guards everything; real sign-in gives > each person their own access, which you can take away one at a time. > What changes later: nothing gets harder by waiting - the sign-in work is the > same size on the day a second person needs it. > Easy to undo: yes - the gate is one file and one screen; take them out and > the password is back. > > | Check | Answer | > |---|---| > | How long now | Roughly half a day to a day; the gate in front of every page, plus the sign-in screen in the app shell | > | Simpler substitute | The password already there - it does this one job today | > | Extra work for you later | Inviting and removing people by hand in the provider's dashboard | > | Harder to change later | Accounts lock to the provider's user ids; switching providers means re-mapping them | > | Over-engineering | Yes, today - one person uses this dashboard | > | Easy to undo | Yes: the gate is one file and one screen; remove them and the password is back | > > My recommendation: change nothing until a second person needs access. The > password does the one job sign-in would do, and the half-day is better spent > on the dashboard itself. > > **Sign-in?** > - Keep the password (Recommended) - nothing to build; add sign-in the day a second person needs in > - Add real sign-in now - roughly half a day to a day, then inviting people by hand ## What the rewrite did | Move | Where | |---|---| | Three questions became one | hosted-vs-embedded and multi-tenant only exist after a yes - asking them first buys careless answers (rule 5) | | Vendor words became what the reader would see | "Clerk with middleware" → "real sign-in"; "deployment protection" → "the single password" | | Doing nothing was weighed, and won | rule 1 - and the one line says why it won | | The screen said over-engineering, plainly | one person today; the row exists to be answered yes sometimes | | Recommended against the more interesting build | the integration is the fun option; that was a reason for suspicion, not preference (rule 6) | | The picker carried the trade-offs | two options, one line each, the recommended one first and marked |
-
-
SKILL.md 4.9 KB
--- name: os-ask-simple description: >- ALWAYS invoke this skill before asking the user any technical question or offering options, and whenever they ask to be asked in plain words - "ask simple", "ask me simply", "ask me in plain words" - or ask if something is worth doing or if something simpler would do, in any language. Rewrites the question in plain words and always ends with one marked recommendation. A structural choice first passes six checks, shown as a table: effort now, simpler substitute, extra work later, lock-in, over-engineering, easy to undo. Doing nothing is always weighed. allowed-tools: - "Read(~/.claude/open-steps/**)" --- # os-ask-simple Two jobs. Ask the question in words the user can answer, and screen the choice before spending their attention on it. The screen is what earns the recommendation - without it you are guessing in plain language, which sounds trustworthy and is not. ## Language Write in the language the user speaks in this session. Detect it from the conversation. Keep code, file names and identifiers in English. ## When to use - You are about to ask the user a technical question. - You are about to offer options. - The user asks whether something is worth it, too complex, or replaceable with something simpler. - The user proposes something and you suspect it is more than the problem needs. ## Before anything: is this even a question for them? Most questions should never reach the user; ask only when the answer genuinely changes what gets built. - **Can you answer it by looking?** Read the code, the config, the last report. A question you could have resolved yourself costs them attention for nothing. - **Is there a conventional default?** Take it and say you took it. - **Would both answers lead to the same work?** Then it is not a fork. ## Light form - every question ``` <The question in one plain sentence. No jargon; if a term is unavoidable, give a three-to-five word analogy.> Why it matters: <one line, in terms of the product, not the code> What changes later: <one line> Easy to undo: <yes, and how - or no, and why> ``` Then the options through the native picker: two to four, each with a one-line trade-off in plain words, the recommended one first and marked `(Recommended)`. Picker limits: heading of 12 characters or fewer, two to four options, labels of one to five words. Where the picker is not available, write the same content as plain text. ## Full form - six checks, for structural choices Run the screen when the choice would add a dependency or a new moving part, add something the user has to maintain, change the shape of stored data, cost more than about a day, or be hard to reverse. Show it as a table. Answer every row - "not checked" is allowed and honest; silence is not. | Check | What goes in the answer | |---|---| | How long now | Real effort, in hours or days, plus what has to be touched | | Simpler substitute | The simplest thing that would also work - or "none found", having looked | | Extra work for you later | Anything the user must do repeatedly afterwards: approvals, manual steps, watching a dashboard | | Harder to change later | What this locks in, and what would be expensive to move afterwards | | Over-engineering | Say yes when it is yes. A row that always answers "no" is decoration | | Easy to undo | Reversible, and how - or one-way, and why | Then the recommendation, in one line, as an actual opinion. ## Hard rules 1. **Always weigh doing nothing.** "Change nothing" is a real candidate, often the winner. If it lost, say in one line why. 2. **A recommendation is required.** Never lay out options and stop. "It depends" is not a recommendation - if it truly depends, say what it depends on and pick the option that is right under the more likely condition. 3. **Recommend against the user's own idea when the screen says so.** Plainly, in one sentence, with the simpler substitute named. They asked for a filter, not for agreement. 4. **Never recommend what you have not screened.** If the six checks were skipped because the choice looked small, say the choice looked small. 5. **One question at a time.** Two questions in one message means the second gets a careless answer. 6. **Watch your own bias.** The most interesting thing to build is not the recommendation. If an option is more fun to implement, that is a reason for suspicion, not for preference. ## Known gotchas - **Two options that end in the same place are one option.** Do not pad the picker to look thorough. - **"Over-engineering: no" answered reflexively kills the whole screen.** The row exists to be answered yes sometimes. - **Effort estimates are guesses.** Say "roughly" and give a range. A confident number that turns out wrong costs more trust than a range ever does. - **The user may pick the option you did not recommend.** That is the point of asking. Do it their way without re-arguing, and note the trade-off once.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.