From ohmypowers-think
Use when the user explicitly asks to brainstorm, think through requirements, clarify needs, write a spec, or define acceptance criteria. Delivers a spec.md document.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ohmypowers-think:thinkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Help turn a vague idea into a precise, validated spec document through rigorous collaborative dialogue. The output is a spec.md file that the companion `ohmypowers-plan` plugin can consume.
Help turn a vague idea into a precise, validated spec document through rigorous collaborative dialogue. The output is a spec.md file that the companion ohmypowers-plan plugin can consume.
HARD GATE: Do NOT invoke any implementation skill, write any code, scaffold any project, or produce an implementation plan. Your only output is a spec document.
Announce at start: "I'm using the think skill to help clarify requirements and produce a spec document."
Save specs to: docs/specs/YYYY-MM-DD-<feature-name>-spec.md
(User preferences for spec location override this default)
Understand the project and the area the user wants to change.
CLAUDE.md, README.md, TODOS.md (if they exist).git log --oneline -20 and git diff --stat to understand recent context.ls docs/specs/ 2>/dev/nullOutput: "Here's what I understand about this project and the area you want to change: ..."
This is the core of the think skill. Ask questions ONE AT A TIME via AskUserQuestion. Push on each one until the answer is specific and evidence-based.
Specificity is the only currency. Vague answers get pushed. "Users want this" is not a requirement. You need a specific scenario, a specific user, a specific outcome.
Anti-sycophancy rules — never say these during the diagnostic:
Always do:
Not every request needs the full question set. Route based on complexity:
Ask: "What specific problem does this solve? Who has this problem today, and what are they doing about it right now?"
Push until you hear: A specific scenario with a specific user doing a specific workaround. Not "users want X" but "when [person/role] tries to [task], they currently have to [workaround], which costs them [time/effort/money]."
Ask: "What is explicitly NOT part of this? What's the smallest version that still solves the core problem?"
Push until you hear: Clear exclusions. "We will NOT handle [X]." "V1 does NOT need [Y]." The user should be able to draw a line around what's in and what's out.
Ask: "What technical, business, or timeline constraints should shape this? What existing patterns or systems must we work within?"
Push until you hear: Concrete constraints. "Must work with [existing system]." "Cannot break [existing behavior]." "Must ship by [date]." "Must support [platform/browser/version]."
Ask: "What happens when things go wrong? What are the weird cases — empty data, concurrent users, network failures, malformed input?"
Push until you hear: Specific failure scenarios and expected behavior for each. Not "handle errors gracefully" but "when [specific failure], the user sees [specific message] and can [specific recovery action]."
Ask: "How will we know this is done and working correctly? What would you show someone to prove it works?"
Push until you hear: Observable outcomes. "A user can [do X] and see [Y]." "The response time is under [N]ms." "The test suite covers [specific scenarios]."
STOP after each question. Wait for the response before asking the next.
Escape hatch: If the user expresses impatience ("just do it," "skip the questions"):
Before writing the spec, challenge the premises. This catches wrong assumptions before they get baked into the document.
Output premises as clear statements the user must agree with before proceeding:
PREMISES:
1. [statement] — agree/disagree?
2. [statement] — agree/disagree?
3. [statement] — agree/disagree?
Use AskUserQuestion to confirm. If the user disagrees with a premise, revise understanding and loop back to the relevant forcing question.
If the feature involves patterns, libraries, or approaches where external knowledge would help, search for what the world thinks.
Use WebSearch for:
Run a three-layer synthesis:
If Layer 3 reasoning reveals a genuine insight, name it: "Insight: Everyone does X because they assume [assumption]. But [evidence from our conversation] suggests that's wrong here."
If no insight exists, say: "The conventional wisdom seems sound here. Let's build on it."
Skip this phase if the user declines or if the feature is purely internal/project-specific.
Produce 2-3 distinct approaches. This is NOT optional.
For each approach:
APPROACH A: [Name]
Summary: [1-2 sentences]
Effort: [S/M/L]
Risk: [Low/Med/High]
Pros: [2-3 bullets]
Cons: [2-3 bullets]
Reuses: [existing code/patterns leveraged]
Rules:
RECOMMENDATION: Choose [X] because [one-line reason].
Present via AskUserQuestion. Do NOT proceed without user approval of the approach.
For each requirement identified in Phases 2-5, define acceptance criteria using Given/When/Then format:
### Acceptance Criteria
AC-1: [Short name]
Given [precondition]
When [action]
Then [expected outcome]
AC-2: [Short name]
Given [precondition]
When [action]
Then [expected outcome]
Rules:
Present the criteria to the user via AskUserQuestion for confirmation. Revise if needed.
Save to docs/specs/YYYY-MM-DD-<feature-name>-spec.md with this structure:
# [Feature Name] Spec
## Background
Why this needs to exist. What problem it solves. Who has this problem.
## Requirements
### Functional Requirements
- FR-1: [requirement]
- FR-2: [requirement]
### Non-Functional Requirements
- NFR-1: [requirement (performance, compatibility, etc.)]
## Chosen Approach
[Name and summary of the approach selected in Phase 5]
## Out of Scope
What is explicitly NOT part of this work.
## Acceptance Criteria
[All criteria from Phase 6]
## Open Questions (resolved)
Questions raised and resolved during the thinking process. Kept as a record of decisions made.
## Premises
The assumptions this spec is built on. If any of these turn out to be wrong, the spec should be revisited.
After writing the spec, run this checklist yourself:
Fix any issues found. Then deliver the spec to the user.
After saving the spec and completing self-review:
"Spec complete and saved to docs/specs/<filename>.md. I reviewed it for ambiguity, contradictions, coverage, and scope creep. Please review the spec document. When you're ready to turn this into an implementation plan, use the ohmypowers-plan plugin."
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 zhan7653/ohmypowers --plugin ohmypowers-power-think