[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PJKGYD7JSXFYW3TMKTACKR":3,"skill-same:01M6PJKGYD7JSXFYW3TMKTACKR":89},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":14,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M6PJKGYD7JSXFYW3TMKTACKR","rspec-skill",null,"Generates RSpec tests in Ruby with describe\u002Fcontext\u002Fit blocks, matchers, let\u002Fbefore hooks, and mocking. Use when user mentions \"RSpec\", \"describe do\", \"expect().to\", \"Ruby test\". Triggers on: \"RSpec\", \"expect().to eq()\", \"describe do\", \"Ruby test\", \"spec file\".","headmktlucca-ui\u002Fneuroads-lp","headmktlucca-ui","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F247379838?v=4","01M6PDVAV6M1W96D1SR1PDF8CS","NeuroAds","01M6PDVAZ4P281GNDKD45CYTF5",0,"MIT","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Frspec-skill\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"rspec skill","tests","eq","with","unit-testing","blocks","mocking","it","unit","triggers","testing","do","hooks","use","user","context","ruby","file","test","spec","2026-11-10 10:12:30",false,"---\nname: rspec-skill\ndescription: >\n  Generates RSpec tests in Ruby with describe\u002Fcontext\u002Fit blocks, matchers,\n  let\u002Fbefore hooks, and mocking. Use when user mentions \"RSpec\", \"describe do\",\n  \"expect().to\", \"Ruby test\". Triggers on: \"RSpec\", \"expect().to eq()\",\n  \"describe do\", \"Ruby test\", \"spec file\".\nlanguages:\n  - Ruby\ncategory: unit-testing\nlicense: MIT\nmetadata:\n  author: TestMu AI\n  version: \"1.0\"\n---\n\n# RSpec Testing Skill\n\n## Core Patterns\n\n### Basic Test\n\n```ruby\nRSpec.describe Calculator do\n  subject(:calculator) { described_class.new }\n\n  describe '#add' do\n    it 'adds two positive numbers' do\n      expect(calculator.add(2, 3)).to eq(5)\n    end\n\n    it 'handles negative numbers' do\n      expect(calculator.add(-1, 1)).to eq(0)\n    end\n  end\n\n  describe '#divide' do\n    it 'divides evenly' do\n      expect(calculator.divide(10, 2)).to eq(5)\n    end\n\n    it 'raises on zero divisor' do\n      expect { calculator.divide(10, 0) }.to raise_error(ZeroDivisionError)\n    end\n  end\nend\n```\n\n### Matchers\n\n```ruby\n# Equality\nexpect(actual).to eq(expected)           # ==\nexpect(actual).to eql(expected)          # eql?\nexpect(actual).to equal(expected)        # equal? (same object)\nexpect(actual).to be(expected)           # equal?\n\n# Comparison\nexpect(value).to be > 5\nexpect(value).to be_between(1, 10).inclusive\n\n# Truthiness\nexpect(value).to be_truthy\nexpect(value).to be_falsey\nexpect(value).to be_nil\n\n# Collections\nexpect(array).to include(3)\nexpect(array).to contain_exactly(1, 2, 3)\nexpect(array).to match_array([3, 1, 2])\nexpect(hash).to include(name: 'Alice')\n\n# Strings\nexpect(str).to include('hello')\nexpect(str).to start_with('He')\nexpect(str).to match(\u002F\\d+\u002F)\n\n# Types\nexpect(obj).to be_a(String)\nexpect(obj).to be_an_instance_of(MyClass)\n\n# Exceptions\nexpect { method }.to raise_error(StandardError)\nexpect { method }.to raise_error(StandardError, \u002Fmessage\u002F)\n\n# Change\nexpect { user.activate }.to change(user, :active).from(false).to(true)\nexpect { list.push(1) }.to change(list, :size).by(1)\n```\n\n### Hooks and Let\n\n```ruby\nRSpec.describe UserService do\n  let(:repo) { instance_double(UserRepository) }\n  let(:service) { described_class.new(repo) }\n\n  before(:each) do\n    allow(repo).to receive(:save).and_return(true)\n  end\n\n  after(:each) { cleanup }\n  before(:all) { setup_database }\n  after(:all) { teardown_database }\n\n  context 'when creating a user' do\n    it 'saves to repository' do\n      service.create('Alice', 'alice@test.com')\n      expect(repo).to have_received(:save).once\n    end\n  end\nend\n```\n\n### Mocking and Stubbing\n\n```ruby\n# Doubles\nuser = double('User', name: 'Alice', email: 'alice@test.com')\nuser = instance_double(User, name: 'Alice')\n\n# Stubs\nallow(service).to receive(:fetch).and_return(data)\nallow(service).to receive(:fetch).with('id').and_return(user)\n\n# Expectations\nexpect(service).to receive(:save).once\nexpect(service).to receive(:notify).with('alice@test.com')\nexpect(service).not_to receive(:delete)\n```\n\n### Shared Examples\n\n```ruby\nRSpec.shared_examples 'a valid model' do\n  it { is_expected.to be_valid }\n  it { is_expected.to respond_to(:save) }\nend\n\nRSpec.describe User do\n  subject { described_class.new(name: 'Alice') }\n  it_behaves_like 'a valid model'\nend\n```\n\n### Anti-Patterns\n\n| Bad | Good | Why |\n|-----|------|-----|\n| `before` with heavy setup | `let` (lazy) | Only evaluates when used |\n| No contexts | `context 'when...'` | Clear scenarios |\n| Instance variables | `let` blocks | Cleaner, lazier |\n| `should` syntax | `expect().to` | Modern RSpec |\n\n## Setup: `gem install rspec` then `rspec --init`\n## Run: `bundle exec rspec` or `rspec spec\u002Fmodels\u002Fuser_spec.rb`\n## Config: `.rspec` file with `--format documentation --color`\n\n## Deep Patterns\n\nFor advanced patterns, debugging guides, CI\u002FCD integration, and best practices,\nsee `reference\u002Fplaybook.md`.\n","# RSpec Testing Skill\n\n## Core Patterns\n\n### Basic Test\n\n```ruby\nRSpec.describe Calculator do\n  subject(:calculator) { described_class.new }\n\n  describe '#add' do\n    it 'adds two positive numbers' do\n      expect(calculator.add(2, 3)).to eq(5)\n    end\n\n    it 'handles negative numbers' do\n      expect(calculator.add(-1, 1)).to eq(0)\n    end\n  end\n\n  describe '#divide' do\n    it 'divides evenly' do\n      expect(calculator.divide(10, 2)).to eq(5)\n    end\n\n    it 'raises on zero divisor' do\n      expect { calculator.divide(10, 0) }.to raise_error(ZeroDivisionError)\n    end\n  end\nend\n```\n\n### Matchers\n\n```ruby\n# Equality\nexpect(actual).to eq(expected)           # ==\nexpect(actual).to eql(expected)          # eql?\nexpect(actual).to equal(expected)        # equal? (same object)\nexpect(actual).to be(expected)           # equal?\n\n# Comparison\nexpect(value).to be > 5\nexpect(value).to be_between(1, 10).inclusive\n\n# Truthiness\nexpect(value).to be_truthy\nexpect(value).to be_falsey\nexpect(value).to be_nil\n\n# Collections\nexpect(array).to include(3)\nexpect(array).to contain_exactly(1, 2, 3)\nexpect(array).to match_array([3, 1, 2])\nexpect(hash).to include(name: 'Alice')\n\n# Strings\nexpect(str).to include('hello')\nexpect(str).to start_with('He')\nexpect(str).to match(\u002F\\d+\u002F)\n\n# Types\nexpect(obj).to be_a(String)\nexpect(obj).to be_an_instance_of(MyClass)\n\n# Exceptions\nexpect { method }.to raise_error(StandardError)\nexpect { method }.to raise_error(StandardError, \u002Fmessage\u002F)\n\n# Change\nexpect { user.activate }.to change(user, :active).from(false).to(true)\nexpect { list.push(1) }.to change(list, :size).by(1)\n```\n\n### Hooks and Let\n\n```ruby\nRSpec.describe UserService do\n  let(:repo) { instance_double(UserRepository) }\n  let(:service) { described_class.new(repo) }\n\n  before(:each) do\n    allow(repo).to receive(:save).and_return(true)\n  end\n\n  after(:each) { cleanup }\n  before(:all) { setup_database }\n  after(:all) { teardown_database }\n\n  context 'when creating a user' do\n    it 'saves to repository' do\n      service.create('Alice', 'alice@test.com')\n      expect(repo).to have_received(:save).once\n    end\n  end\nend\n```\n\n### Mocking and Stubbing\n\n```ruby\n# Doubles\nuser = double('User', name: 'Alice', email: 'alice@test.com')\nuser = instance_double(User, name: 'Alice')\n\n# Stubs\nallow(service).to receive(:fetch).and_return(data)\nallow(service).to receive(:fetch).with('id').and_return(user)\n\n# Expectations\nexpect(service).to receive(:save).once\nexpect(service).to receive(:notify).with('alice@test.com')\nexpect(service).not_to receive(:delete)\n```\n\n### Shared Examples\n\n```ruby\nRSpec.shared_examples 'a valid model' do\n  it { is_expected.to be_valid }\n  it { is_expected.to respond_to(:save) }\nend\n\nRSpec.describe User do\n  subject { described_class.new(name: 'Alice') }\n  it_behaves_like 'a valid model'\nend\n```\n\n### Anti-Patterns\n\n| Bad | Good | Why |\n|-----|------|-----|\n| `before` with heavy setup | `let` (lazy) | Only evaluates when used |\n| No contexts | `context 'when...'` | Clear scenarios |\n| Instance variables | `let` blocks | Cleaner, lazier |\n| `should` syntax | `expect().to` | Modern RSpec |\n\n## Setup: `gem install rspec` then `rspec --init`\n## Run: `bundle exec rspec` or `rspec spec\u002Fmodels\u002Fuser_spec.rb`\n## Config: `.rspec` file with `--format documentation --color`\n\n## Deep Patterns\n\nFor advanced patterns, debugging guides, CI\u002FCD integration, and best practices,\nsee `reference\u002Fplaybook.md`.\n",{"name":5,"license":15,"category":31,"metadata":52,"languages":55,"description":57},{"author":53,"version":54},"TestMu AI","1.0",[56],"Ruby","Generates RSpec tests in Ruby with describe\u002Fcontext\u002Fit blocks, matchers, let\u002Fbefore hooks, and mocking. Use when user mentions \"RSpec\", \"describe do\", \"expect().to\", \"Ruby test\". Triggers on: \"RSpec\", \"expect().to eq()\", \"describe do\", \"Ruby test\", \"spec file\".\n","main","7a940b8e5af16c95e5c190a524421d32fc7445a9",".agent\u002Fskills\u002Frspec-skill","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui","https:\u002F\u002Fneuroads.com.br","2026-08-12 00:42:44",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add headmktlucca-ui\u002Fneuroads-lp --skill rspec-skill",{"tool":71,"command":72},"bunx","bunx skills add headmktlucca-ui\u002Fneuroads-lp --skill rspec-skill",{"tool":74,"command":75},"pnpm","pnpm dlx skills add headmktlucca-ui\u002Fneuroads-lp --skill rspec-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Frspec-skill\u002FSKILL.md",true,[79,85],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"reference\u002Fadvanced-patterns.md","REFERENCE","参考文档",4191,"https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Frspec-skill\u002Freference\u002Fadvanced-patterns.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"reference\u002Fplaybook.md",14834,"https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.agent\u002Fskills\u002Frspec-skill\u002Freference\u002Fplaybook.md",[90,103,127,153,171,206],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":98,"publishedAt":47},"01M6PTDCZTXTGSTX4RFK901YSZ","xunit-skill","Generates xUnit.net tests in C#. Covers Fact\u002FTheory, constructor injection, IClassFixture, and FluentAssertions. Use when user mentions \"xUnit\", \"[Fact]\", \"[Theory]\", \"Assert.Equal\", \"C# xUnit\". Triggers on: \"xUnit\", \"[Fact]\", \"[Theory]\", \"Assert.Equal C#\", \"xUnit.net\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fxunit-skill\u002FSKILL.md",[96,97],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[99,100,37,101,41,40,28,36,35,31,102],"xunit","xunit skill","injection","C#",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":111,"publishedAt":47},"01M6PTCB59ZTG5FTMWGPYEMMBP","xcuitest-skill","Generates XCUITest UI tests for iOS\u002FiPadOS apps in Swift. Apple's native testing framework for reliable, fast UI automation. Supports local simulators and TestMu AI cloud real devices. Use when user mentions \"XCUITest\", \"XCTest\", \"iOS UI test\", \"Swift test\", \"XCUIApplication\". Triggers on: \"XCUITest\", \"XCTest UI\", \"iOS UI test\", \"Swift UI test\", \"XCUIApplication\", \"TestMu\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fxcuitest-skill\u002FSKILL.md",[109,110],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[112,113,37,114,45,115,116,117,40,118,119,120,121,122,28,36,123,124,125,126],"xcuitest","xcuitest skill","automation","testing framework","ios","devices","mobile","mobile-testing","ui test","local","apple","apps","native","for","objective",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":137,"publishedAt":47},"01M6PTATMNTY9NF4J7KSR76YK6","world-builder","Create and manage generative game zones for Dorothy's Pokemon-style world. Use this skill when creating, updating, or designing game worlds via MCP tools.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fworld-builder\u002FSKILL.md",[133,136],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[138,139,140,141,142,143,144,145,40,146,147,148,149,150,151,125,152],"builder","world","world builder","MCP","create","mcp tools","Tools","game","pokemon","manage","style","via","theme","zone","generative",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":161,"publishedAt":47},"01M6PT9Z92JTSQEHE1QR0NNW5F","webdriverio-skill","Generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions \"WebdriverIO\", \"WDIO\", \"wdio.conf\", \"browser.url\", \"$\", \"$$\". Triggers on: \"WebdriverIO\", \"WDIO\", \"wdio\", \"browser.$\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwebdriverio-skill\u002FSKILL.md",[159,160],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[162,37,163,114,164,165,166,167,41,40,168,121,28,36,169,170],"webdriverio skill","typescript","javascript","browser","cloud","e2e","e2e-testing","URL","conf",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":186,"publishedAt":47},"01M6PT9NVK36ZWCQ69YXK3FR4K","web-design-guidelines","Web platform design and accessibility guidelines. Use when building web interfaces, auditing accessibility, implementing responsive layouts, or reviewing web UI code. Triggers on tasks involving HTML, CSS, web components, WCAG compliance, responsive design, or web performance.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fweb\u002FSKILL.md",[177,180,181],{"categoryNo":178,"categoryName":179,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":182,"categoryName":183,"taxonomyType":184,"taxonomyTypeDesc":185},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,36,205],"design","web","guidelines","web design guidelines","web design","css","performance","components","web components","tasks","code","web performance","ui","platform design","html","responsive design","responsive","platform","implementing",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":214,"publishedAt":47},"01M6PT9A3JKRE3X34276F2FW5R","watchos-design-guidelines","Apple Human Interface Guidelines for Apple Watch. Use when building watchOS apps, complications, or workout features. Triggers on tasks involving Watch UI, Digital Crown, glanceable interfaces, or wrist-based interactions.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwatchos\u002FSKILL.md",[212,213],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":182,"categoryName":183,"taxonomyType":184,"taxonomyTypeDesc":185},[187,189,215,196,199,40,216,217,122,204,218,36,123,219,125,220,221],"watchos design guidelines","workout","human","watch","interface","platform-design","features"]