Two ways to make Opus 5 concise

Sankra2 pts1 comments

Two ways to make Opus 5 concise

Two ways to make Opus 5 concise

Aug 20, 2026

2 min read

AIToolingCLIProductivity

Opus 5 is a strong coding model, but it answers every question with an essay. My fix used to be a custom output style built on ASD-STE100, the simplified English of aircraft maintenance manuals. Now Claude Code ships a built-in style called Concise that does the same job better after changing one configuration.

Load-bearing paragraphs

Opus 5 at xhigh effort does excellent work. Then it tells you about it. And goes on an on. Ask for a variable rename and the answer explains which architectural “seam” the variable sits on, why that seam is “load-bearing”, and what is “worth knowing before you touch anything”. Every module is “the interesting part”. Somewhere in paragraph four, the rename is confirmed.

The words are fine words on their own, there are just so many of them and together they often make little sense together.

Aircraft English

ASD-STE100 is Simplified Technical English, the writing standard for aerospace maintenance manuals: a controlled dictionary of about 900 approved words, and rules that cap a sentence at 20 words with one instruction in it. It exists so a tired mechanic cannot misread a step. Exactly the reading level I want at the end of a long day.

Claude Code supports custom output styles, and it will happily write one for itself. One prompt is enough:

Change the output mode to use ASD-STE100

Claude wrote the style file to ~/.claude/output-styles/ASD-STE100.md, pointed the configuration at it, and added two carve-outs on its own: code and quoted text stay verbatim, and anything written for my projects follows my language guide instead of aerospace English.

The new Concise style

With version 2.1.237, Claude Code made the workaround unnecessary. /output-style now lists five styles, and the new one is Concise: “Claude responds tersely, leading with results and skipping preamble and narration.”

An output style swaps the part of the system prompt that governs how Claude talks to you. Answers lead with the result and a simple question gets a sentence or three instead of a report. Narration and recaps are cut. Error output and failing tests keep their full content, and asking for detail still gets you detail. Only the default changes.

Same question, three styles

I tested all three in the repo of Olsen, my crazy eights card game, asking each style to describe the project’s tech stack. Only the output style changed between runs. Default came back with an essay:

"Here's what's actually in the project, checked against the Xcode project and the source rather than the docs." (663 words)

Here's what's actually in the project, checked against the Xcode project and the source rather than the docs.

## Shape of it

One Xcode project, three native targets, ~18k lines of Swift:

- `olsen` — the iPhone/iPad app, Mac Catalyst enabled (`TARGETED_DEVICE_FAMILY = "1,2"` + `SUPPORTS_MACCATALYST = YES`), `com.hjerpbakk.olsen`, version 2026.6<br>- `olsen watchOS Watch App` — `com.hjerpbakk.olsen.watchkitapp`, version 1.0 (6)<br>- `olsenTests` — unit tests

Deployment targets are iOS 26.2 and watchOS 26.2. `SWIFT_VERSION = 5.0`, so Swift 5 language mode, but with `SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor` and `SWIFT_APPROACHABLE_CONCURRENCY = YES`: everything is main-actor by default and concurrency only shows up where it's asked for. `MultiplayerSession.swift:11` spells out the consequence, that GameKit callbacks and sends all stay on the main thread so no hops are needed.

## UI layer, two of them

Phone/iPad/Mac is a thin UIKit shell around SpriteKit. `AppDelegate` → `SceneDelegate` → Main storyboard → `GameViewController`, then everything visible is an `SKScene`: `MainMenuScene`, `LobbyScene`, `OlsenGameScene` (1410 lines, the biggest file), `SettingsScene`, `HowToPlayScene`, `WelcomeScene`, `TutorialCompletionScene`. Below those, hand-rolled `SKNode` subclasses in `olsen/iOS/Nodes/`: `CardNode`, `HandNode`, `DeckNode`, `SuitSelectorNode`, `ModernButtonNode`, `SFSymbolSprite`, and `CardGlowNode`, which is the only place using `SKShader`. Card art comes out of `Cards.spriteatlas` through `CardAtlas.swift`, which caches the extracted textures.

Mac Catalyst gets its own extras: a menu bar and a separate About window scene (`AboutSceneDelegate`, routed by activity type in `AppDelegate`).

The watch app is plain SwiftUI + WatchKit, no SpriteKit, with its own view models and models (`WatchGameViewModel`, `WatchModels`). It is a separate implementation of the game's surface, not a port of the scenes.

## Game engine

`olsen/Shared/` is the platform-agnostic half: GameplayKit ECS with entities (Player, Card, Deck, DiscardPile), components (Hand, Turn, AI, Animation, Card, Sprite) and systems (CardPlay, Turn, Draw, AI). `GameManager` (878 lines) is the singleton that owns the rules and pushes changes out through a delegate. AI is protocol-based, `AIStrategy` with Easy/Normal/Hard.

## Two...

output style claude olsen concise project

Related Articles