The Architecture of an AI-Driven Rails Audit
Claude Skill은 YAML 프런트 매터가 포함된 Markdown 파일로 구현되며, 사람이 만든 도구 정의 역할을 합니다. 이 특정 Skill은 Thoughtbot의 Ruby Science 원칙을 통합하여 “코드 스멜”을 식별하고 구조화된 리팩토링 경로를 제공하는 데 중점을 둡니다. 이 Skill들을 .claude/skills 디렉토리에 배치함으로써 Claude Code는 전체 저장소 또는 특정 모듈에 걸쳐 정적 분석을 수행하기 위해 자동으로 이를 호출할 수 있습니다.
Identifying the ‘God Class’ and Architectural Debt
Thoughtbot의 ‘Hub’ 애플리케이션(수십 년 된 내부 플랫폼)에 대한 실시간 감사 중에, 이 Skill은 Person 모델에서 931줄과 104개의 public 메서드를 가진 전형적인 God Class를 식별했습니다. 이 도구는 Profile 또는 BillingInfo와 같은 도메인 객체 추출을 제안하며 컴포지션을 통한 적극적인 리팩토링을 권장했습니다. 이러한 자동화된 발견은 개발자가 장기간 운영된 Rails 애플리케이션에서 흔히 축적되는 기술 부채의 규모를 빠르게 시각화할 수 있도록 합니다.
Beyond Service Objects: The Active Model Approach
이 Skill의 핵심적인 특징 중 하나는 널리 사용되는 ‘Service Object’ 패턴에 대한 비판입니다. 테스트 감사에서 21개의 서비스 객체를 식별하고, 이들을 Active Model을 포함하는 PORO (Plain Old Ruby Objects)로 리팩토링할 것을 제안했습니다. 일반적인 notify 또는 call 메서드보다 도메인 모델을 선호하는 Rails의 관용적인 패턴과의 이러한 정렬은 테스트 용이성과 도메인 명확성을 향상시킵니다. 예를 들어, ConfirmationService를 도메인 중심의 AssignmentConfirmation 모델로 이름을 변경하면 향후 유지보수를 위한 더 직관적인 인터페이스를 제공합니다.
Security and Testing Integration
이 Skill은 Brakeman에서 파생된 패턴을 사용하여 잠재적인 SQL 인젝션 및 대량 할당(mass assignment) 위험을 표시하기 위해 정적 분석을 활용합니다. 또한 RSpec 커버리지에 대한 격차 분석을 수행하여 ApplicationRecord 또는 Finance와 같이 해당 spec 파일이 없는 중요한 인프라 모델을 식별합니다. 핵심 도메인 로직에 대한 단위 테스트의 부재를 강조함으로써, 코드가 발전하더라도 테스트 문화가 견고하게 유지되도록 보장합니다.