Skip to content

chore: AI 하네스 정착 (CLAUDE.md + .gitignore 정리 + SDD) - #108

Merged
gomminjae merged 2 commits into
developfrom
chore/ai-harness-setup
Jul 4, 2026
Merged

gomminjae merged 2 commits into
developfrom
chore/ai-harness-setup

Conversation

@gomminjae

Copy link
Copy Markdown
Collaborator

요약

AI 에이전트 하네스를 이 프로젝트에 정착시킵니다.

  • CLAUDE.md 추가 — Tuist 빌드/실행/배포 명령, 15개 모듈 구조, MVVM·브랜치·커밋 컨벤션, pbxproj 수정 금지 등 함정
  • .omc/ gitignore + 언트랙 — 머신 생성 상태 파일(214개+세션 30개)로 인한 diff noise 영구 제거
  • swiftui-specialist 스킬 버전 관리 포함
  • SDD 워크플로 도입 — docs/specs/_template/(spec/plan/tasks) + CLAUDE.md 규율

영향

소스 코드 변경 없음. 에이전트/문서/gitignore만.

🤖 Generated with Claude Code

gomminjae and others added 2 commits July 3, 2026 20:11
- 루트 CLAUDE.md: Tuist 빌드/실행/배포 명령, 모듈 구조, MVVM·브랜치·커밋 컨벤션
- .omc/ 를 gitignore 처리하고 index에서 제거 (머신 생성 상태 파일, diff noise 제거)
- swiftui-specialist 커스텀 스킬을 버전 관리에 포함

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- docs/specs/_template/ (spec/plan/tasks) 복사용 템플릿 추가
- CLAUDE.md에 SDD 규율 명시: 비자명 기능은 스펙 먼저, drift 시 스펙부터 수정

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gomminjae
gomminjae merged commit edd0eec into develop Jul 4, 2026
1 check passed
@gomminjae
gomminjae deleted the chore/ai-harness-setup branch July 4, 2026 03:21

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive SwiftUI specialist skill guide, adding reference documents on animations, data flow, environment performance, ForEach, localization, modifiers, soft-deprecated APIs, and view structure. It also adds a CLAUDE.md file, spec templates, and updates the .gitignore. The review feedback correctly identifies a few technical inaccuracies in the documentation, such as correcting the deployment target for AnimatableValues to 18.0, updating the Swift version for EnumeratedSequence conditional conformance to 6.2, and resolving an escaped newline character in the soft-deprecated APIs list.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.


Reach for an explicit `animatableData` when the interpolated value needs custom logic that doesn't correspond 1:1 to a stored property, like normalization, clamping, or driving a derived value.

For deployment target >= 26.0, use `AnimatableValues`:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

AnimatableValues는 iOS 18.0 / macOS 15.0 / tvOS 18.0 / watchOS 11.0 / visionOS 2.0에서 도입되었습니다. 따라서 배포 타겟 기준인 26.0은 18.0으로 수정하는 것이 올바릅니다.

Suggested change
For deployment target >= 26.0, use `AnimatableValues`:
For deployment target >= 18.0, use `AnimatableValues`:

}
```

### `.enumerated()` and `RandomAccessCollection`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

EnumeratedSequence가 Collection, BidirectionalCollection, RandomAccessCollection에 조건부 부합하도록 하는 제안(SE-0459)은 Swift 6.1이 아닌 Swift 6.2에서 구현되었습니다. 따라서 Swift 6.1 환경에서는 items.enumerated()를 직접 전달하면 컴파일 에러가 발생하므로, 기준 버전을 Swift 6.2로 수정해야 합니다.

Suggested change
### `.enumerated()` and `RandomAccessCollection`
As of Swift 6.2, the sequence returned by .enumerated() conditionally conforms to Collection, BidirectionalCollection, and RandomAccessCollection when the base collection does. ForEach requires its data to be a RandomAccessCollection, so on Swift 6.2 and later you can pass items.enumerated() directly - no Array(...) wrapper is needed. On earlier toolchains the wrapper is still required. Favor the direct form in new code; it avoids an eager copy of the collection on every body evaluation.

- `View.colorScheme(_ colorScheme: ColorScheme) -> some View` (iOS, macOS, tvOS, watchOS, visionOS)
- Renamed to preferredColorScheme(_:)
- `Section.collapsible(_ collapsible: Bool) -> some View` (macOS, tvOS, watchOS)
- Use a standard Section initializer which does not allow for collapsibility\nby default after macOS 14.0.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

텍스트 내에 이스케이프 문자 \\n이 리터럴 문자열로 포함되어 있습니다. 마크다운 가독성을 위해 공백이나 실제 줄바꿈으로 수정하는 것이 좋습니다.

Suggested change
- Use a standard Section initializer which does not allow for collapsibility\nby default after macOS 14.0.
- Use a standard Section initializer which does not allow for collapsibility by default after macOS 14.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant