How the Brief Inference System in Taste Skill Operates: A 4-Stage Pipeline

The brief inference system in Taste Skill is a declarative, four-stage pipeline defined in SKILL.md that extracts design signals from a user brief, emits a one-line "design read," optionally asks a single clarifying question, and sets three control dials while banning generic AI defaults.

The Taste Skill repository (Leonxlnx/taste-skill) introduces a structured approach to converting natural-language creative briefs into concrete design constraints before any code is written. At its core sits the brief inference system, a specification-driven pipeline that forces an LLM to interpret intent rather than rely on memorized templates. Every stage is codified in the skill's specification file, ensuring that downstream component choices, motion intensity, and layout density remain rooted in the user's original brief.

The 4 Stages of the Brief Inference Pipeline

The pipeline is defined entirely in skills/taste-skill/SKILL.md and executes in four tightly coupled stages.

Signal Extraction

The pipeline begins with signal extraction, where the agent parses the user's brief for six mandatory signals. According to the specification in skills/taste-skill/SKILL.md (lines 13–24), these signals include page kind, vibe words, reference URLs, audience, existing brand assets, and quiet constraints. Capturing these elements up front prevents the model from hallucinating context later.

One-Line Design Read

Next, the model must compress the extracted signals into a single declarative sentence called the design read. The format is strictly prescribed in SKILL.md (lines 25–33) and follows a pattern such as:

Reading this as: B2B SaaS landing for technical buyers, with a Linear-style minimalist language, leaning toward Tailwind utilities + Geist + restrained motion.

This sentence becomes the canonical design language for the rest of the session.

Clarification Guard-Rail

If the brief remains ambiguous after signal extraction, the system is permitted to ask exactly one clarifying question. As defined in SKILL.md (lines 33–35), this guard-rail fires only when confidence is low; otherwise, the pipeline proceeds silently without interruption. This constraint prevents endless back-and-forth while still protecting against low-quality reads.

Anti-Default Discipline and the Three Dials

Finally, the system enforces anti-default discipline. The specification in SKILL.md (lines 38–40) explicitly forbids common AI-generated clichés such as generic purple gradients, centered hero sections, the "Inter" font, and limitless motion. The approved design read then drives three global variables—DESIGN_VARIANCE, MOTION_INTENSITY, and VISUAL_DENSITY—defined in SKILL.md (lines 43–50). These dials gate all downstream logic, from design-system selection to component-level animation.

Consuming the Brief Inference Output in Code

Although the pipeline itself is declarative, downstream tooling scripts consume the inferred design read through concrete utilities. Below are practical implementations that map the brief to executable constraints.

Generating the Design Read

A Node.js script can hand a raw brief to inferDesignRead and receive the canonical one-line summary:

import { inferDesignRead } from './utils/briefInference.js';

// Example raw brief supplied by the user
const brief = `
  A premium-consumer landing page for a new kitchen-appliance brand.
  Minimalist, calm, with a glass-like aesthetic. Target audience: affluent home-cooks.
`;

const designRead = inferDesignRead(brief);
console.log(designRead);
// → "Reading this as: premium-consumer landing for affluent home-cooks, with a glassy minimalist language, leaning toward Tailwind utilities + Geist + restrained motion."

Mapping the Read to Control Dials

Once the read is locked, tooling converts it into numeric dial values. The example below uses mapReadToDials to set the three parameters:

import { mapReadToDials } from './utils/dialMapper.js';

const dials = mapReadToDials(designRead);
// dials = { DESIGN_VARIANCE: 7, MOTION_INTENSITY: 6, VISUAL_DENSITY: 3 }

Handling Brief Ambiguity

When confidence is low, a script can invoke the single-question guard-rail before finalizing the read:

import { askClarificationIfNeeded } from './utils/clarify.js';

const clarifiedRead = await askClarificationIfNeeded(brief, designRead);
// If ambiguous, the function will prompt the user once and return the updated read.

Enforcing Anti-Defaults in React Components

Components can branch on the inferred read to avoid banned defaults. The following React component switches its gradient logic based on whether the design read mentions "glass," honoring the anti-default rules from the specification:

// components/Hero.tsx
"use client";

import { motion } from "motion/react";

export default function Hero({ title, subtitle }) {
  // No generic purple gradient – use Tailwind utilities only if the read mentions "glass"
  const gradient = title.includes("glass")
    ? "bg-gradient-to-r from-zinc-200 to-zinc-400"
    : "bg-white";

  return (
    <section className={`min-h-[100dvh] ${gradient} p-8`}>
      <motion.h1
        initial={{ opacity: 0, y: 20 }}
        whileInView={{ opacity: 1, y: 0 }}
        viewport={{ once: true }}
        className="text-5xl font-geist"
      >
        {title}
      </motion.h1>
      <p className="mt-4 text-lg">{subtitle}</p>
    </section>
  );
}

Where the Pipeline Is Defined

The entire brief inference system is declarative and lives in the skill's documentation rather than executable source code. The following files govern behavior:

  • skills/taste-skill/SKILL.md – The canonical specification. It defines the inference workflow, the six signal categories, the design-read sentence format, the single-question guard-rail, and the anti-default rules (lines 13–50).
  • skills/llms.txt – Provides the high-level taxonomy, including the "Brief inference" keyword that tags this capability for LLM discovery.
  • README.md – Outlines the three-dial model and emphasizes brief inference in the skill overview.
  • CHANGELOG.md – Records the addition of brief-to-design-system mapping in version 2.

Summary

  • The brief inference system is a declarative, specification-driven pipeline defined in skills/taste-skill/SKILL.md.
  • It extracts six signals, emits a one-line design read, and allows at most one clarifying question.
  • Anti-default discipline bans generic AI clichés and roots all output in the inferred design language.
  • Three control dials—DESIGN_VARIANCE, MOTION_INTENSITY, and VISUAL_DENSITY—gate every downstream design decision.
  • Downstream tooling consumes the design read through utilities like inferDesignRead, mapReadToDials, and askClarificationIfNeeded.

Frequently Asked Questions

What is the brief inference system in Taste Skill?

The brief inference system is a four-stage declarative pipeline that translates a user's natural-language brief into a concrete design direction before any code is generated. As implemented in Leonxlnx/taste-skill, the pipeline is defined entirely in skills/taste-skill/SKILL.md and uses extracted signals to produce a one-line "design read" that controls all downstream visual decisions.

How does Taste Skill prevent generic AI-generated designs?

The specification enforces anti-default discipline by explicitly banning common LLM clichés such as purple gradients, centered heroes, the Inter font, and excessive motion. These rules are codified in SKILL.md (lines 38–40), and any approved design read must drive unique values for the three dials rather than fall back to templates.

What are the three dials in Taste Skill?

The three dials are DESIGN_VARIANCE, MOTION_INTENSITY, and VISUAL_DENSITY. Defined in SKILL.md (lines 43–50), these variables translate the qualitative design read into quantitative constraints that determine layout variation, animation levels, and visual density throughout the generated page.

Where is the brief inference pipeline documented?

The entire pipeline is documented in skills/taste-skill/SKILL.md, which specifies the six signal categories, the design-read sentence format, the clarification guard-rail, and the anti-default rules. Supporting context appears in skills/llms.txt, README.md, and CHANGELOG.md.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →