mcpField
T
tailwind-coder

tailwind-coder

github.com/majesticlabs-dev设计与 UI5051 次安装7 周前更新
代码仓库

关于 tailwind-coder

用于为 Rails 应用应用 Tailwind CSS 样式的技能,帮助 Rails 开发者使用实用类和响应式模式,并提供常见视图及可复用辅助方法示例。

主要功能

  1. 01Rails 视图样式模式
  2. 02链接和表单辅助方法示例
  3. 03布局与组件模式
  4. 04响应式断点指南
  5. 05可复用视图辅助方法

适用场景

  1. 01为 Rails 表单和链接添加样式
  2. 02构建响应式 Rails 页面布局
  3. 03将重复样式提取为辅助方法

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill tailwind-coder

安装后在 Claude Code 中输入/tailwind-coder确认已加载。

详细介绍

Tailwind 编码器

为 Rails 应用添加 Tailwind CSS 样式。有效地使用工具类,并遵循响应式设计模式。

Rails 集成

设置检查
# Verify Tailwind is installed
cat config/tailwind.config.js
cat app/assets/stylesheets/application.tailwind.css
常见 Rails 模式

链接辅助方法:

<%= link_to "Home", root_path, class: "text-blue-600 hover:text-blue-800 underline" %>

<%= link_to users_path, class: "inline-flex items-center px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700" do %>
  <svg class="w-4 h-4 mr-2">...</svg>
  View Users
<% end %>

表单辅助方法:

<%= form_with model: @user, class: "space-y-6" do |f| %>
  <div>
    <%= f.label :email, class: "block text-sm font-medium text-gray-700" %>
    <%= f.email_field :email, class: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500" %>
  </div>

  <div>
    <%= f.submit "Save", class: "w-full px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2" %>
  </div>
<% end %>

Flash 消息:

<% flash.each do |type, message| %>
  <div class="<%= flash_class(type) %> p-4 rounded-md mb-4">
    <%= message %>
  </div>
<% end %>

<%# Helper %>
<%
def flash_class(type)
  case type.to_sym
  when :notice then "bg-green-100 text-green-800"
  when :alert then "bg-red-100 text-red-800"
  else "bg-blue-100 text-blue-800"
  end
end
%>

布局模式

页面容器
<main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
  <%= yield %>
</main>
卡片
<div class="bg-white shadow rounded-lg overflow-hidden">
  <div class="px-4 py-5 sm:p-6">
    <h3 class="text-lg font-medium text-gray-900">Card Title</h3>
    <p class="mt-2 text-sm text-gray-500">Card content goes here.</p>
  </div>
</div>
网格
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
  <%= render @items %>
</div>
堆叠(垂直间距)
<div class="space-y-6">
  <div>First item</div>
  <div>Second item</div>
  <div>Third item</div>
</div>

组件模式

按钮变体
<%# Primary %>
<button class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  Primary
</button>

<%# Secondary %>
<button class="px-4 py-2 bg-white text-gray-700 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  Secondary
</button>

<%# Danger %>
<button class="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2">
  Delete
</button>
表单输入框
<input type="text"
  class="block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 sm:text-sm"
  placeholder="Enter text...">

<%# With error %>
<input type="text"
  class="block w-full rounded-md border-red-300 text-red-900 placeholder-red-300 focus:border-red-500 focus:ring-red-500 sm:text-sm">
<p class="mt-2 text-sm text-red-600">This field is required.</p>
导航
<nav class="bg-white shadow">
  <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
    <div class="flex justify-between h-16">
      <div class="flex">
        <%= link_to root_path, class: "flex items-center" do %>
          <span class="text-xl font-bold text-gray-900">Logo</span>
        <% end %>

        <div class="hidden sm:ml-6 sm:flex sm:space-x-8">
          <%= link_to "Dashboard", dashboard_path, class: "inline-flex items-center px-1 pt-1 border-b-2 border-blue-500 text-sm font-medium text-gray-900" %>
          <%= link_to "Users", users_path, class: "inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium text-gray-500 hover:border-gray-300 hover:text-gray-700" %>
        </div>
      </div>
    </div>
  </div>
</nav>
表格
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 rounded-lg">
  <table class="min-w-full divide-y divide-gray-300">
    <thead class="bg-gray-50">
      <tr>
        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Name</th>
        <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Email</th>
        <th class="relative px-6 py-3"><span class="sr-only">Actions</span></th>
      </tr>
    </thead>
    <tbody class="bg-white divide-y divide-gray-200">
      <% @users.each do |user| %>
        <tr>
          <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900"><%= user.name %></td>
          <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"><%= user.email %></td>
          <td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
            <%= link_to "Edit", edit_user_path(user), class: "text-blue-600 hover:text-blue-900" %>
          </td>
        </tr>
      <% end %>
    </tbody>
  </table>
</div>

响应式设计

使用断点前缀:sm:、md:、lg:、xl:、2xl:

<%# Mobile-first: stack on mobile, side-by-side on larger %>
<div class="flex flex-col md:flex-row md:space-x-6">
  <div class="w-full md:w-1/3">Sidebar</div>
  <div class="w-full md:w-2/3">Main content</div>
</div>

<%# Hide on mobile %>
<div class="hidden md:block">Only visible on md and up</div>

<%# Show only on mobile %>
<div class="md:hidden">Only visible on mobile</div>

深色模式

<%# Enable in tailwind.config.js: darkMode: 'class' %>
<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-white">
  Content
</div>

辅助方法

为重复使用的模式创建视图辅助方法:

# app/helpers/tailwind_helper.rb
module TailwindHelper
  def btn_primary(text, path, **options)
    link_to text, path, class: "px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 #{options[:class]}", **options.except(:class)
  end

  def card(&block)
    content_tag :div, class: "bg-white shadow rounded-lg p-6", &block
  end
end

输出格式

添加样式后:

  1. 更改 - 已应用样式的修改文件
  2. 使用的模式 - 布局和组件模式
  3. 响应式设计 - 断点和适配方式
  4. 辅助方法 - 提取的辅助方法(如有)

评论

支持 Markdown