[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HAKB5K11SGMC6Z9CMCBJR":3,"skill-same:01M71HAKB5K11SGMC6Z9CMCBJR":69},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M71HAKB5K11SGMC6Z9CMCBJR","quality-check-rails",null,"Smart Collection Rails quality assurance workflow. Use when the user asks to run Rails QA, verify project quality, check RuboCop\u002FRSpec, validate Rails CI readiness, or fix quality issues in the Rails\u002FMongoid\u002FDocker application.","ZeroIsOnFire\u002Fsmart-collection","ZeroIsOnFire","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1202472?v=4","01M71HA5N01RTYGNY2NJT0GYX4","Eli Fachin Junior","01M71HA5NPBDGJYY84WSQ20YCP",0,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.skills\u002Fquality-check-rails\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"check","quality check rails","quality check","quality","rails","ci","collection","verify","qa","issues","docker","fix","use","quality assurance","run","project","readiness","when","rspec","workflow","2026-11-10 10:12:30",false,"---\nname: quality-check-rails\ndescription: Smart Collection Rails quality assurance workflow. Use when the user asks to run Rails QA, verify project quality, check RuboCop\u002FRSpec, validate Rails CI readiness, or fix quality issues in the Rails\u002FMongoid\u002FDocker application.\n---\n\n# Quality Check Rails\n\nAssume the Smart Collection Rails QA role. Keep the Rails application structurally sound, lint-clean, free of avoidable duplication, and green in tests.\n\n## Scope Detection\n\n- For focused Rails changes, run targeted specs and RuboCop for the changed files before broad suites.\n- Use the full workflow when the user asks for broad QA, CI readiness, release confidence, or when cross-cutting changes make focused checks insufficient.\n- Do not load extra references or adjacent skills unless the changed area or the user request requires them.\n\n## Core Workflow\n\n1. Run the centralized Rails QA script from the project root:\n\n```bash\ndocker compose exec web bash bin\u002Fqa\n```\n\n2. Read the full output. The script may continue after linter offenses to show the complete picture.\n\n3. Fix issues that autocorrect does not resolve:\n- For RuboCop manual offenses such as `Metrics\u002FMethodLength` or `Metrics\u002FAbcSize`, refactor while preserving behavior.\n- Prefer extracting complex controller logic to services in `app\u002Fservices\u002F`.\n- Keep Rails\u002FMongoid conventions and 2-space Ruby indentation.\n\n4. Address `rails_best_practices` findings carefully:\n- Preserve controller\u002Fview behavior.\n- Do not make broad refactors unrelated to the reported issue.\n\n5. Address `flay` duplication:\n- Extract genuinely shared behavior to a service object or concern only when it reduces real duplication.\n- Keep security scoping intact.\n\n6. Address `brakeman` findings:\n- Treat warnings about authentication, authorization, unsafe redirects, command execution, mass assignment, and secret exposure as high priority.\n- Keep all user-owned data access scoped through `current_user`.\n- Do not suppress warnings unless the finding is demonstrably false positive and the reason is documented in code or configuration.\n\n7. After Rails code changes, rerun:\n\n```bash\ndocker compose exec web bin\u002Fsafe_rspec\n```\n\nNever finish a Rails QA task with failing tests unless you clearly report the blocker.\n\n## Docker And Windows Failures\n\n- If `bin\u002Fsafe_rspec` or `bin\u002Fqa` fails with messages like `$'\\r': command not found` or `cannot execute: required file not found`, treat CRLF in scripts as the likely cause and use an in-memory workaround without editing the script:\n\n```bash\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fsafe_rspec | bash -s -- spec\u002Fpath_spec.rb\"\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fsafe_rspec | bash\"\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fqa | bash\"\n```\n\n- If `bin\u002Fqa` with CRLF removed in memory fails at the final RSpec step because it calls `bin\u002Fsafe_rspec` directly, record the partial QA result and run the suite separately with the workaround above.\n- If broad QA or a large spec batch times out before useful output, split the run into focused steps: RuboCop for changed files, focused specs, `rails_best_practices`, `flay app\u002F`, and then the full suite when practical.\n- If RuboCop reports `Layout\u002FEndOfLine` on changed files in Windows, normalize only those files inside the container and rerun the focused RuboCop check:\n\n```bash\ndocker compose exec web perl -pi -e 's\u002F\\r$\u002F\u002F' path\u002Fto\u002Ffile.rb\n```\n\n## Safety Rules\n\n- Never remove user data segregation. Queries and controller actions must stay scoped through `current_user` whenever user-owned data is involved.\n- Never replace scoped access such as `current_user.cars.find(params[:id])` with global access such as `Car.find(params[:id])`.\n- Never hardcode secrets, API keys, passwords, or tokens. Use environment variables.\n- Do not add gems or libraries without explicit user authorization.\n- Preserve the project architecture from `AGENTS.md`: thin controllers, reusable business logic in `app\u002Fservices\u002F`, CarrierWave for uploads, Docker Compose for Rails commands.\n\n## Final Report\n\nReport:\n- Which Rails QA commands were run.\n- How many issues were found, if known.\n- Which manual fixes were applied.\n- Final RSpec\u002Flinter\u002FBrakeman status.\n\nKeep the summary brief and lead with failures if anything remains unresolved.\n","# Quality Check Rails\n\nAssume the Smart Collection Rails QA role. Keep the Rails application structurally sound, lint-clean, free of avoidable duplication, and green in tests.\n\n## Scope Detection\n\n- For focused Rails changes, run targeted specs and RuboCop for the changed files before broad suites.\n- Use the full workflow when the user asks for broad QA, CI readiness, release confidence, or when cross-cutting changes make focused checks insufficient.\n- Do not load extra references or adjacent skills unless the changed area or the user request requires them.\n\n## Core Workflow\n\n1. Run the centralized Rails QA script from the project root:\n\n```bash\ndocker compose exec web bash bin\u002Fqa\n```\n\n2. Read the full output. The script may continue after linter offenses to show the complete picture.\n\n3. Fix issues that autocorrect does not resolve:\n- For RuboCop manual offenses such as `Metrics\u002FMethodLength` or `Metrics\u002FAbcSize`, refactor while preserving behavior.\n- Prefer extracting complex controller logic to services in `app\u002Fservices\u002F`.\n- Keep Rails\u002FMongoid conventions and 2-space Ruby indentation.\n\n4. Address `rails_best_practices` findings carefully:\n- Preserve controller\u002Fview behavior.\n- Do not make broad refactors unrelated to the reported issue.\n\n5. Address `flay` duplication:\n- Extract genuinely shared behavior to a service object or concern only when it reduces real duplication.\n- Keep security scoping intact.\n\n6. Address `brakeman` findings:\n- Treat warnings about authentication, authorization, unsafe redirects, command execution, mass assignment, and secret exposure as high priority.\n- Keep all user-owned data access scoped through `current_user`.\n- Do not suppress warnings unless the finding is demonstrably false positive and the reason is documented in code or configuration.\n\n7. After Rails code changes, rerun:\n\n```bash\ndocker compose exec web bin\u002Fsafe_rspec\n```\n\nNever finish a Rails QA task with failing tests unless you clearly report the blocker.\n\n## Docker And Windows Failures\n\n- If `bin\u002Fsafe_rspec` or `bin\u002Fqa` fails with messages like `$'\\r': command not found` or `cannot execute: required file not found`, treat CRLF in scripts as the likely cause and use an in-memory workaround without editing the script:\n\n```bash\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fsafe_rspec | bash -s -- spec\u002Fpath_spec.rb\"\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fsafe_rspec | bash\"\ndocker compose exec web sh -lc \"tr -d '\\r' \u003C bin\u002Fqa | bash\"\n```\n\n- If `bin\u002Fqa` with CRLF removed in memory fails at the final RSpec step because it calls `bin\u002Fsafe_rspec` directly, record the partial QA result and run the suite separately with the workaround above.\n- If broad QA or a large spec batch times out before useful output, split the run into focused steps: RuboCop for changed files, focused specs, `rails_best_practices`, `flay app\u002F`, and then the full suite when practical.\n- If RuboCop reports `Layout\u002FEndOfLine` on changed files in Windows, normalize only those files inside the container and rerun the focused RuboCop check:\n\n```bash\ndocker compose exec web perl -pi -e 's\u002F\\r$\u002F\u002F' path\u002Fto\u002Ffile.rb\n```\n\n## Safety Rules\n\n- Never remove user data segregation. Queries and controller actions must stay scoped through `current_user` whenever user-owned data is involved.\n- Never replace scoped access such as `current_user.cars.find(params[:id])` with global access such as `Car.find(params[:id])`.\n- Never hardcode secrets, API keys, passwords, or tokens. Use environment variables.\n- Do not add gems or libraries without explicit user authorization.\n- Preserve the project architecture from `AGENTS.md`: thin controllers, reusable business logic in `app\u002Fservices\u002F`, CarrierWave for uploads, Docker Compose for Rails commands.\n\n## Final Report\n\nReport:\n- Which Rails QA commands were run.\n- How many issues were found, if known.\n- Which manual fixes were applied.\n- Final RSpec\u002Flinter\u002FBrakeman status.\n\nKeep the summary brief and lead with failures if anything remains unresolved.\n",{"name":5,"description":7},"main","f7cc6be75df2db15c57ea513592ccf6680ba5b7f",".skills\u002Fquality-check-rails","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire","2026-10-22 06:59:18",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add ZeroIsOnFire\u002Fsmart-collection --skill quality-check-rails",{"tool":61,"command":62},"bunx","bunx skills add ZeroIsOnFire\u002Fsmart-collection --skill quality-check-rails",{"tool":64,"command":65},"pnpm","pnpm dlx skills add ZeroIsOnFire\u002Fsmart-collection --skill quality-check-rails","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.skills\u002Fquality-check-rails\u002FSKILL.md",true,[],[70,88,106,119,124,129],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":44},"01M71HAN0DPNYWXS8DNW9J5NTP","security-check","Smart Collection security audit workflow. Use when the user asks to run security checks, audit Ruby gems, audit JavaScript or Python dependencies, verify bundler-audit, run OWASP ZAP against the Rails app, investigate vulnerable dependencies, fix security issues, or improve project security posture in this Rails\u002FMongoid\u002FPython\u002FDocker project.","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.skills\u002Fsecurity-check\u002FSKILL.md",[],[77,78,24,79,80,81,82,39,34,35,33,83,84,85,36,41,43,30,86,87],"security","security check","javascript","app","owasp zap","security audit","python","improve","ruby","project security","audit workflow",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":44},"01M71HAHPNJ2P9KQCCHRRJA99P","quality-check-python","Smart Collection Python microservice quality workflow. Use when the user asks to run Python QA, lint Python code, test Python microservices, validate yolo\u002Fupscale changes, or when files under yolo\u002F or upscale\u002F change.","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.skills\u002Fquality-check-python\u002FSKILL.md",[],[27,24,95,83,26,96,97,98,99,100,101,102,103,104,32,36,41,43,30,105],"quality check python","change","test python","test","lint python","python code","lint","yolo","microservice","files","code",{"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":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":44},"01M71HAFPFZ2XMH6D1PRV5V7HX","quality-check-javascript","Smart Collection JavaScript quality workflow. Use when the user asks to run JavaScript QA, validate esbuild\u002Fjsbundling-rails, check npm dependencies, verify Stimulus\u002FTurbo controllers, or when files under app\u002Fjavascript, package.json, package-lock.json, or JavaScript-related Rails layout\u002Fbuild configuration change.","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.skills\u002Fquality-check-javascript\u002FSKILL.md",[],[27,79,24,113,26,28,114,80,104,32,115,36,41,43,30,116,96,31,117,118],"quality check javascript","turbo","package","lock","layout","build",{"skillNo":120,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":44},"01M71HAF09H16G82Z4SY5V9TG7","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.gemini\u002Fskills\u002Fsecurity-check\u002FSKILL.md",[],[24,78,77],{"skillNo":125,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":44},"01M71HAE8XDNTWWXP66S13JTTS","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.gemini\u002Fskills\u002Fquality-check-rails\u002FSKILL.md",[],[27,25,26,28,24],{"skillNo":130,"name":90,"nameZh":6,"description":6,"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":133,"publishedAt":44},"01M71HADJG1CRZMNDQ7SPF77XB","https:\u002F\u002Fgithub.com\u002FZeroIsOnFire\u002Fsmart-collection\u002Fblob\u002Fmain\u002F.gemini\u002Fskills\u002Fquality-check-python\u002FSKILL.md",[],[27,83,26,95,24]]