docs: require impeccable skill for design and frontend

Adds the design-system issue, scaffolds .impeccable/live/config.json against
web/index.html, and records the aoe spawn commands for the codex GPT-5.6
models in the driver table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude
2026-08-22 18:48:44 +01:00
parent 3804e62eea
commit af33b38c1b
3 changed files with 115 additions and 24 deletions
+39 -9
View File
@@ -42,6 +42,27 @@ request that adds a heavy dependency to either is wrong.
- No `unwrap()` in non-test code. The lint is on.
- SQL goes through `sqlx` compile-time-checked queries.
## Design and frontend work
**Any issue labelled `area/web`, and any work that decides how something looks
or behaves on screen, goes through the `impeccable` skill.** That includes the
design system itself, component work, layout, visual hierarchy, empty and error
states, and any change to the UI described in `DESIGN.md` §9.2 and §9.3. Invoke
it before writing markup, not as a review pass afterwards.
`.impeccable/design.json` is the token system — colours, typography, spacing.
It is authored once by that skill and then treated as the source of truth;
components consume tokens rather than literal values. `.impeccable/live/config.json`
points the skill's live browser iteration at `web/index.html`.
`~/tea/arcada` has the same setup and is worth reading for the shape of a
finished `design.json`.
This matters more here than in a typical CRUD app because the manual-search
view (§9.3) is the whole reason for the project's UI existing — Radarr's is
unusable specifically because of a layout decision. Getting it right is a design
problem, not a markup problem.
## Working an issue
1. Read `DESIGN.md`, then the issue, then the sections the issue cites.
@@ -110,19 +131,28 @@ alone. The loop:
### Model selection
| Difficulty | Model |
|---|---|
| `difficulty/hard` | Opus 5 |
| `difficulty/moderate` | Sonnet 5 |
| `difficulty/easy` | Sonnet 5 |
| `difficulty/trivial` | Haiku 4.5 |
Sessions are spawned with `aoe`, which can run `claude`, `codex`, `opencode` and
`pi`. The GPT-5.6 models are `terra` and `sol`, reached through the `codex` tool.
| Difficulty | Model | Spawn |
|---|---|---|
| `difficulty/hard` | Opus 5 | `aoe add <path> --tool claude --model claude-opus-5 -l` |
| `difficulty/moderate` | Sonnet 5 or `gpt-5.6-sol` | `aoe add <path> --tool codex --extra-args "-m gpt-5.6-sol" -l` |
| `difficulty/easy` | `gpt-5.6-terra` | `aoe add <path> --tool codex --extra-args "-m gpt-5.6-terra" -l` |
| `difficulty/trivial` | Haiku 4.5 | `aoe add <path> --tool claude --model claude-haiku-4-5-20251001 -l` |
Use `-w <branch> -b` to put each session in its own git worktree, which is what
makes parallel issues safe.
`gpt-5.6-terra` is confirmed — it is the default in `~/.codex/config.toml`.
`gpt-5.6-sol` is inferred from the sibling naming and should be verified on
first use.
Escalate one tier if a session fails CI twice on the same issue. Never
de-escalate mid-issue.
> The operator mentioned a model named "terra" for the lower tiers. No such
> model was identified — confirm what it refers to and correct this table
> before relying on it.
`area/web` issues ignore this table's lower tiers — see the design section
above. They go through the `impeccable` skill regardless of difficulty label.
### What a driver must not do