This file contains repository-specific guidance for PiCK_iOS_ADMIN. Keep this file agent-agnostic so the same project rules work for Codex, Claude, or any other coding agent. Use this file for repository-local build, verification, PR, and structure rules only. Avoid tool-vendor-specific orchestration policy in this file unless the repository truly depends on it.
- Default user-facing summaries, issue comments, and PR bodies to Korean unless the user explicitly asks for another language.
Projects/App— app target and app resourcesProjects/Feature— feature modules and featureProject.swiftmanifestsProjects/*Domain*— domain modulesTuist— Tuist config, helpers, and templatesScripts,ci_scripts— automation helpers
- This repository uses Tuist + Needle.
- Before generation, ensure
Projects/App/Resources/Firebaseexists. - Prefer the checked-in Make targets when they fit:
make generatemake regeneratemake needle
- Equivalent raw generation flow:
needle generate Projects/App/Sources/Application/DI/NeedleGenerated.swift Projectstuist installtuist generate
- Always run
git diff --checkbefore finishing code changes. - For
Project.swift, Tuist helper, or manifest changes, runtuist generate --no-open(ormake generatewhen Firebase prerequisites are present). - For helper-backed feature manifest changes, only set
includeUnitTests: truewhen tracked test source files actually exist under that feature'sTests/directory. - When changing Tuist manifest infrastructure, prefer verification that still works from a fresh worktree / clean checkout, not only from the current local state.
- Common-case feature manifests should prefer
Project.makeFeatureModule(...). BaseFeatureis an intentional exception today:- it uses
Project.makeFeature(...) - it merges
Sources/**andInterface/**into a single module - do not migrate it to
makeFeatureModule(...)unless the helper contract is expanded for that single-module shape.
- it uses
- PR title style should follow the repository's current pattern, e.g.
[#136] .... - PR body should match
.github/PULL_REQUEST_TEMPLATE.md:## 개요## 작업사항## UI
- Link the related issue explicitly when applicable (
Closes #...).
- Keep infra refactors and app logic changes separated when possible.
- Do not add new dependencies unless the user explicitly requests it.
- Prefer small, reviewable diffs and preserve existing feature-local ownership.
- Follow the Red → Green → Refactor cycle for all behavioral changes.
- Structural changes (wrapper removal, rename, extract) are Tidy First — commit separately before behavioral changes.
- See CLAUDE.md for the full methodology and commit convention.
<type>[<phase>]: <description>
feat[red]— failing test addedfeat[green]— minimum code to passfeat[refact]— refactor while greenchore[refact]— structural / tidy-first cleanupfix[red]/fix[green]— bug fix cycleadd[green]— new file/resource with no failing test phase needed
- Views:
@Perception.Bindable var store: StoreOf<Reducer>+WithPerceptionTracking { } - Components: NeedleFoundation
Component<Dependency>instantiates View directly — no*Feature.swiftpassthrough wrapper. - No
ViewStore,WithViewStore,IfLetStore,@ObservedObjectanywhere.