Open source, MIT licensed, Agent Skills format, v0.1.0

A frontend craft skill for AI coding agents.

Weftline is one folder with one SKILL.md. Your coding agent reads it before touching UI code and follows five passes: Unpick, Warp, Weave, Finish, Proof. Hard rules forbid fabricated metrics, fake social proof, and decorative motion. A motion ladder ranks techniques from plain CSS to the Web Animations API. Plain Markdown, no runtime, no dependencies.

workflow passes
5
workflow passes
depth tiers
4
depth tiers
validation checks
49
validation checks
files in the package
94
files in the package

Counts are read from the repository at v0.1.0 when this page loads. The Verify section below shows the command that reproduces them.

Why agent-built interfaces all feel the same

The problem is not model capability. It is that three inputs never make it into the prompt.

01

No explicit craft bar

Most briefs say make it look good. The model answers with the same interface every time: a centered card, a soft shadow, one safe gradient. The skill forces explicit decisions about hierarchy, spacing, and states before any code exists.

02

Details get averaged away

Interaction states, focus indicators, and motion intent are the first things generic output drops. Each pass writes them down as requirements, not leftovers.

03

Claims go unverified

Generated pages invent metrics, reviews, and counters that no backend supports. The hard rules forbid all three, and the final pass requires viewing the result at two widths before reporting done.

Five passes, one thread

The weft is the thread carried through every pass of a weave. The same idea runs through every task the skill touches, from a one-line fix to a full design system.

01

Unpick

Read the real requirements and the real codebase before writing anything. Ambiguities are written down, not guessed.

02

Warp

Plan hierarchy, breakpoints, interaction states, and motion before any interface code exists.

03

Weave

Semantic HTML first, the project's own design tokens first, responsive while building, not after.

04

Finish

Purposeful motion with a reduced-motion path, a complete state matrix, and copy that makes no unsupported claims.

05

Proof

Run the checks, view the result at desktop and mobile widths, then report verified, unverified, and blocked items.

Adaptive depth, four tiers

The workflow scales down for one-line fixes instead of imposing ceremony on every task.

TierTypical tasks
PatchSmall fixes, copy edits, minor accessibility corrections
PageA new page, view, or section in an existing system
SystemMulti-component work, feature areas, design-system additions
MotionAnimation-heavy work of any size

Hard rules the agent must obey

The same standards this site holds itself to.

Never

  • Fake testimonials, reviews, client logos, or trust badges
  • Invented metrics, usage counters, or unmeasured performance claims
  • Vague hero text that fails to explain what the product does
  • Emoji used as interface icons
  • Purple gradients or gradient-heavy styling without a design reason
  • Pill-shaped buttons as a default geometry
  • Scroll hijacking, custom cursors, decorative motion
  • Fake progress indicators or simulated functionality

Always

  • Deliberate typography, a coherent spacing scale, clear hierarchy
  • Visible focus indicators and full keyboard operability
  • Responsive layouts verified at narrow and wide widths
  • Honest reporting: verified, unverified, or blocked, never invented

What ships in the folder

This repository contains exactly this tree, nothing generated and nothing left out.

weftline/94 files
├── .github/
│   └── workflows/
│       ├── deploy.yml
│       └── validate.yml
├── docs/
│   ├── banner.svg
│   └── pipeline.svg
├── prisma/
│   └── schema.prisma
├── public/
│   └── robots.txt
├── src/
│   ├── app/
│   │   ├── globals.css
│   │   ├── icon.svg
│   │   ├── layout.tsx
│   │   └── page.tsx
│   ├── components/
│   │   ├── ui/
│   │   │   ├── accordion.tsx
│   │   │   ├── alert-dialog.tsx
│   │   │   ├── alert.tsx
│   │   │   ├── aspect-ratio.tsx
│   │   │   ├── avatar.tsx
│   │   │   ├── badge.tsx
│   │   │   ├── breadcrumb.tsx
│   │   │   ├── button.tsx
│   │   │   ├── calendar.tsx
│   │   │   ├── card.tsx
│   │   │   ├── carousel.tsx
│   │   │   ├── chart.tsx
│   │   │   ├── checkbox.tsx
│   │   │   ├── collapsible.tsx
│   │   │   ├── command.tsx
│   │   │   ├── context-menu.tsx
│   │   │   ├── dialog.tsx
│   │   │   ├── drawer.tsx
│   │   │   ├── dropdown-menu.tsx
│   │   │   ├── form.tsx
│   │   │   ├── hover-card.tsx
│   │   │   ├── input-otp.tsx
│   │   │   ├── input.tsx
│   │   │   ├── label.tsx
│   │   │   ├── menubar.tsx
│   │   │   ├── navigation-menu.tsx
│   │   │   ├── pagination.tsx
│   │   │   ├── popover.tsx
│   │   │   ├── progress.tsx
│   │   │   ├── radio-group.tsx
│   │   │   ├── resizable.tsx
│   │   │   ├── scroll-area.tsx
│   │   │   ├── select.tsx
│   │   │   ├── separator.tsx
│   │   │   ├── sheet.tsx
│   │   │   ├── sidebar.tsx
│   │   │   ├── skeleton.tsx
│   │   │   ├── slider.tsx
│   │   │   ├── sonner.tsx
│   │   │   ├── switch.tsx
│   │   │   ├── table.tsx
│   │   │   ├── tabs.tsx
│   │   │   ├── textarea.tsx
│   │   │   ├── toast.tsx
│   │   │   ├── toaster.tsx
│   │   │   ├── toggle-group.tsx
│   │   │   ├── toggle.tsx
│   │   │   └── tooltip.tsx
│   │   └── weftline/
│   │       ├── copy-button.tsx
│   │       └── legal-dialog.tsx
│   ├── hooks/
│   │   ├── use-mobile.ts
│   │   └── use-toast.ts
│   └── lib/
│       └── utils.ts
├── weftline/
│   ├── .github/
│   │   ├── ISSUE_TEMPLATE/
│   │   │   ├── bug_report.md
│   │   │   └── feature_request.md
│   │   ├── workflows/
│   │   │   └── validate.yml
│   │   └── PULL_REQUEST_TEMPLATE.md
│   ├── examples/
│   │   ├── anti-patterns.md
│   │   └── good-workflow.md
│   ├── references/
│   │   ├── accessibility-and-performance.md
│   │   ├── compatibility-and-installation.md
│   │   ├── design-principles.md
│   │   └── motion-engineering.md
│   ├── scripts/
│   │   └── validate_skill.py
│   ├── CHANGELOG.md
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── LICENSE
│   ├── README.md
│   ├── SECURITY.md
│   └── SKILL.md
├── .gitignore
├── bun.lock
├── components.json
├── eslint.config.mjs
├── LICENSE
├── next-env.d.ts
├── next.config.ts
├── package.json
├── page.tsx
├── postcss.config.mjs
├── README.md
├── tailwind.config.ts
└── tsconfig.json
  • weftline/SKILL.md

    The method itself: five passes, depth tiers, hard rules, motion ladder. 204 lines.

  • weftline/references/design-principles.md

    Visual hierarchy, layout, color, typography, spacing, and the design decision checklist.

  • weftline/references/motion-engineering.md

    The motion ladder in depth: purpose test, technique comparison, performance and lifecycle rules.

  • weftline/references/accessibility-and-performance.md

    Accessibility requirements, responsive rules, and performance practices.

  • weftline/references/compatibility-and-installation.md

    Install paths per agent environment, with the verification status of every claim.

  • weftline/scripts/validate_skill.py

    49 structural and metadata checks. Python 3.7+ standard library only.

  • weftline/examples/good-workflow.md

    Worked examples across the depth tiers.

  • weftline/examples/anti-patterns.md

    Requests the skill must refuse or correct, and how to respond instead.

  • README.md

    Repository overview with the animated method map and install steps.

  • docs/pipeline.svg

    Animated diagram of the five passes, used by the README.

  • .github/workflows/validate.yml

    CI workflow: validates the skill on every push.

  • src/app/page.tsx

    This website: a Next.js 16 application presenting the method.

Check every claim yourself

No testimonials, no star ratings, no usage counters. The evidence is the folder itself, plus commands that verify it in seconds. Standard library only, no dependencies.

Skill validator

Structural checks over frontmatter, links, and content invariants. Python 3.7 or newer, nothing else.

python3 weftline/scripts/validate_skill.py

File count

94 files in this repository, counted by walking it. Clone it from GitHub to get exactly these files and nothing else.

git clone https://github.com/izynu/weftline.git

Checksum

The site serves no archive of its own, so there is nothing to hash here. Verify the folder itself with the validator instead.

python3 weftline/scripts/validate_skill.py

Install on any agent

Three steps, under a minute. Weftline is a folder, not a package: copy it into any location your agent scans, then reload the skill list. Project scope overrides user scope.

  1. 1

    Get the folder

    Download the archive and unzip it, or clone the repository: either way you get the full package, the website and the skill together. The skill is the weftline folder inside it. That inner folder name must stay weftline: the frontmatter name field must match the directory name.

    Download ZIP from GitHub
  2. 2

    Copy it where your agent looks

    Pick the scope that matches how you work. The cross-agent .agents paths come from the Agent Skills specification; .claude/skills/ is the convention many implementations scan.

    # 1. Download the repository as a ZIP
    curl -fsSL -o weftline.zip https://github.com/izynu/weftline/archive/refs/heads/main.zip
    unzip weftline.zip
    
    # 2a. Copy the skill folder into the project (recommended, shared with your team)
    cp -r weftline-main/weftline /path/to/your-project/.agents/skills/
    
    # 2b. Or install for yourself across all projects
    cp -r weftline-main/weftline ~/.agents/skills/
    
    # 3. Verify the bundle
    python3 weftline-main/weftline/scripts/validate_skill.py
  3. 3

    Validate before you rely on it

    Run the bundled validator after any install. It needs Python 3.7 or newer and no packages, and it exits nonzero on any structural problem.

    python3 weftline/scripts/validate_skill.py
    # Expected last line: Result: PASS  (49 of 49 checks)

After installing: reload your agent's skill list, then test activation with a real prompt, for example: "Build a pricing page for this project." Activation quality depends on the agent's own retrieval, so test it once before relying on it.

What Weftline is not

Weftline is not a framework, a plugin market, or a hosted service. There is no runtime and nothing to execute inside your app. Each skill is a folder of Markdown with frontmatter: copy it where your agent can read it, and the agent follows it. The Agent Skills format works with Claude Code natively, and with any other tool that can read project files.

Questions