Think Hard Claude Code mod: Claude Code max effort for a single prompt
Start a prompt with + and that one turn asks for max reasoning effort. Other prompts keep your session's effort.
Permissions
- Reads your promptsCan see what you type and the conversation transcript (prompt.* / session.append / session.messages).
- tested with
- v2.1.303
- last tested
- requires
- Claude Code ≥ 2.1.287
- surfaces
- none
Install inside Claude Code:
/plugin install think-hard --marketplace midudev/better-claudeWhat does this mod do?
Think Hard is a community mod by Miguel Ángel Durán (midudev), part of his better-claude collection. It gives you Claude Code max effort for one prompt at a time. Type a prompt that starts with +, such as +plan the refactor of the parser, and that turn asks for max effort on every model request. Claude receives plan the refactor of the parser, without the +. A prompt without the mark goes out as usual, with whatever effort the session already has.
The mark lasts for one turn. It is set when you submit the prompt and cleared when the turn completes, so you do not have to remember to switch effort back afterwards. If the model has no effort setting at all, the mod leaves the request alone. The author's README describes exactly this behavior and nothing more: there is no command, no option and no screen.
Think Hard is close in purpose to effortless, which chooses an effort for each prompt automatically and shows a lot of extra information. Think Hard is the manual, minimal version: you decide per prompt by typing one character. A related idea from the same author is After, a prompt queue.
Install
Use any of the methods in the install block; they install straight from the author's own marketplace. After installing, start a prompt with +.
$ install think-hard
Requires Claude Code ≥ 2.1.287
Installs from the author's own marketplace: midudev/better-claude
1.One line, inside Claude Code
/plugin install think-hard --marketplace midudev/better-claudePaste into a running session (v2.1.275+). Claude Code asks to add the marketplace first.
2.From your shell
claude plugin marketplace add midudev/better-claude claude plugin install think-hard@better-claudeThen run /reload-plugins in any session that is already open.
3.Try it without installing
git clone https://github.com/midudev/better-claude claude --plugin-dir ./better-claude/plugins/think-hardLoads the mod for one session only. Nothing is added to your settings.
How it works
The whole mod is one hooks module, hooks/register.ts, about 20 lines. A module-level boolean marks the turn. Three hooks use it:
on('prompt.submit', ($, e, next) => {
hardTurn = e.text.startsWith(MARK)
return next(hardTurn ? { ...e, text: e.text.slice(MARK.length).trimStart() } : e)
})
// Every model request of a marked turn asks for max effort, when the model takes an effort at all.
on('turn.step', async function* ($, e, next) {
return yield* next(hardTurn && e.effort !== undefined ? { ...e, effort: 'max' } : e)
})turn.complete sets the flag back to false. Because the flag lives in module memory, it is not saved anywhere and a restart clears it. Every step of a marked turn, including the steps after tool calls, gets effort: 'max'.
Customize it
There are no options. The marker character is the constant MARK = '+' at the top of register.ts; change it there if + clashes with how you start prompts. Use --plugin-dir on your edited copy of the plugins/think-hard folder to load it.
Permissions & safety
We read every file the plugin can load: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.ts, the test file, the README and the LICENSE. The module imports only a type from claude-code. There is no package.json, install script, bundled or minified code, binary or remote import, and we found no hidden or zero-width characters.
The mod makes no network calls, runs no processes, reads no environment variables and writes no files; claude plugin validate lists calls: nothing on $. It has no telemetry, no daemon and no external requirement.
One notable behavior: it rewrites your prompt (it strips the leading +) and rewrites each model request of a marked turn to ask for max effort. claude plugin validate flags prompt.submit as a gating hook without .catch; here the hook only passes the event on, it never blocks it. Max effort can mean longer thinking and more tokens used on that turn. Validate reported no errors or warnings, and the author's 3 tests passed on Claude Code 2.1.303. The license is MIT, and the repository has a LICENSE file.
- Reads your prompts
- Can see what you type and the conversation transcript (prompt.* / session.append / session.messages).
Compatibility & troubleshooting
Checked with Claude Code 2.1.303 on macOS (validate, tests and one recorded session). If a + prompt does not seem to do anything:
- Check that the
+is the very first character; a leading space means the mark is not seen. - The effort indicator in the footer shows the session setting and does not change, so it is not a way to check the mod.
- A model without an effort setting is left alone by design.
- After installing into an open session, run
/reload-plugins.
FAQ
- Does Think Hard change my Claude Code effort setting?
- No. The code only rewrites the effort on the model requests of a marked turn. When the turn completes, the mark is cleared and the next prompt goes out with the effort you had set.
- Does Claude see the + at the start of my prompt?
- No. The prompt.submit hook removes the leading + and any spaces after it, so Claude receives the text without the mark.
- What happens on a model that has no effort setting?
- Nothing. The hook only sets max when the request already carries an effort value, and the author's third test checks that a request without one stays untouched.
- Does it make network calls or read my files?
- No. The module imports only a type, calls nothing on $, and has no package.json or scripts. It keeps one boolean in memory.
- Why is there no demo video?
- The mod has no interface. In our recording the only visible change is that the + is dropped from the prompt, and the effort indicator in the footer does not change, so the clip cannot show the effect.
# Related mods
FeaturedAfter
A prompt queue for Claude Code: /after runs your next task when the current one ends, without steering it.
- above-prompt
- pane
- toast
- status
- Calls the model (uses your quota)
- Reads your prompts
- Changes the UI
- Adds commands/tools
- Stores data
tested with v2.1.303
More in Timers, todos, standups.