{"id":"8e09e51a-1d7f-4b1a-a5f5-7a0b05e4f8b9","shortId":"zqxF8H","kind":"skill","title":"vigilante-issue-implementation-on-ruby","tagline":"Implement a GitHub issue end-to-end when Vigilante dispatches work for a Ruby repository with Bundler, test, lint, and security guidance.","description":"# Vigilante Ruby Issue Implementation\n\n## Focus\n- Read the prompt for detected tech stacks, Ruby process hints, and Ruby security guidance before changing code.\n- Prefer repository-defined Ruby workflows over guessed framework defaults.\n- Keep changes scoped to the issue and do not broaden into unrelated lint, dependency, or style cleanup.\n\n## Ruby Tooling Workflow\n- **Bundler**: run Ruby tooling through Bundler-managed commands when the repository uses Bundler, such as `bundle exec <command>` or documented binstubs. Respect the committed lockfile and avoid ad hoc gem execution outside the repo's dependency context.\n- **Testing**: start with the repository's standard test entrypoint for the touched area, such as `bundle exec rspec`, `bundle exec ruby -Itest`, `bundle exec rake test`, Rails test tasks, or another documented command. Prefer targeted suites first, then widen only when needed.\n- **Linting and style**: use the repository's established lint or style tooling. When RuboCop is configured, run the repo-standard RuboCop command through Bundler. Do not introduce new lint tooling unless the issue specifically requires it.\n- **Dependency and security audits**: run `bundle audit` or `bundler-audit` when it is installed or already part of the repository workflow and the change touches dependencies or security-sensitive code. For Rails applications, run Brakeman when it is already configured or documented for the repo. If those tools are not present, note that and continue with the other validation paths.\n- **Dependencies**: keep `Gemfile.lock` or other Bundler lockfiles in sync with dependency changes. Prefer minimal dependency churn and respect the repo's existing gem sources and update policy.\n\n## Ruby Secure Coding\n- Avoid unsafe deserialization of untrusted data. Prefer safe formats and parser modes over `Marshal.load`, unrestricted YAML loading, or similar dangerous object materialization paths.\n- Avoid shell injection by preferring APIs that accept explicit argv arrays and by validating or escaping untrusted input when shelling out is unavoidable.\n- Do not store secrets, credentials, or tokens in source files, fixtures, seeds, or committed environment files.\n- For Rails or Rack applications, preserve secure defaults around strong parameters, CSRF protections, escaping, and framework security configuration unless the issue explicitly requires changing them.\n- Prefer current maintained gems and standard-library capabilities over custom security-sensitive code when the repository already has an established safe path.\n\n## Mixed-Language Repositories\n- A Ruby repository may include frontend assets, Node.js tooling, or other languages alongside the Ruby application.\n- Scope Ruby validation to Ruby files and repo-defined Ruby commands for Ruby-scoped changes. When the issue also touches frontend or other language code, validate each side with its respective toolchain.\n\n## Workflow\n- Follow the base `vigilante-issue-implementation` workflow for issue comments, validation, push, and PR creation.\n- Use `vigilante commit` for all commit-producing operations. Do not use `git commit` or GitHub CLI commit flows directly.\n- Any commit or amend must preserve the user's existing git author, committer, and signing configuration. Commit on behalf of the user and do not overwrite `git config` with a coding-agent identity.\n- Do not add `Co-authored by:` trailers or any other agent attribution for Codex, Claude, Gemini, or similar coding-agent identities.\n- Repository-specific instructions (`AGENTS.md`, `README.md`, framework docs, CI config) remain authoritative when they are more specific than the generic Ruby guidance in this skill.","tags":["vigilante","issue","implementation","ruby","aliengiraffe","agent","agent-skills","agentic-ai","agentic-workflow","agents","ai-orchestration","ai-orchestrator"],"capabilities":["skill","source-aliengiraffe","skill-vigilante-issue-implementation-on-ruby","topic-agent","topic-agent-skills","topic-agentic-ai","topic-agentic-workflow","topic-agents","topic-ai-orchestration","topic-ai-orchestrator","topic-orchestration"],"categories":["vigilante"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/aliengiraffe/vigilante/vigilante-issue-implementation-on-ruby","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add aliengiraffe/vigilante","source_repo":"https://github.com/aliengiraffe/vigilante","install_from":"skills.sh"}},"qualityScore":"0.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 28 github stars · SKILL.md body (3,688 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T07:01:25.049Z","embedding":null,"createdAt":"2026-04-18T22:23:20.347Z","updatedAt":"2026-05-01T07:01:25.049Z","lastSeenAt":"2026-05-01T07:01:25.049Z","tsv":"'accept':320 'ad':109 'add':528 'agent':524,537,547 'agents.md':553 'alongsid':417 'alreadi':214,238,395 'also':441 'amend':495 'anoth':149 'api':318 'applic':232,356,420 'area':131 'argv':322 'around':360 'array':323 'asset':411 'attribut':538 'audit':201,204,208 'author':503,531 'authorit':560 'avoid':108,290,313 'base':458 'behalf':510 'binstub':102 'brakeman':234 'broaden':71 'bundl':98,134,137,141,203 'bundler':24,82,88,95,185,207,265 'bundler-audit':206 'bundler-manag':87 'capabl':385 'chang':50,63,222,271,375,437 'churn':275 'ci':557 'claud':541 'cleanup':78 'cli':488 'co':530 'co-author':529 'code':51,229,289,391,447,523,546 'codex':540 'coding-ag':522,545 'command':90,151,183,432 'comment':466 'commit':105,349,474,478,485,489,493,508 'commit-produc':477 'committ':504 'config':519,558 'configur':176,239,369,507 'context':118 'continu':254 'creation':471 'credenti':340 'csrf':363 'current':378 'custom':387 'danger':309 'data':295 'default':61,359 'defin':55,430 'depend':75,117,198,224,260,270,274 'deseri':292 'detect':39 'direct':491 'dispatch':17 'doc':556 'document':101,150,241 'end':12,14 'end-to-end':11 'entrypoint':127 'environ':350 'escap':328,365 'establish':168,398 'exec':99,135,138,142 'execut':112 'exist':281,501 'explicit':321,373 'file':345,351,426 'first':155 'fixtur':346 'flow':490 'focus':34 'follow':456 'format':298 'framework':60,367,555 'frontend':410,443 'gem':111,282,380 'gemfile.lock':262 'gemini':542 'generic':568 'git':484,502,518 'github':9,487 'guess':59 'guidanc':29,48,570 'hint':44 'hoc':110 'ident':525,548 'implement':4,7,33,462 'includ':409 'inject':315 'input':330 'instal':212 'instruct':552 'introduc':188 'issu':3,10,32,67,194,372,440,461,465 'itest':140 'keep':62,261 'languag':403,416,446 'librari':384 'lint':26,74,161,169,190 'load':306 'lockfil':106,266 'maintain':379 'manag':89 'marshal.load':303 'materi':311 'may':408 'minim':273 'mix':402 'mixed-languag':401 'mode':301 'must':496 'need':160 'new':189 'node.js':412 'note':251 'object':310 'oper':480 'outsid':113 'overwrit':517 'paramet':362 'parser':300 'part':215 'path':259,312,400 'polici':286 'pr':470 'prefer':52,152,272,296,317,377 'present':250 'preserv':357,497 'process':43 'produc':479 'prompt':37 'protect':364 'push':468 'rack':355 'rail':145,231,353 'rake':143 'read':35 'readme.md':554 'remain':559 'repo':115,180,244,279,429 'repo-defin':428 'repo-standard':179 'repositori':22,54,93,123,166,218,394,404,407,550 'repository-defin':53 'repository-specif':549 'requir':196,374 'respect':103,277,453 'rspec':136 'rubi':6,21,31,42,46,56,79,84,139,287,406,419,422,425,431,435,569 'rubocop':174,182 'ruby-scop':434 'run':83,177,202,233 'safe':297,399 'scope':64,421,436 'secret':339 'secur':28,47,200,227,288,358,368,389 'security-sensit':226,388 'seed':347 'sensit':228,390 'shell':314,332 'side':450 'sign':506 'similar':308,544 'skill':573 'skill-vigilante-issue-implementation-on-ruby' 'sourc':283,344 'source-aliengiraffe' 'specif':195,551,565 'stack':41 'standard':125,181,383 'standard-librari':382 'start':120 'store':338 'strong':361 'style':77,163,171 'suit':154 'sync':268 'target':153 'task':147 'tech':40 'test':25,119,126,144,146 'token':342 'tool':80,85,172,191,247,413 'toolchain':454 'topic-agent' 'topic-agent-skills' 'topic-agentic-ai' 'topic-agentic-workflow' 'topic-agents' 'topic-ai-orchestration' 'topic-ai-orchestrator' 'topic-orchestration' 'touch':130,223,442 'trailer':533 'unavoid':335 'unless':192,370 'unrel':73 'unrestrict':304 'unsaf':291 'untrust':294,329 'updat':285 'use':94,164,472,483 'user':499,513 'valid':258,326,423,448,467 'vigilant':2,16,30,460,473 'vigilante-issue-implement':459 'vigilante-issue-implementation-on-rubi':1 'widen':157 'work':18 'workflow':57,81,219,455,463 'yaml':305","prices":[{"id":"be7ba804-7ac0-4391-a84d-2e3f6d999142","listingId":"8e09e51a-1d7f-4b1a-a5f5-7a0b05e4f8b9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"aliengiraffe","category":"vigilante","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:20.347Z"}],"sources":[{"listingId":"8e09e51a-1d7f-4b1a-a5f5-7a0b05e4f8b9","source":"github","sourceId":"aliengiraffe/vigilante/vigilante-issue-implementation-on-ruby","sourceUrl":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-issue-implementation-on-ruby","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:20.347Z","lastSeenAt":"2026-05-01T07:01:25.049Z"}],"details":{"listingId":"8e09e51a-1d7f-4b1a-a5f5-7a0b05e4f8b9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aliengiraffe","slug":"vigilante-issue-implementation-on-ruby","github":{"repo":"aliengiraffe/vigilante","stars":28,"topics":["agent","agent-skills","agentic-ai","agentic-workflow","agents","ai","ai-orchestration","ai-orchestrator","orchestration"],"license":"apache-2.0","html_url":"https://github.com/aliengiraffe/vigilante","pushed_at":"2026-04-23T16:58:46Z","description":"Vigilante is a sandbox-first orchestration layer for coding agents. It isolates every task in a git worktree, enforces strict credential scoping, and gives you full audit logs — so your agents can't burn down production.","skill_md_sha":"7545c201bc41324a6beb88dc21f5e24ff47f95ab","skill_md_path":"skills/vigilante-issue-implementation-on-ruby/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-issue-implementation-on-ruby"},"layout":"multi","source":"github","category":"vigilante","frontmatter":{"name":"vigilante-issue-implementation-on-ruby","description":"Implement a GitHub issue end-to-end when Vigilante dispatches work for a Ruby repository with Bundler, test, lint, and security guidance."},"skills_sh_url":"https://skills.sh/aliengiraffe/vigilante/vigilante-issue-implementation-on-ruby"},"updatedAt":"2026-05-01T07:01:25.049Z"}}