pbakaus/impeccable · error

no seed with id "{}"

Error message

no seed with id "{}"

What it means

The palette command looks up a seed palette by id when `--id` is provided. If no seed in the built-in SEEDS registry matches the given id, it prints this error and exits with code 2. This is a lookup failure against a fixed catalog of known palette ids.

Source

Thrown at crates/context/src/palette.rs:104

    while i < args.len() {
        let a = &args[i];
        let next = args.get(i + 1).filter(|n| !n.is_empty());
        if a == "--id" && next.is_some() {
            id = next.cloned();
            i += 2;
            continue;
        } else if a == "--from" && next.is_some() {
            from = next.cloned();
            i += 2;
            continue;
        }
        i += 1;
    }
    let seed: &Seed = if let Some(id) = id.filter(|s| !s.is_empty()) {
        match SEEDS.iter().find(|s| s.id == id) {
            Some(s) => s,
            None => {
                io.err(&format!("no seed with id \"{}\"\n", id));
                return 2;
            }
        }
    } else {
        let env_from = io.env.get("IMPECCABLE_PALETTE_SEED").cloned().filter(|s| !s.is_empty());
        let key = from.filter(|s| !s.is_empty()).or(env_from);
        let unit = match key {
            Some(k) => hash_unit(&k),
            None => random_unit(),
        };
        weighted_pick(unit)
    };
    let mood_hint = if seed.mood.is_empty() { String::new() } else { format!(" (one read: \"{}\")", seed.mood) };
    let strategy_hint = if seed.strategy.is_empty() { String::new() } else { format!("\n  - one example strategy: {}", seed.strategy) };
    let oklch = format!("oklch({} {} {})", to_fixed(seed.l, 3), to_fixed(seed.c, 3), to_fixed(seed.h, 1));
    let out = TEMPLATE
        .replacen("{ID}", seed.id, 1)
        .replacen("{OKLCH}", &oklch, 1)

View on GitHub (pinned to 2bc2879276)

Solutions

  1. List available seeds (run the palette command without --id or consult its help/docs) and pick a valid id.
  2. Fix the spelling/casing of the seed id exactly as it appears in the catalog.
  3. If relying on an inherited seed, check IMPECCABLE_PALETTE_SEED/from semantics — an invalid explicit --id is not auto-corrected.
  4. Update scripts/docs that hardcode seed ids after upgrading the tool to a version with a changed catalog.
  5. Fall back to a seed color/from-source flow instead of an id if you need a custom palette.

Example fix

// before
impeccable palette --id midnigt  # typo
// no seed with id "midnigt"
// after
impeccable palette --id midnight
Defensive patterns

Strategy: validation

Validate before calling

const VALID_SEED_IDS = [/* from `impeccable palette` catalog/docs */];
if (opts.id && !VALID_SEED_IDS.includes(opts.id)) {
  throw new Error(`unknown palette seed id: ${opts.id}`);
}

Try / catch

const r = spawnSync("impeccable", ["palette", "--id", id], { encoding: "utf8" });
if (r.status === 2 && r.stderr.startsWith(`no seed with id`)) {
  console.error(`${id} is not in the seed catalog — list seeds and retry`);
}

Prevention

When it happens

Trigger: `SEEDS.iter().find(|s| s.id == id)` returns None — running `impeccable palette --id <name>` with a mistyped, renamed, or nonexistent seed id; passing an id copied from docs of a different version.

Common situations: Typos or wrong casing in the seed id; referencing a seed that exists in a newer/older version of the tool; confusing a seed id with a color hex or custom palette name; scripting with a hardcoded id that drifted from the catalog.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08). Data as JSON: /api/errors/ad483758137c6252. Report an issue: GitHub.