Agent skill

Component Composition

by makifbaysal in makifbaysal/tasktrooper

Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library.

Apache-2.0Auto-check passedFrontend & Design

Install Component Composition

skills CLI
$ npx skills add makifbaysal/tasktrooper --skill component-composition -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install makifbaysal/tasktrooper component-composition --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/makifbaysal/tasktrooper.git skills-src && mkdir -p .claude/skills && cp -r skills-src/catalog/agents/frontend-developer/skills/component-composition .claude/skills/component-composition && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
component-composition
GitHub stars
109
Token cost
~1.9k tokens
SKILL.md length
1,020 words
Files
1
Skills in repo
99
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library.

  • Works in 4 steps: Read src/components/INVENTORY.md. → Grep the level folders for the noun… → Found a close match → reuse it, or… → …
  • Tasks that involve React components
  • SKILL.md covers Overview, The Levels, The reuse procedure (every… and Placement decision list, plus 9 more sections
  • Calls npm

What it does

Component Composition is an agent skill from makifbaysal/tasktrooper. Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering React components and Design systems. The repository describes itself as: Local-first agent platform: board + role agents + agent CLI runs (Claude Code, Cursor, Antigravity, OpenCode) or local and API models (Ollama, LM Studio), all on your own Mac. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve React components
  • Tasks that involve Design systems

Example prompts

  • “/component-composition”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Read src/components/INVENTORY.md.
  2. Grep the level folders for the noun (grep -ri button src/components).
  3. Found a close match → reuse it, or extend it with a new variant backward-compatibly (add a cva variant, don't change an existing one's…
  4. Nothing close → create it at the right level (see placement below) and add its INVENTORY.md line in the same commit.

What it can do on your machine

Read from SKILL.md and the folder at commit 09f6258. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Component Composition loads about 1.9k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 1,020 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~42
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from makifbaysal/tasktrooper at commit 09f6258, republished under its Apache-2.0 licence (© makifbaysal). 1,020 words, ~1,932 tokens.

Download SKILL.mdSave it as .claude/skills/component-composition/SKILL.md (or your agent's skills folder).
name
component-composition
description
Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library.
category
frontend

Component Composition (Atomic Design)

Overview

All web UI follows Atomic Design on top of a shared component library. The quality bar is reuse and correct placement: a new screen is assembled from existing atoms and molecules, and anything genuinely new is added at the right level so the next screen reuses it too.

Core principle: Reuse before you build, and place new components at the level the import-direction rule expects — ui → atoms → molecules → organisms → templates → pages.

No design system yet in this repo (no tokens, no components/ levels, no INVENTORY.md)? Lay the foundation with web-design-system-foundation first — this skill assumes it already exists.

The Levels

LevelWhatWeb examples
ui/Vendor layer: generated/wrapped Radix-shadcn primitivesDialog, Popover, Tabs, Tooltip
AtomSmallest reusable UI, no app logic, variants onlyButton, Input, Label, Badge, Icon, Heading, Text, Container, Stack, Link
MoleculeA few atoms as one reusable unitFormField (label+input+error), NavLink, PriceTag, Rating, SearchBar
OrganismA page section composed of molecules/atoms (may contain another organism)SiteHeader, MobileNav, PricingTable, ContactForm, SiteFooter
TemplatePage skeleton: owns the grid + breakpoints, no dataMarketingLayout, DashboardLayout
PageRoute component: data + state wiring, composes templates/organismsPricingPage, ProjectBoardPage

The reuse procedure (every time, before writing a component)

  1. Read src/components/INVENTORY.md.
  2. Grep the level folders for the noun (grep -ri button src/components).
  3. Found a close match → reuse it, or extend it with a new variant backward-compatibly (add a cva variant, don't change an existing one's output).
  4. Nothing close → create it at the right level (see placement below) and add its INVENTORY.md line in the same commit.

Placement decision list

  • Does it fetch data or own app state? → page (or a container that wraps a page-level hook).
  • Is it a page skeleton with no content, owning only the grid/breakpoints? → template.
  • Several molecules/atoms forming a page section (pricing grid, contact form, header)? → organism.
  • Label + input + error, or icon + text pairing — two or three atoms as one reusable unit? → molecule.
  • A single element with variants and no composition (one button, one badge)? → atom.
  • A generated/wrapped Radix or shadcn primitive with no app-specific variants of its own? → ui/.

Import direction

ui ← atoms ← molecules ← organisms ← templates ← pages. A level imports only from levels to its left, plus lib/. Same-level imports are allowed ONLY for organisms (an organism may contain another organism). hooks/ and api/ are imported only by pages/. Where the repo runs ui-guard (from web-design-system-foundation), it enforces this on every build — a violation fails npm run build, it isn't a style note.

Atom API rules

  • No outer margin or absolute positioning — the parent lays out with gap-*; an atom that sets its own margin breaks every layout that reuses it.
  • Variants through cva, never a pile of boolean props; className is merged last via cn() and callers use it for layout only (width, grid placement, alignment) — never to restyle the atom; a new look is a new variant.
  • Every interactive state is styled: hover, focus-visible, active, disabled, aria-invalid, loading where relevant.
  • Accepts ref as a plain prop (React 19) or forwardRef (React 18) — a shared atom that can't take a ref breaks the first caller that needs to measure or focus it.

Composition over prop explosions

Three or more isX booleans on one component is a sign it's actually two components, or that it needs children/named slots instead. Prefer:

tsx
// ❌ boolean-prop explosion
<Card isHighlighted isCompact hasFooter footerText="Save" />

// ✅ composition: the variant is a real prop, content is children/slots
<Card variant="highlighted" size="compact">
  <Card.Footer>Save</Card.Footer>
</Card>

An explicit variant component (PrimaryCard vs <Card variant="primary">) is fine when the two really don't share markup — don't force one component to branch internally just to avoid two small ones.

Templates and organisms are container-aware

A template owns the grid and the breakpoints (sm:/md:/lg: live here) — organisms placed inside it should not assume a specific viewport width. Where an organism's internal layout depends on the space it's given rather than the screen, use a @container query or let the parent grid/flex sizing drive it, so the same organism works in a full-width template and a narrower sidebar slot.

Show full SKILL.md (375 more words)Show less

Existing repos

Map the repo's own folders onto these levels (e.g. components/common/ ≈ atoms+molecules) and follow them as found. Never restructure an existing repo's component layout inside a feature task — if the mapping is genuinely broken, propose a follow-up task instead of doing it inline.

Changing a shared component

Grep every caller first (grep -r "from '@/components/atoms/Button'" src). Keep the change backward-compatible (new optional prop, new variant) or update every caller in the same task — never leave some callers on an old, incompatible shape. Update INVENTORY.md if the component's variants/props changed. npm run build must stay green.

Worked Example

Task: "add a pricing section to the marketing site."

  1. Read INVENTORY.md, grep components/atoms → Button, Badge, Heading already exist. Reuse them.
  2. Nothing in molecules/ prices a plan → new molecule PriceTag (amount + interval) and molecule PlanCard (Heading + PriceTag + Text + Button, props in, onSelect callback out).
  3. Nothing in organisms/ lists several plans → new organism PricingTable (grid of PlanCard, grid-cols-1 sm:grid-cols-2 lg:grid-cols-3, container-aware, no data fetching).
  4. PricingPage (page) loads the plan list, wires onSelectPlan, and composes MarketingLayout (template, already exists) around PricingTable.
  5. Add three INVENTORY.md lines (PriceTag, PlanCard, PricingTable) in the same commit, each with a co-located RTL test (see component-testing).

Only PriceTag, PlanCard, and PricingTable are new; Button, Badge, Heading, and MarketingLayout are pure reuse.

Common Mistakes

  • Rebuilding an existing atom/molecule inline instead of importing it (always grep first).
  • A component that fetches data or reads a global store below the page level — split presentation from data.
  • An atom with its own margin-* or position: absolute.
  • Boolean-prop explosions (isX, isY, isZ) instead of a variant prop or composition.
  • An organism that hardcodes md:/lg: assuming it's always full-width — breaks the day it's reused in a sidebar.
  • Changing a shared component's props without grepping every caller.
  • A component file long enough that you scroll to read it (~150 lines is the point to split).

Red Flags

  • Two screens render visually identical controls built two different ways.
  • A hex color or raw Tailwind palette class (bg-blue-500) inside a component — ui-guard, where it runs, fails the build on this.
  • A molecule or organism importing a hook from hooks/ or a client from api/.
  • A new component added with no INVENTORY.md line.
  • A file over ~150 lines that's still growing.

© makifbaysal, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in catalog/agents/frontend-developer/skills/component-composition of makifbaysal/tasktrooper.

Open the folder on GitHubat commit 09f6258

Compare with similar skills

Component Composition next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Component Composition compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Component Composition this skillmakifbaysal/tasktrooper109—~1.9kAutomated safety check: PassApache-2.0
Creative Tim UI Blockscreativetimofficial/ui12k—~2.1kAutomated safety check: NotesMIT
Skillshare UI Website Stylerunkids/skillshare2.7k—~4.5kAutomated safety check: PassMIT
Animated React Component LibrariesHainrixz/editor-pro-max2611 repos~5.7kAutomated safety check: PassCustom licence
Ark UIBrandon030722/ark-ui-skill265—~3.7kAutomated safety check: PassNone
Fast Typescript Checkinternet-development/www-sacred1.6k—~4.3kAutomated safety check: PassMIT

Similar skills

  • Creative Tim UI Blocks

    creativetimofficial/ui

    Helps install, generate and review Creative Tim UI blocks: shadcn/ui-based React and Tailwind sections that follow a restrained, production-minded design philosophy.

    12k GitHub stars~2.1k tokensUpdated 6 mo ago
    Frontend & DesignAuto-check: notes
  • Skillshare UI Website Style

    runkids/skillshare

    Skillshare frontend design system for the React dashboard (ui/) and Docusaurus website (website/).

    2.7k GitHub stars~4.5k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Animated React Component Libraries

    Hainrixz/editor-pro-max

    Helps choose and drop in animated React components from Magic UI and React Bits for landing pages, marketing sites and dashboards, instead of hand-coding animations.

    261 GitHub starsUsed in 1 repo~5.7k tokens
    Frontend & DesignAuto-check passed
  • Ark UI

    Brandon030722/ark-ui-skill

    Design, implement, audit, or refactor web and game-adjacent interfaces using an evidence-based Hypergryph visual language with two independent choices: product family and application depth (1…

    265 GitHub stars~3.7k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed
  • Fast Typescript Check

    internet-development/www-sacred

    Keep www-sacred's TypeScript fast to type-check and fast to run.

    1.6k GitHub stars~4.3k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Use UI Kit

    tetherto/pearpass-app-desktop

    A skill your agent uses whenever creating or editing UI in this repo — React components, modals, dialogs, forms, buttons, inputs, typography, styling, icons, or any .tsx/.jsx work.

    538 GitHub stars~3.3k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed

More from makifbaysal/tasktrooper

All 99 skills in this repo
  • API Contract Testing

    makifbaysal/tasktrooper

    A skill your agent uses when a task adds or changes an HTTP endpoint, its request/response shape, status codes, auth or error format - the request matrix, curl templates and what counts as a…

    109 GitHub starsUsed in 1 repo~771 tokens
    Auto-check passed
  • Acceptance Criteria Gwt

    makifbaysal/tasktrooper

    A skill your agent uses when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases

    109 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Accessibility Check

    makifbaysal/tasktrooper

    A skill your agent uses when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task

    109 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Analiz Gate

    makifbaysal/tasktrooper

    A skill your agent uses when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation

    109 GitHub stars~641 tokensUpdated today
    Auto-check passed
  • Analiz HTML Report

    makifbaysal/tasktrooper

    A skill your agent uses when you write or revise the analiz deliverable - the ONE self-contained HTML report (spec and plan as sections) a human reviews passage by passage

    109 GitHub stars~3.9k tokensUpdated today
    Auto-check passed
  • Analiz Human Review Gate

    makifbaysal/tasktrooper

    A skill your agent uses when you finish an analiz report - the human must approve the analysis before any implementation task is created, via the analizreview column

    109 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Questions about Component Composition

What does Component Composition do?

Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library. Component Composition is an agent skill from makifbaysal/tasktrooper. Use on every UI change - Atomic Design levels, reuse-before-build, correct placement, and import direction through the shared component library.

When should I use Component Composition?

Component Composition fits situations like: tasks that involve React components; tasks that involve Design systems.

How do I install Component Composition in Claude Code?

Run `npx skills add makifbaysal/tasktrooper --skill component-composition -a claude-code`. Or copy the skill folder (catalog/agents/frontend-developer/skills/component-composition in makifbaysal/tasktrooper) into .claude/skills/component-composition in your project. Claude Code loads it when a task matches its description.

How do I install Component Composition in Codex?

Run `npx skills add makifbaysal/tasktrooper --skill component-composition -a codex`. Or copy the skill folder (catalog/agents/frontend-developer/skills/component-composition in makifbaysal/tasktrooper) into .agents/skills/component-composition in your project. Codex loads it when a task matches its description.

Can I use Component Composition in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add makifbaysal/tasktrooper --skill component-composition -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/component-composition, .gemini/skills/component-composition, .github/skills/component-composition and .opencode/skills/component-composition in your project.

What does Component Composition need to run?

Going by SKILL.md and its folder, Component Composition needs the command-line tools its instructions call (npm).

Does Component Composition access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Component Composition safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Component Composition use?

Component Composition is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Component Composition use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Component Composition?

Skills that share tags, products or a category with Component Composition: Creative Tim UI Blocks (creativetimofficial/ui, 12k stars), Skillshare UI Website Style (runkids/skillshare, 2.7k stars), Animated React Component Libraries (Hainrixz/editor-pro-max, 261 stars) and Ark UI (Brandon030722/ark-ui-skill, 265 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Component Composition?

makifbaysal (a GitHub user) maintains it in makifbaysal/tasktrooper, which has 109 GitHub stars. The repository holds 99 skills in this directory. The repository was last updated on October 7, 2026.

Source: makifbaysal/tasktrooper on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.