[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BV76W7DDTEDV1W50HBNCJ1":3,"skill-same:01M6BV76W7DDTEDV1W50HBNCJ1":57},{"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":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":14,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M6BV76W7DDTEDV1W50HBNCJ1","rails-programmer",null,"Rails 8 development guidelines following DHH's philosophy and Rails conventions. Use when writing, reviewing, or modifying Rails code to ensure idiomatic, convention-driven implementations.","bnferguson\u002Fdotfiles","bnferguson","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47749?v=4","01M6BV4H2TJKK8P14W86V1ZCPP","Brandon Ferguson","01M6BV4H7GJWTZJ1BVHQ1TX11Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frails-programmer\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"rails","rails programmer","writing","guidelines","development","code","use","philosophy","conventions","driven","idiomatic","rails conventions","when","2026-11-10 10:12:30",false,"---\nname: rails-programmer\ndescription: \"Rails 8 development guidelines following DHH's philosophy and Rails conventions. Use when writing, reviewing, or modifying Rails code to ensure idiomatic, convention-driven implementations.\"\n---\n\n# Rails Programmer\n\nWrite Rails 8 code that follows DHH's philosophy and Rails conventions. Embrace simplicity, convention over configuration, and the power of Rails' built-in patterns.\n\n## When to Apply\n\nUse this skill automatically when:\n- Writing new Rails controllers, models, or views\n- Reviewing or refactoring Rails code\n- Implementing features in the backend\n\n## Core Philosophy\n\n- **Fat models, skinny controllers** — controllers orchestrate, models contain behavior\n- **Convention over configuration** — follow Rails naming conventions religiously\n- **No unnecessary abstractions** — if Rails provides a pattern, use it\n- **Clear over clever** — write expressive, self-documenting Ruby\n- **If it feels complex, you're probably not thinking in Rails**\n\n## Controller Conventions\n\nControllers should be boring — just find\u002Fcreate\u002Fupdate\u002Fdestroy and redirect\u002Frender.\n\n- Use standard RESTful actions: `index`, `show`, `new`, `create`, `edit`, `update`, `destroy`\n- Keep them thin — delegate business logic to models\n- Use `before_action` for shared setup (e.g., finding records)\n- Use strong parameters for input filtering\n\n## Model Conventions\n\nModels should be rich with behavior — they know how to do things, not just store data.\n\n- Put business logic in models, not service classes\n- Use Rails validations exclusively for business rules\n- Leverage associations for authorization (e.g., `current_user.accounts.find(params[:id])`)\n- Use scopes for common queries\n- Use callbacks sparingly — prefer explicit method calls\n- Use concerns only for truly shared behavior across multiple models\n\n## Service Objects\n\n- **Default to models** — if you need a service object, you probably need a model instead\n- Service objects are acceptable when orchestrating across multiple models or external systems\n- Follow existing patterns in `app\u002Fservices\u002F` when service objects are warranted\n\n## Testing\n\n- Write tests first (TDD)\n- Use Rails' built-in testing framework (Minitest), not RSpec\n- Controller tests for request\u002Fresponse behavior\n- Model tests for validations, associations, and business logic\n- Run tests incrementally with `bin\u002Frails test` to verify work\n\n## Views\n\nViews should be dumb — logic belongs in helpers or models. Database is for persistence, business rules belong in Ruby\u002FRails.\n\n## References\n\n- [Rails Guides](https:\u002F\u002Fguides.rubyonrails.org\u002F)\n- [Rails Doctrine](https:\u002F\u002Frubyonrails.org\u002Fdoctrine)\n","# Rails Programmer\n\nWrite Rails 8 code that follows DHH's philosophy and Rails conventions. Embrace simplicity, convention over configuration, and the power of Rails' built-in patterns.\n\n## When to Apply\n\nUse this skill automatically when:\n- Writing new Rails controllers, models, or views\n- Reviewing or refactoring Rails code\n- Implementing features in the backend\n\n## Core Philosophy\n\n- **Fat models, skinny controllers** — controllers orchestrate, models contain behavior\n- **Convention over configuration** — follow Rails naming conventions religiously\n- **No unnecessary abstractions** — if Rails provides a pattern, use it\n- **Clear over clever** — write expressive, self-documenting Ruby\n- **If it feels complex, you're probably not thinking in Rails**\n\n## Controller Conventions\n\nControllers should be boring — just find\u002Fcreate\u002Fupdate\u002Fdestroy and redirect\u002Frender.\n\n- Use standard RESTful actions: `index`, `show`, `new`, `create`, `edit`, `update`, `destroy`\n- Keep them thin — delegate business logic to models\n- Use `before_action` for shared setup (e.g., finding records)\n- Use strong parameters for input filtering\n\n## Model Conventions\n\nModels should be rich with behavior — they know how to do things, not just store data.\n\n- Put business logic in models, not service classes\n- Use Rails validations exclusively for business rules\n- Leverage associations for authorization (e.g., `current_user.accounts.find(params[:id])`)\n- Use scopes for common queries\n- Use callbacks sparingly — prefer explicit method calls\n- Use concerns only for truly shared behavior across multiple models\n\n## Service Objects\n\n- **Default to models** — if you need a service object, you probably need a model instead\n- Service objects are acceptable when orchestrating across multiple models or external systems\n- Follow existing patterns in `app\u002Fservices\u002F` when service objects are warranted\n\n## Testing\n\n- Write tests first (TDD)\n- Use Rails' built-in testing framework (Minitest), not RSpec\n- Controller tests for request\u002Fresponse behavior\n- Model tests for validations, associations, and business logic\n- Run tests incrementally with `bin\u002Frails test` to verify work\n\n## Views\n\nViews should be dumb — logic belongs in helpers or models. Database is for persistence, business rules belong in Ruby\u002FRails.\n\n## References\n\n- [Rails Guides](https:\u002F\u002Fguides.rubyonrails.org\u002F)\n- [Rails Doctrine](https:\u002F\u002Frubyonrails.org\u002Fdoctrine)\n",{"name":5,"description":7},"main","e63965e4644984470d4cc8b3014a8b001f0c2666",".agents\u002Fskills\u002Frails-programmer","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fbnferguson","2026-11-11 03:04:59",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add bnferguson\u002Fdotfiles --skill rails-programmer",{"tool":49,"command":50},"bunx","bunx skills add bnferguson\u002Fdotfiles --skill rails-programmer",{"tool":52,"command":53},"pnpm","pnpm dlx skills add bnferguson\u002Fdotfiles --skill rails-programmer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frails-programmer\u002FSKILL.md",true,[],[58,90,106,136,145,158],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":62,"licenseFileUrl":63,"sourceHtmlUrl":64,"categories":65,"keywords":71,"publishedAt":32},"01M6BVA3RS3M016FANZ6792F9H","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FSKILL.md",[66],{"categoryNo":67,"categoryName":68,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,31,89],"creator","skill creator","specialized","workflows","create","update","capabilities","knowledge","tool","integrations","guide","new skill","existing skill","users","with","for","Existing","new",{"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":104,"publishedAt":32},"01M6BV94WN2RPYM8N6PN8TBNT8","writing-shape","Writing, exploit: shape raw material into an article, paragraph by paragraph.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-shape\u002FSKILL.md",[96,99],{"categoryNo":97,"categoryName":98,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[105,21],"writing shape",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":62,"licenseFileUrl":110,"sourceHtmlUrl":111,"categories":112,"keywords":119,"publishedAt":32},"01M6BV8QDFJ6PXBVK5NFBZT5M7","webapp-testing","Test local web applications using Playwright. Use when verifying frontend functionality, debugging UI behavior, capturing browser screenshots, or viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":117,"categoryName":118,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000009","前端开发",[120,121,122,123,124,125,126,127,128,129,130,131,132,133,25,134,135,31],"webapp","webapp testing","testing","browser","frontend","screenshots","playwright","test","web","debugging","ui","logs","applications","behavior","local","test local",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":32},"01M6BV8MDXKXNVHKS3QF3YDFTF","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[143,144],"wait what","land",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":154,"publishedAt":32},"01M6BV756DJHT5BDA1HVRVHJJ7","prototype","Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprototype\u002FSKILL.md",[151],{"categoryNo":152,"categoryName":153,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000032","设计师",[147,155,156,130,157],"design","explore","state",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":32},"01M6BV6SBW166685KVBPWM2K4N","improve-codebase-architecture","Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[164],{"categoryNo":117,"categoryName":118,"taxonomyType":69,"taxonomyTypeDesc":70},[166,167,168,169],"architecture","improve","improve codebase architecture","report"]