skills/taste/SKILL.md
Cross-domain taste skill — apply distinctive judgment to any artifact (prose, code, design, decisions) instead of converging to AI defaults. Two modes — `audit` (judge work against the two-sided charter and portable anchors) and `anchor` (load register before producing). Auto-detects by phrasing; override via `/taste audit | anchor`. Trigger on "is this slop?", "overkill?", "elegant?", "taste-test this".
npx skillsauth add outlinedriven/odin-codex-plugin tasteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Distinctive judgment over centroid-AI default convergence. Restraint as default. One strong intentional moment per artifact. The two failure modes — slop and overkill — are reciprocal: both come from refusing to commit. Slop hedges by averaging into AI defaults; overkill hedges by piling on decoration that covers thin ideas.
/taste operates across prose, code, design, and decisions with the same charter and the same eight anchors. It is a judgment register; it does not transform the artifact, it decides what about the artifact is committed and what is hedge.
Auto-detect from the user's phrasing, with slash-arg override:
is this slop?, overkill?, elegant?, audit, taste-test this, judge this → audit mode.taste anchor, taste mode, taste register, or anticipates producing fresh work → anchor mode./taste audit, /taste anchor. Override always wins.audit mode procedureWalk the eight anchors one at a time against the artifact. For each: state the anchor, judge the artifact (pass / warn / fail), cite the Side A or Side B charter row when violated, and write a concrete fix. Close with the top-3 ranked fixes. Conflict-handling: when two anchors fail with conflicting fixes (e.g., Restraint says compress, Generosity says expand), surface the tension explicitly — no auto-pick, no fixed precedence list. Tie-break is user-led.
anchor mode procedureLoad the charter and anchors as imperatives the model will honor across subsequent responses. Persistence is best-effort: applies until the user signals "stop taste" or "normal mode" OR context is compacted, whichever comes first. Re-invoke /taste anchor if drift is observed. The model honors a directive loaded once into context.
Side A — slop (centroid-AI default convergence): generic openers ("Sure!", "Of course"), hedge-stacks ("perhaps it might be"), validation phrases ("you're absolutely right"), AI-flat prose with no rhythm, default palettes, defensive nil-checks where impossible, 50/50 decision hedges that pick nothing.
Side B — overkill (decoration covering thin ideas): gradient stacks on every section, thesaurus-soup prose ("orchestrate the holistic synthesis of"), abstraction towers (4 layers where 1 suffices), complexity-flex masking absent conviction, ceremony that performs depth without delivering it.
| Domain | Side A (slop) | Side B (overkill) |
|----------|------------------------------------------|------------------------------------------|
| Prose | "I think this might possibly help..." | "We orchestrate a paradigm shift across" |
| Code | try { x } catch { /* swallow */ } | Factory<Builder<Strategy<T>>> |
| Design | Default purple-blue gradient | Gradient on every section + glow + glass |
| Decision | "Both options have merit, so..." | 12-criterion weighted scoring matrix |
See references/charter.md for the full charter.
Eight anchors apply to every domain:
See references/anchors.md for cross-domain manifestations of each anchor.
Per-anchor table, then ranked top-3 fixes:
Anchor | Verdict | Citation | Fix
-------------------|---------|-----------------------|----------------------------
Clarity | pass | |
Hierarchy | warn | Side A: AI-flat prose | Lead with the verdict line
Intent | fail | Side A: hedge-stack | Pick one; drop "might"
Coherence | pass | |
Restraint | warn | Side B: ceremony | Cut the framing paragraph
Generosity | pass | |
Honesty | pass | |
One-strong-moment | fail | Side A: 50/50 hedge | Commit to one direction
Top-3 fixes: 1. Pick one direction (Intent + One-strong-moment).
2. Lead with the verdict (Hierarchy).
3. Cut the framing paragraph (Restraint).
Conflict-handling: when two anchors fail with conflicting fixes, surface the tension in the table; do not auto-pick. Defer resolution to user.
When /taste anchor activates, emit a short register-load message:
/taste anchor active.
Anchors: Clarity, Hierarchy, Intent, Coherence, Restraint, Generosity, Honesty,
One-strong-moment.
Side A (slop) blocks: generic openers, hedge-stacks, validation phrases, AI-flat prose.
Side B (overkill) blocks: thesaurus soup, abstraction towers, decoration covering thin ideas.
Persistence: best-effort. Stop with "stop taste" or "normal mode". May reset on context compaction.
Suspend /taste register temporarily for:
git push --force, rm -rf).Resume the register once the high-stakes section ends.
testing
ODIN's compress-operations dispatcher under the Compressor/Extender role. Invoke on "tidy", "clean up", "tidy this file/memory/workspace/git/docs", or when active context (current file, diff, stack, memory directory) has structural rot to resolve before touching behavior. Detects target domain from context and routes to the sibling skill. Requires explicit target or clear active-context signal — do not invoke speculatively.
tools
One-shot bootstrap of strict-mode tooling per ecosystem plus per-task GOALS.md scaffolding so an agentic loop can self-verify. Writes typechecker/linter/schema-validator config for TS (strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes), Python (Pyright strict, Ruff strict), Rust (Clippy deny-correctness), Go (golangci-lint with staticcheck), OCaml (dune --release); establishes `.agent-tasks/<id>/GOALS.md` per-task convention distinct from project-stable AGENTS.md. C++/Java/Kotlin and framework specifics (Spring Boot, Nest, React-strict) are out of scope. Trigger on new project bootstrap, agentic-task setup, "make this self-verifying", "set the loop's goal", "scaffold goals for this issue". Pairs with `llm-self-loop` runtime.
tools
Install git pre-commit hooks via the project's hook tool — Husky+lint-staged (JS), pre-commit (Python/OCaml), lefthook (Go), cargo-husky (Rust). Use when the user wants commit-time formatting, linting, type-checking, or test gates. Detects ecosystem first.
testing
Adversarial security audit — STRIDE, OWASP Top 10, supply-chain (CVE/SBOM), secrets scan, auth/authz analysis. Use on changes touching auth, input parsing, deserialization, network I/O, dependencies, or secrets; before any production release or external-surface PR.