taguchi
Plan a minimal set of debugging or testing runs with a Taguchi orthogonal array instead of changing one factor at a time.
Skill by lexfrei
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/lexfrei-taguchi
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, testing, devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/taguchi
What's inside
- Skill name
taguchi- Description
- Plan a minimal set of debugging or testing runs with a Taguchi orthogonal array instead of changing one factor at a time. TRIGGER — invoke proactively whenever a debugging, tuning, or repro plan involves 3+ independent candidate factors (flags, versions, environments, config values) and each run is expensive (slow build, CI round-trip, flaky repro, hardware cycle); the moment the plan starts to look like "try A, then B, then A+B" this skill replaces it. Also on explicit ask - "taguchi", "orthogonal array", "DOE", "design of experiments", "plan the runs", "reduce iterations". DO NOT TRIGGER for a single suspected factor (bisect it), runs cheap enough to brute-force the full factorial, factors that cannot be set independently, or pure code-reading investigation with no experiment loop.
- License
- BSD-3-Clause
- Instructions
- 228 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (10)
- SKILL.md
- analyze.py · scripts/
- arrays.py · scripts/
- design.py · scripts/
- experiment.py · scripts/
- run.py · scripts/
- test_analyze.py · scripts/
- test_design.py · scripts/
- test_experiment.py · scripts/
- test_run.py · scripts/
SKILL.md (first lines)
Replace one-factor-at-a-time debugging with a designed experiment. An orthogonal array covers **every pair of factor levels** in a handful of runs, so any behavior caused by one factor or by a two-factor interaction is guaranteed to show up in at least one run. 11 binary factors need 12 runs instead of 2048. Every run changes several factors at once. That feels wrong to debugging intuition — resist the urge to "change only one thing". The analysis is column-wise (compare all runs where factor X was at level 1 vs level 2), not row-wise, and the balance of the array is what makes that comparison fair. ## Step 0 — gate Confirm all of these before proceeding; otherwise use the cheaper tool and say so: - **3+ candidate factors.** One factor → plain bisection. Two factors → just run the 2×2 (4 runs). - **Runs are expensive.** If a run is seconds, brute-force the full factorial instead. - **Factors are independently settable.** If setting A=2 forces B=2, merge them into one factor. - **At most ~11 factors** — that is the 2-level ceiling; 3-level factors cap out at 7 (plus one 2-level) in L18. More than that means the suspect list was never narrowed — shrink it first (the shrink skill in this plugin), then design the array for the survivors. - **The array has to be meaningfully cheaper than the factorial.** Three 2-level factors are 4 runs against 8 — a 2x saving that does not pay for the ceremony or for confounding interactions. Below roughly 3x, run the factorial and read the interactions directly; `design.py` prints the ratio and says so. Sibling skills cover the neighboring shapes: an expected single culprit among many boolean toggles → shrink; level counts that fit no array below → pairwise; optimizing knobs rather than hunting a culprit → tune. ## Step 1 — factors and levels Build the factor table with the user (or from the debugging context). Force every factor to 2 or 3 discrete levels: - Boolean or on/off → 2 levels. - Versions → current vs suspected-bad (2 levels), add a third only if a middle version genuinely discriminates. - Continuous values (timeout, batch size, memory limit) → the two extremes of the plausible range; a midpoint only as a third level. - A factor nobody can articulate a level for is not a factor — drop it or fix it at its current value. - A factor you can observe but not set (region, node shape, neighbor load) is a covariate, not a column: record its value for every run and check it during analysis (step 5). ## Step 2 — pick the array Smallest array that fits all factors: | Factors | Array | Runs | Full factorial would be | | --- | --- | --- | --- | | ≤3 × 2-level | L4 | 4 | 8 | | ≤7 × 2-level | L8 | 8 | 128 | | ≤4 × 3-level | L9 | 9 | 81 | | ≤11 × 2-level | L12 | 12 | 2048 | | 1 × 2-level + ≤7 × 3-level | L18 | 18 | 4374 | Mixed 2- and 3-level factors: dummy treatment — a 2-level factor sits in a 3-level column with level 3 repeating level 1 (coverage holds, the repeated level just gets more runs). Its level means stay unbiased but rest on unequal run counts, so its Δ is noisier than the rest of the table — rank a dummy-treated factor against the others only when its effect clears the noise floor by a margin. Up to 4 factors total fit L9 this way at 9 runs; bigger mixes take L18. Extra columns beyond your factor count are simply left unassigned. Level counts that fit none of these shapes (a 4-level factor, uneven mixes) → the pairwise skill generates a covering array for arbitrary levels. Do not assemble the sheet by hand. `scripts/design.py` picks the array, assigns the columns, applies the dummy treatment and prints the run sheet with concrete values: ```bash python3 scripts/design.py "os=ubuntu,macos" "node=18,20" "lockfile=frozen,fresh" python3 scripts/design.py "gc=on,off" "pool=8,16,32" "batch=1,10,100" --json ``` ## The arrays These tables are pairwise-balanced, and `scripts/arrays.py` re-checks that at import — a transposed digit raises instead of silently destroying the balance the analysis relies on. They are printed here to be read, not to be retyped: transcribing an L12 by hand is exactly the step the script exists to remove. ### L4 (3 factors × 2 levels, 4 runs) ```text run A B C 1 1 1 1 2 1 2 2 3 2 1 2 4 2 2 1 ``` ### L8 (7 factors × 2 levels, 8 runs) ```text run A B C D E F G 1 1 1 1 1 1 1 1 2 1 1 1 2 2 2 2 3 1 2 2 1 1 2 2 4 1 2 2 2 2 1 1 5 2 1 2 1 2 1 2 6 2 1 2 2 1 2 1 7 2 2 1 1 2 2 1 8 2 2 1 2 1 1 2 ``` ### L9 (4 factors × 3 levels, 9 runs) ```text run A B C D 1 1 1 1 1 2 1 2 2 2 3 1 3 3 3 4 2 1 2 3 5 2 2 3 1 6 2 3 1 2 7 3 1 3 2 8 3 2 1 3 9 3 3 2 1 ``` ### L12 (11 factors × 2 levels, 12 runs) ```text run A B C D E F G H I J K 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 2 2 2 2 3 1 1 2 2 2 1 1 1 2 2 2 4 1 2 1 2 2 1 2 2 1 1 2 5 1 2 2 1 2 2 1 2 1 2 1 6 1 2 2 2 1 2 2 1 2 1 1 7 2 1 2 2 1 1 2 2 1 2 1 8 2 1 2 1 2 2 2 1 1 1 2 9 2 1 1 2 2 2 1 2 2 1 1 10 2 2 2 1 1 1 1 2 2 1 2 11 2 2 1 2 1 2 1 1 1 2 2 12 2 2 1 1 2 1 2 1 2 2 1 ``` ### L18 (1 factor × 2 levels + 7 factors × 3 levels, 18 runs) ```text run A B C D E F G H 1 1 1 1 1 1 1 1 1 2 1 1 2 2 2 2 2 2 3 1 1 3 3 3 3 3 3 4 1 2 1 1 2 2 3 3 5 1 2 2 2 3 3 1 1 6 1 2 3 3 1 1 2 2 7 1 3 1 2 1 3 2 3
From lexfrei/ccc, BSD-3-Clause.
More from lexfrei/ccc
- 0.637score
infostyle
lexfrei
Edit Russian prose into информационный стиль (Ilyahov/Sarycheva): strip meaningless words, unfold abstractions into facts and examples, rebuild sentences…
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
pore-analysis
lexfrei
Measure porosity, pore size/shape, lattice period and ordering (psi6, Voronoi coordination, radial g(r) and orientational correlation length) from a top-view…
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
pairwise
lexfrei
Generate a minimal pairwise covering array for factors with arbitrary mixed level counts, using the bundled deterministic generator.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
lore
lexfrei
Read, search, and monitor Linux kernel mailing-list threads on lore.kernel.org.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
address-pr-comments
lexfrei
End-to-end closeout of unresolved review feedback across one or more GitHub PRs.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
brew-cleanup
lexfrei
Reclaim Homebrew disk by removing old formula/cask versions, pruning the download cache, and uninstalling orphaned dependencies (brew autoremove).
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
go-cache
lexfrei
Reclaim Go disk by clearing the build, test, fuzz, and module caches.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
docker-prune
lexfrei
Reclaim Docker disk by pruning unused images, containers, networks, build cache, optionally volumes, and the build cache of non-default buildx builders; on…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
stale-forks
lexfrei
Find personal forks that no longer carry value — their unique commits are already merged upstream, or they hold no unique commits at all — and remove the…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
worktree-sweep
lexfrei
Find and remove stale git worktrees across one or many repositories.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
cleanup-all
lexfrei
Run the full local cleanup pipeline — stale git worktrees, dead personal forks, Docker prune, Go caches, and Homebrew — in one pass, each stage report →…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
shrink
lexfrei
Find the guilty few among many boolean suspects with group testing (split-half, delta debugging) instead of toggling one thing at a time.
SkillAFreshness: A★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 3
- Open issues
- 2
- Last commit (this folder)
- Aug 19, 2026 (2 months ago)
- Last release
- Oct 4, 2026 (24 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- BSD-3-Clause
- Repository
- github.com/lexfrei/ccc
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from lexfrei
- 0.637score
pore-analysis
lexfrei
Measure porosity, pore size/shape, lattice period and ordering (psi6, Voronoi coordination, radial g(r) and orientational correlation length) from a top-view…
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
infostyle
lexfrei
Edit Russian prose into информационный стиль (Ilyahov/Sarycheva): strip meaningless words, unfold abstractions into facts and examples, rebuild sentences…
SkillAFreshness: A★ 11Claude Code +9 - 0.637score
pairwise
lexfrei
Generate a minimal pairwise covering array for factors with arbitrary mixed level counts, using the bundled deterministic generator.
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
docker-prune
lexfrei
Reclaim Docker disk by pruning unused images, containers, networks, build cache, optionally volumes, and the build cache of non-default buildx builders; on…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
cleanup-all
lexfrei
Run the full local cleanup pipeline — stale git worktrees, dead personal forks, Docker prune, Go caches, and Homebrew — in one pass, each stage report →…
SkillAFreshness: A★ 11Claude Code +9 - 0.632score
lore
lexfrei
Read, search, and monitor Linux kernel mailing-list threads on lore.kernel.org.
SkillAFreshness: A★ 11Claude Code +9
Cite this page
taguchi skill. Agent Mart. https://agentmart.dev/skills/lexfrei-taguchi (last updated 2026-10-24)