Agent Skills › archestra-ai/archestra › design-arena

design-arena

GitHub

Run a design arena: a coordinator fans out N subagents (default 7) that each prototype one UI section through a different lens, switchable in-app via a temporary prototype selector, refined in rounds.

.agents/skills/design-arena/SKILL.md archestra-ai/archestra

安装

npx skills add archestra-ai/archestra --skill design-arena -g -y
更多选项

非标准路径

npx skills add https://github.com/archestra-ai/archestra/tree/main/.agents/skills/design-arena -g -y

不安装直接使用

npx skills use archestra-ai/archestra@design-arena

指定 Agent (Claude Code)

npx skills add archestra-ai/archestra --skill design-arena -a claude-code -g -y

安装 repo 全部 skill

npx skills add archestra-ai/archestra --all -g -y

预览 repo 内 skill

npx skills add archestra-ai/archestra --list

SKILL.md

Frontmatter
{
    "name": "design-arena",
    "description": "Run a design arena: a coordinator fans out N subagents (default 7) that each prototype one UI section through a different lens, switchable in-app via a temporary prototype selector, refined in rounds."
}

Design Arena

Hammer out many design directions for ONE section of a real app page and find what looks good. You (the coordinator) mount a temporary prototype selector in that section, fan out N subagents that each build one variant through a distinct lens, then refine round after round from the user's feedback until one wins.

N (variant count): default 7; use whatever the user asks for, and it can change between rounds.

This is about looks, not engineering. No tests, no linting passes, no polish beyond what's needed to judge the design. A variant only has to render with real data. Reuse existing components and data; mock what doesn't exist. Every subagent reads and applies the repo's design taste skill (e.g. design-taste-frontend) before building; if none exists, ask the user which taste guide to use.

Inputs

  • Target: page + section (e.g. /connection, step 2) and the file that renders it.
  • Requirements: what the section must communicate/do. Ask if missing.
  • App URL where the user flips variants live.

The prototype selector (same every time)

Scaffolding, never committed. Put it in __arena__.tsx next to the target section, variants in __arena__/v1.tsx … vN.tsx, and list both paths in .git/info/exclude. Mark the one import you add to the real section file with // design-arena: do not commit.

Look: a compact pill bar under the section heading: muted "Prototype", then "Current", then 1 … N; small text, subtle bordered rounded container, selected item bold on a lighter background.

"use client";
import { type ReactNode, useState } from "react";

export function DesignArena({ current, variants }: { current: ReactNode; variants: ReactNode[] }) {
  const [sel, setSel] = useState(-1);
  return (
    <div className="space-y-3">
      <div className="inline-flex flex-wrap items-center gap-1 rounded-md border bg-muted/40 px-2 py-1 text-xs">
        <span className="pr-1 text-muted-foreground">Prototype</span>
        {["Current", ...variants.map((_, i) => `${i + 1}`)].map((label, i) => (
          <button key={label} type="button" onClick={() => setSel(i - 1)}
            className={`rounded px-1.5 py-0.5 ${sel === i - 1 ? "bg-background font-semibold" : "text-muted-foreground"}`}>
            {label}
          </button>
        ))}
      </div>
      {sel < 0 ? current : variants[sel]}
    </div>
  );
}

Adapt class names if the repo isn't Tailwind/shadcn, keeping the look.

Commit guard (Biome)

One-time per repo, if not already present: add a Biome GritQL plugin that fails lint on any arena import, and register it in biome.json ("plugins": ["./tools/biome-plugins/design-arena.grit"]). This guard file is the only arena-related thing that gets committed.

`import $_ from $source` where {
  $source <: r".*__arena__.*",
  register_diagnostic(span=$source, message="design-arena: do not commit")
}

Run Biome once on the section file with the arena import in place to confirm the rule fires; adjust the pattern if the repo's Biome version needs different syntax.

Round loop

  1. Mount the selector with "Current" = today's section.
  2. Pick N lenses: genuinely different takes (layout, density, metaphor, interaction, scale). Post them as a numbered one-liner list.
  3. Fan out N subagents in parallel, one file each. Brief: requirements, its lens, accumulated feedback constraints, the taste skill, its file, data hooks to reuse, touch nothing else.
  4. Check each variant renders; re-spawn broken ones.
  5. Present the URL and numbered list; ask which wins and what to change.
  6. Refine: the winner (or a blend) becomes the baseline. Restate feedback as concrete constraints carried into every future brief (ask first if feedback is ambiguous), pick N new lenses on the open questions, repeat from 3.

Ending

When the user picks a final variant: move it into the real section code, delete __arena__.tsx, __arena__/, the marked import and the .git/info/exclude lines, confirm the page renders.

版本历史

  • fa6fc52 当前 2026-11-02 10:42

同 Skill 集合

.agents/skills/archestra-dev-backend-tests/SKILL.md
.agents/skills/archestra-dev-backend/SKILL.md
.agents/skills/archestra-dev-bench-analysis/SKILL.md
.agents/skills/archestra-dev-e2e/SKILL.md
.agents/skills/archestra-dev-frontend/SKILL.md
.agents/skills/archestra-dev-investigate/SKILL.md
.agents/skills/archestra-dev-llm-providers/SKILL.md
.agents/skills/archestra-dev-migrations/SKILL.md
.agents/skills/archestra-dev-observability/SKILL.md
.agents/skills/archestra-dev-override-sweep/SKILL.md
.agents/skills/archestra-dev-resource-cleanup/SKILL.md
.agents/skills/archestra-dev-rust-napi/SKILL.md
.agents/skills/archestra-dev-testing/SKILL.md
.agents/skills/archestra-docs-writer/SKILL.md
.agents/skills/archestra-mcp-catalog-entry/SKILL.md
.agents/skills/archestra-merge-queue/SKILL.md
.agents/skills/archestra-pr-hygiene/SKILL.md
.agents/skills/design-taste-frontend/SKILL.md
.agents/skills/managing-archestra-releases/SKILL.md
.claude/skills/archestra-dev-backend-tests/SKILL.md
.claude/skills/archestra-dev-backend/SKILL.md
.claude/skills/archestra-dev-bench-analysis/SKILL.md
.claude/skills/archestra-dev-e2e/SKILL.md
.claude/skills/archestra-dev-frontend/SKILL.md
.claude/skills/archestra-dev-investigate/SKILL.md
.claude/skills/archestra-dev-llm-providers/SKILL.md
.claude/skills/archestra-dev-migrations/SKILL.md
.claude/skills/archestra-dev-observability/SKILL.md
.claude/skills/archestra-dev-override-sweep/SKILL.md
.claude/skills/archestra-dev-rust-napi/SKILL.md
.claude/skills/archestra-dev-testing/SKILL.md
.claude/skills/archestra-docs-writer/SKILL.md
.claude/skills/archestra-mcp-catalog-entry/SKILL.md
.codex/skills/archestra-dev-backend-tests/SKILL.md
.codex/skills/archestra-dev-backend/SKILL.md
.codex/skills/archestra-dev-bench-analysis/SKILL.md
.codex/skills/archestra-dev-e2e/SKILL.md
.codex/skills/archestra-dev-frontend/SKILL.md
.codex/skills/archestra-dev-investigate/SKILL.md
.codex/skills/archestra-dev-llm-providers/SKILL.md
.codex/skills/archestra-dev-migrations/SKILL.md
.codex/skills/archestra-dev-observability/SKILL.md
.codex/skills/archestra-dev-override-sweep/SKILL.md
.codex/skills/archestra-dev-rust-napi/SKILL.md
.codex/skills/archestra-dev-testing/SKILL.md
.codex/skills/archestra-docs-writer/SKILL.md
.codex/skills/archestra-mcp-catalog-entry/SKILL.md
.codex/skills/archestra-pr-hygiene/SKILL.md
ai-labs/skills/access-request-intake/SKILL.md

元信息

文件数
0
版本
fa6fc52
Hash
66f28053
收录时间
2026-11-02 10:42

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-11-02 18:53
浙ICP备14020137号-1