Skip to content

๐Ÿ“ƒ Docs: #21 TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ#26

Open
doyeonk429 wants to merge 2 commits into
developfrom
docs/#21
Open

๐Ÿ“ƒ Docs: #21 TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ#26
doyeonk429 wants to merge 2 commits into
developfrom
docs/#21

Conversation

@doyeonk429

@doyeonk429 doyeonk429 commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

โœจ What's this PR?

๐Ÿ“Œ ๊ด€๋ จ ์ด์Šˆ (Related Issue)


๐Ÿงถ ์ฃผ์š” ๋ณ€๊ฒฝ ๋‚ด์šฉ (Summary)

  • TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ์‹ ๊ทœ ์ž‘์„ฑ (docs/TCA_GUIDELINES.md)
    • State / Action / Reducer / Effect / Dependency / Navigation / View / Testing ์ „ ์˜์—ญ ์ปค๋ฒ„
    • ๋งˆ์ธ๋“œ๋ชจ๋ธ ยท ํ•ต์‹ฌ ์›์น™ ยท ์ƒํ™ฉ๋ณ„ ๊ฐ€์ด๋“œ(Cookbook) ยท ์•ˆํ‹ฐํŒจํ„ด ยท ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ(A~J) ยท ๋ฆฌ๋ทฐ ์ถœ๋ ฅ ํ˜•์‹ ํฌํ•จ
    • TCA ์ดˆ๋ณด ํ˜‘์—…์ž๊ฐ€ ๋”ฐ๋ผ์˜ค๊ธฐ ์‰ฝ๋„๋ก ์–ธ์ œ ยท ์™œ ยท ์–ด๋–ป๊ฒŒ ํ†ค์œผ๋กœ ํ’€์–ด์“ฐ๊ณ  callout์œผ๋กœ ์˜๋„ ์„ค๋ช… ๋ณด๊ฐ•
    • Dependency ์ ˆ์€ Composition Root ๋ถ„๋ฆฌ(Option B) ํŒจํ„ด โ€” DVPresentation์— TestDependencyKey, App ํƒ€๊ฒŸ์— liveValue. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ FetchSecretUseCase / SecretRepository ๊ธฐ๋ฐ˜ SecretClient ์–ด๋Œ‘ํ„ฐ ์˜ˆ์‹œ + ์˜์กด ๊ทธ๋ž˜ํ”„ ์ˆ˜๋ก
  • ๊ฐ€๋…์„ฑ์šฉ styled HTML ๋ฒ„์ „ ์ถ”๊ฐ€ (docs/TCA_GUIDELINES.html) โ€” TOC, syntax ํ•˜์ด๋ผ์ดํŠธ, callout ๋ฐ•์Šค
  • Tuist scaffold ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ (Tuist/Templates/feature/) โ€” tuist scaffold feature --name X๋กœ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ƒ์„ฑ

๐Ÿงช ํ…Œ์ŠคํŠธ / ๊ฒ€์ฆ ๋‚ด์—ญ

  • docs/TCA_GUIDELINES.md GitHub ๋ Œ๋”๋ง ํ™•์ธ
  • docs/TCA_GUIDELINES.html ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ํ™•์ธ (open docs/TCA_GUIDELINES.html)

๐Ÿ’ฌ ๊ธฐํƒ€ ๊ณต์œ  ์‚ฌํ•ญ

  • Dependency ํŒจํ„ด์€ Option A(DVPresentation ๋‹จ์ผ ์œ„์น˜) ์™€ Option B(App ํƒ€๊ฒŸ Composition Root ๋ถ„๋ฆฌ) ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฒ€ํ† ํ–ˆ๊ณ , ๋ชจ๋“ˆ ์ˆ˜์ค€์—์„œ๋„ Clean Architecture ์˜์กด ํ™”์‚ดํ‘œ๋ฅผ ์ง€ํ‚ค๋Š” Option B๋ฅผ ๊ถŒ์žฅ์•ˆ์œผ๋กœ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์•„์ง SecretListFeature ๋“ฑ ์‹ค์ œ Feature๋Š” ๋ฏธ๊ตฌํ˜„ ์ƒํƒœ โ€” ์ฒซ Feature ๊ตฌํ˜„ ์‹œ ๋ณธ ๊ฐ€์ด๋“œ์˜ 6.4 ํŒจํ„ด์„ ๊ทธ๋Œ€๋กœ ์ ์šฉ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ™‡๐Ÿปโ€โ™€๏ธ ๋ฆฌ๋ทฐ ๊ฐ€์ด๋“œ

  • 6์ ˆ Dependency / Composition Root ๋ถ„๋ฆฌ โ€” ํŒจํ„ด ์ฑ„ํƒ์— ํ•ฉ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. App ํƒ€๊ฒŸ์— +Live.swift๋ฅผ ๋‘๋Š” ๊ตฌ์กฐ์— ๋™์˜ํ•˜๋Š”์ง€ ์˜๊ฒฌ ๋ถ€ํƒ๋“œ๋ ค์š”.

- DVPresentation ๋ชจ๋“ˆ์šฉ TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ์ž‘์„ฑ (docs/TCA_GUIDELINES.md)
- AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ์šฉ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐ ์ถœ๋ ฅ ํฌ๋งท ์ •์˜
- tuist scaffold feature ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ (Feature/View ์ž๋™ ์ƒ์„ฑ)
- TCA ์˜์กด์„ฑ ๋ฒ„์ „ 1.15.0 โ†’ 1.25.0 ์—…๊ทธ๋ ˆ์ด๋“œ
- TCA ์ฒ˜์Œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋งˆ์ธ๋“œ๋ชจ๋ธยท์ƒํ™ฉ๋ณ„ ๊ฐ€์ด๋“œ(Cookbook) ์ ˆ ์ถ”๊ฐ€
- ๊ฐ€๋…์„ฑ์šฉ styled HTML ๋ฒ„์ „(TCA_GUIDELINES.html) ์‹ ๊ทœ ์ถ”๊ฐ€
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

swift-composable-architecture ์˜์กด์„ฑ์„ 1.25.0์œผ๋กœ ์˜ฌ๋ฆฌ๊ณ , Tuist ํ”ผ์ฒ˜ ์Šค์บํด๋”ฉ ํ…œํ”Œ๋ฆฟ(feature.swift, Feature.stencil, View.stencil) 3๊ฐœ ํŒŒ์ผ๊ณผ TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ ๋ฌธ์„œ(TCA_GUIDELINES.md, TCA_GUIDELINES.html)๋ฅผ ์‹ ๊ทœ ์ถ”๊ฐ€ํ•œ๋‹ค.

Changes

TCA ๋ฒ„์ „ ์—… ๋ฐ ํ”ผ์ฒ˜ ํ…œํ”Œ๋ฆฟยท๊ฐ€์ด๋“œ ์ถ”๊ฐ€

Layer / File(s) Summary
TCA ์˜์กด์„ฑ ๋ฒ„์ „ ์—…
Tuist/Package.swift
swift-composable-architecture ์ตœ์†Œ ๋ฒ„์ „์„ 1.15.0์—์„œ 1.25.0์œผ๋กœ ๋ณ€๊ฒฝ.
Tuist ํ”ผ์ฒ˜ ์Šค์บํด๋”ฉ ํ…œํ”Œ๋ฆฟ
Tuist/Templates/feature/feature.swift, Tuist/Templates/feature/Feature.stencil, Tuist/Templates/feature/View.stencil
name ์†์„ฑ์„ ํ•„์ˆ˜๋กœ ๋ฐ›์•„ @Reducer ๊ธฐ๋ฐ˜ Feature(State, Action, Delegate, body ์Šคํ…)์™€ SwiftUI View(content, task ์•ก์…˜ ๋””์ŠคํŒจ์น˜, #Preview) ๋‘ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” Tuist ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€.
TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ ๋ฌธ์„œ
docs/TCA_GUIDELINES.md, docs/TCA_GUIDELINES.html
TCA 1.25.0 Observation ๊ธฐ๋ฐ˜ ์ปจ๋ฒค์…˜ ์ „์ฒด(State/Action/Reducer/Effect/Dependency/Navigation/View/Testing, ์•ˆํ‹ฐํŒจํ„ด, AI ์—์ด์ „ํŠธ์šฉ ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐ ์ถœ๋ ฅ ํ˜•์‹)๋ฅผ MDยทHTML ๋‘ ํ˜•ํƒœ๋กœ ๋ฌธ์„œํ™”.

์ถ”์ • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋…ธ๋ ฅ

๐ŸŽฏ 2 (Simple) | โฑ๏ธ ~10 minutes

Suggested labels

โœจ Feature

Suggested reviewers

  • yeseonglee
๐Ÿšฅ Pre-merge checks | โœ… 5
โœ… Passed checks (5 passed)
Check name Status Explanation
Linked Issues check โœ… Passed #21์˜ ๋ฌธ์„œ, feature.swift, View.stencil, Feature.stencil, ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์š”๊ตฌ๋ฅผ ๋ชจ๋‘ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค.
Out of Scope Changes check โœ… Passed ์ถ”๊ฐ€๋œ HTML ๋ฌธ์„œ๋Š” ๊ฐ€์ด๋“œ ๋ฌธ์„œ์˜ ๋ Œ๋”๋ง์šฉ ๋ณด์กฐ ์‚ฐ์ถœ๋ฌผ๋กœ ๋ณด์ด๋ฉฐ, ๋ณ€๊ฒฝ ๋ฒ”์œ„๋Š” ์š”์ฒญ๋œ TCA ๋ฌธ์„œยทํ…œํ”Œ๋ฆฟ ์ž‘์—…์— ๋งž์Šต๋‹ˆ๋‹ค.
Docstring Coverage โœ… Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check โœ… Passed TCA ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฌธ์„œ์™€ scaffold ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€๋ผ๋Š” ํ•ต์‹ฌ ๋ณ€๊ฒฝ์„ ์ •ํ™•ํžˆ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.
Description Check โœ… Passed Check skipped - CodeRabbitโ€™s high-level summary is enabled.
โœจ Finishing Touches
๐Ÿ“ Generate docstrings
  • Create stacked PR
  • Commit on current branch
๐Ÿงช Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/#21

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

โค๏ธ Share

Comment @coderabbitai help to get the list of available commands.

@doyeonk429 doyeonk429 self-assigned this Jun 30, 2026
@doyeonk429 doyeonk429 added the ๐Ÿ“ƒ Docs ๋ฌธ์„œ ์ž‘์—… ๋ฐ ์ˆ˜์ • label Jun 30, 2026
@doyeonk429 doyeonk429 changed the title [#21] docs: TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ ๐Ÿ“ƒ Docs: #21 TCA ์ปจ๋ฒค์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ Jun 30, 2026
@doyeonk429

Copy link
Copy Markdown
Contributor Author

.html ํŒŒ์ผ์„ ์—ด๋ฉด ๊ฐ€๋…์„ฑ ์ข‹์€ ํŒŒ์ผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .md ํŒŒ์ผ์€ AI agent๊ฐ€ ๋ฆฌ๋ทฐํ•  ๋•Œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

๐Ÿงน Nitpick comments (1)
Tuist/Templates/feature/Feature.stencil (1)

3-4: ๐Ÿ“ Maintainability & Code Quality | ๐Ÿ”ต Trivial | โšก Quick win

์ƒ์„ฑ๋˜๋Š” Feature ์Šค์ผˆ๋ ˆํ†ค๋„ ์ €์žฅ์†Œ ์Šคํƒ€์ผ์„ ๋ฐ”๋กœ ๋”ฐ๋ฅด๋„๋ก ๋งž์ถฐ ์ฃผ์„ธ์š”.

์ง€๊ธˆ ํ…œํ”Œ๋ฆฟ์€ ComposableArchitecture๋ฅผ Foundation๋ณด๋‹ค ๋จผ์ € importํ•˜๊ณ , Action ํ•˜์œ„ ์„น์…˜๋„ // MARK: View ํ˜•์‹์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์Šค์บํด๋“œ ์ถœ๋ ฅ๋ฌผ์ด ๊ณง๋ฐ”๋กœ ๋ฆฌ๋ทฐ ๊ธฐ์ค€์„ ํ†ต๊ณผํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด import ์ˆœ์„œ์™€ // MARK: - ํ‘œ๊ธฐ๋ฅผ ํ…œํ”Œ๋ฆฟ์—์„œ ๋งž์ถฐ ๋‘๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค. As per path instructions, "**/*.swift: // MARK: - ์œ„์•„๋ž˜์— ๋นˆ ์ค„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”." and "**/*.swift: ๋ชจ๋“ˆ ์ž„ํฌํŠธ๊ฐ€ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. (๋‚ด์žฅ ํ”„๋ ˆ์ž„์›Œํฌ ๋จผ์ €, ๋นˆ ์ค„๋กœ ์„œ๋“œํŒŒํ‹ฐ ๊ตฌ๋ถ„)".

์˜ˆ์‹œ ์ˆ˜์ •
-import ComposableArchitecture
 import Foundation
+
+import ComposableArchitecture
@@
-    // MARK: View
+    // MARK: - View
@@
-    // MARK: Internal
+    // MARK: - Internal
@@
-    // MARK: Child
+    // MARK: - Child
@@
-    // MARK: Delegate
+    // MARK: - Delegate

Also applies to: 22-30

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Tuist/Templates/feature/Feature.stencil` around lines 3 - 4, The Feature
template is generating code that violates the repositoryโ€™s Swift style by
placing ComposableArchitecture before Foundation and by emitting MARK comments
without the required separator format. Update the Feature.stencil template so
the import block follows alphabetic order with built-in frameworks first and a
blank line before third-party imports, and make sure the generated section
headers use the `// MARK: -` convention with blank lines around them. Use the
templateโ€™s import declarations and MARK sections as the main points to adjust so
all generated Feature scaffolds conform immediately.

Source: Path instructions

๐Ÿค– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/TCA_GUIDELINES.html`:
- Around line 373-377: The section link text in the read-note is inconsistent
with the target anchor, so update the โ€œ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธโ€ label to match the
`#sec-12` destination. Adjust the text in the read-note block within the HTML
doc so the visible section number aligns with the linked section title, keeping
the existing `href` and surrounding guidance unchanged.

In `@docs/TCA_GUIDELINES.md`:
- Around line 67-69: Several fenced code blocks in TCA_GUIDELINES.md are missing
language tags, which triggers markdownlint warnings and removes syntax
highlighting. Update the affected fences to use the appropriate language
identifiers based on content, such as bash for shell commands, swift for Swift
snippets, and text for plain examples; check the nearby fenced blocks around the
referenced examples and make the same fix consistently across the document.
- Around line 10-12: The intro and cross-reference links in TCA_GUIDELINES.md
are pointing to the wrong checklist section number and fragment. Update the
links that currently reference โ€œ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธโ€ so they match the actual heading
for the checklist section, using the same section name and anchor as the
existing โ€œ12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (AI ์—์ด์ „ํŠธ์šฉ)โ€ heading, and verify any repeated references
in the document stay consistent.
- Around line 471-475: `CancelID` ์„ค๋ช…์ด ๋ณธ๋ฌธ/์ฒดํฌ๋ฆฌ์ŠคํŠธ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์˜ˆ์ œ์—์„œ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋ฏ€๋กœ,
`cancellable(id:)`์™€ ํ•จ๊ป˜ ์“ฐ๋Š” ์ทจ์†Œ ์‹๋ณ„์ž ์„ค๋ช…์„ โ€œcancellation ID์šฉ enumโ€์ฒ˜๋Ÿผ ์ผ๊ด€๋œ ํ‘œํ˜„์œผ๋กœ ๋ฐ”๊พธ๊ณ 
`CancelID` ์˜ˆ์‹œ์™€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฌธ๊ตฌ๋ฅผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋งž์ถ”์„ธ์š”. ํŠนํžˆ `CancelID`์˜ ์ •์˜ ๋ฐฉ์‹๊ณผ ์˜ˆ์ œ์—์„œ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹์ด ๋ชจ์ˆœ๋˜์ง€
์•Š๋„๋ก ๋ฌธ์žฅ ์ „์ฒด๋ฅผ ํ†ต์ผํ•ด ๋…์ž๊ฐ€ ๋™์ผํ•œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •๋ฆฌํ•˜์„ธ์š”.
- Around line 452-454: The `projectsResponse` example in the TCA guidelines uses
`Result { try await ... }`, which is not compatible with Swift 5.9. Update this
example to use a Swift 5.9-safe pattern such as `do/catch` or `TaskResult`, and
make the same replacement anywhere the same `Result { try await ... }` pattern
is repeated in the document. Use the surrounding `return .run { send in ... }`
snippet as the reference point when editing.

---

Nitpick comments:
In `@Tuist/Templates/feature/Feature.stencil`:
- Around line 3-4: The Feature template is generating code that violates the
repositoryโ€™s Swift style by placing ComposableArchitecture before Foundation and
by emitting MARK comments without the required separator format. Update the
Feature.stencil template so the import block follows alphabetic order with
built-in frameworks first and a blank line before third-party imports, and make
sure the generated section headers use the `// MARK: -` convention with blank
lines around them. Use the templateโ€™s import declarations and MARK sections as
the main points to adjust so all generated Feature scaffolds conform
immediately.
๐Ÿช„ Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

โ„น๏ธ Review info
โš™๏ธ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 14b95faf-ad31-4b72-8970-e25475668866

๐Ÿ“ฅ Commits

Reviewing files that changed from the base of the PR and between 2176f22 and 9c08aa0.

๐Ÿ“’ Files selected for processing (6)
  • Tuist/Package.swift
  • Tuist/Templates/feature/Feature.stencil
  • Tuist/Templates/feature/View.stencil
  • Tuist/Templates/feature/feature.swift
  • docs/TCA_GUIDELINES.html
  • docs/TCA_GUIDELINES.md

Comment thread docs/TCA_GUIDELINES.html
Comment on lines +373 to +377
<div class="read-note">
<strong>์ด ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ</strong><br>
TCA๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด <a href="#sec-0">0. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— โ€” ๋งˆ์ธ๋“œ๋ชจ๋ธ</a>๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์œผ์„ธ์š”.
์ด๋ฏธ ์ต์ˆ™ํ•˜๋‹ค๋ฉด <a href="#sec-12">11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ</a>๋กœ ๋ฐ”๋กœ ๊ฐ€๋„ ๋ฉ๋‹ˆ๋‹ค.
๋ณธ๋ฌธ ๊ฐ ์ ˆ์—๋Š” <em>์–ธ์ œ ์ด๊ฑธ ์“ฐ๋Š”๊ฐ€ โ†’ ์™œ ์ด๋ ‡๊ฒŒ ์“ฐ๋Š”๊ฐ€ โ†’ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฐ€</em> ์ˆœ์„œ๋กœ ์ •๋ฆฌ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐Ÿ“ Maintainability & Code Quality | ๐ŸŸก Minor | โšก Quick win

์„น์…˜ ๋งํฌ ํ…์ŠคํŠธ๊ฐ€ ๋ณธ๋ฌธ ๋ฒˆํ˜ธ์™€ ์–ด๊ธ‹๋‚ฉ๋‹ˆ๋‹ค.

href๋Š” #sec-12๋กœ ๋งž๋Š”๋ฐ, Line 376 ํ…์ŠคํŠธ๋Š” ์•„์ง 11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. HTML ๋ฒ„์ „๋งŒ ์ฝ๋Š” ์‚ฌ๋žŒ๋„ ํ˜ผ๋™ํ•˜๋‹ˆ ๋ฒˆํ˜ธ๋ฅผ 12๋กœ ๋งž์ถฐ ์ฃผ์„ธ์š”.

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/TCA_GUIDELINES.html` around lines 373 - 377, The section link text in
the read-note is inconsistent with the target anchor, so update the โ€œ11. ๋ฆฌ๋ทฐ
์ฒดํฌ๋ฆฌ์ŠคํŠธโ€ label to match the `#sec-12` destination. Adjust the text in the
read-note block within the HTML doc so the visible section number aligns with
the linked section title, keeping the existing `href` and surrounding guidance
unchanged.

Comment thread docs/TCA_GUIDELINES.md
Comment on lines +10 to +12
> **์ด ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ**
> TCA๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด [0. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— โ€” ๋งˆ์ธ๋“œ๋ชจ๋ธ](#0-์‹œ์ž‘ํ•˜๊ธฐ-์ „์—--๋งˆ์ธ๋“œ๋ชจ๋ธ)๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์œผ์„ธ์š”.
> ์ด๋ฏธ ์ต์ˆ™ํ•˜๋‹ค๋ฉด [11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ](#11-๋ฆฌ๋ทฐ-์ฒดํฌ๋ฆฌ์ŠคํŠธ-ai-์—์ด์ „ํŠธ์šฉ)๋กœ ๋ฐ”๋กœ ๊ฐ€๋„ ๋ฉ๋‹ˆ๋‹ค.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐Ÿ“ Maintainability & Code Quality | ๐ŸŸก Minor | โšก Quick win

์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋งํฌ ๋ฒˆํ˜ธ์™€ fragment๋ฅผ ์‹ค์ œ ์„น์…˜์— ๋งž์ถฐ ์ฃผ์„ธ์š”.

Line 12์™€ Line 79๊ฐ€ ์•„์ง 11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌ์ผœ์„œ ๋ฌธ์„œ ๋‚ด ์ด๋™์ด ๊นจ์ง‘๋‹ˆ๋‹ค. ํ˜„์žฌ ํ—ค๋”ฉ์€ ## 12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (AI ์—์ด์ „ํŠธ์šฉ)์ด๋ฏ€๋กœ ๋งํฌ ํ…์ŠคํŠธ์™€ fragment๋ฅผ ํ•จ๊ป˜ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Also applies to: 79-79

๐Ÿงฐ Tools
๐Ÿช› markdownlint-cli2 (0.22.1)

[warning] 12-12: Link fragments should be valid

(MD051, link-fragments)

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/TCA_GUIDELINES.md` around lines 10 - 12, The intro and cross-reference
links in TCA_GUIDELINES.md are pointing to the wrong checklist section number
and fragment. Update the links that currently reference โ€œ11. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธโ€ so they
match the actual heading for the checklist section, using the same section name
and anchor as the existing โ€œ12. ๋ฆฌ๋ทฐ ์ฒดํฌ๋ฆฌ์ŠคํŠธ (AI ์—์ด์ „ํŠธ์šฉ)โ€ heading, and verify any
repeated references in the document stay consistent.

Source: Linters/SAST tools

Comment thread docs/TCA_GUIDELINES.md
Comment on lines +67 to +69
```bash
tuist scaffold feature --name ProjectList
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐Ÿ“ Maintainability & Code Quality | ๐ŸŸก Minor | โšก Quick win

์ฝ”๋“œ ํŽœ์Šค ์–ธ์–ด๋ฅผ ์ง€์ •ํ•ด ๋‘๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์—ฌ๋Ÿฌ fenced code block์— ์–ธ์–ด๊ฐ€ ๋น ์ ธ ์žˆ์–ด์„œ markdownlint ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜๊ณ , ๋ Œ๋”๋ง ์‹œ ํ•˜์ด๋ผ์ดํŒ…๋„ ์žƒ์Šต๋‹ˆ๋‹ค. bash, swift, text์ฒ˜๋Ÿผ block ์„ฑ๊ฒฉ์— ๋งž๋Š” ์–ธ์–ด๋ฅผ ๋ถ™์—ฌ ์ฃผ์„ธ์š”.

Also applies to: 73-77, 92-104, 556-569, 843-861, 1319-1336

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/TCA_GUIDELINES.md` around lines 67 - 69, Several fenced code blocks in
TCA_GUIDELINES.md are missing language tags, which triggers markdownlint
warnings and removes syntax highlighting. Update the affected fences to use the
appropriate language identifiers based on content, such as bash for shell
commands, swift for Swift snippets, and text for plain examples; check the
nearby fenced blocks around the referenced examples and make the same fix
consistently across the document.

Source: Linters/SAST tools

Comment thread docs/TCA_GUIDELINES.md
Comment on lines +452 to +454
return .run { send in
await send(.projectsResponse(Result { try await projectClient.fetchAll() }))
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐ŸŽฏ Functional Correctness | ๐ŸŸก Minor | โšก Quick win

๐Ÿงฉ Analysis chain

๐ŸŒ Web query:

Does Swift 5.9 support initializing Resultwith an async throwing closure likeResult { try await foo() }?

๐Ÿ’ก Result:

As of June 30, 2026, Swift does not support initializing Result with an async throwing closure (e.g., Result { try await foo }) in Swift 5.9 [1]. This feature was added in Swift 6.4 via the proposal SE-0530, "Async Result Support" [1][2]. While the syntax await Result { try await foo() } is available in the current Swift versions (Swift 6.4+), it was not part of the language in Swift 5.9 [1]. In versions like Swift 5.9, developers typically handled this by manually performing the work in a do-catch block or by creating a custom extension to provide the missing async initializer [3][1][4].

Citations:


๐Ÿ Script executed:

#!/bin/bash
set -euo pipefail

file="docs/TCA_GUIDELINES.md"

# Show the relevant sections around both mentioned locations.
sed -n '440,465p' "$file"
printf '\n---\n'
sed -n '514,530p' "$file"

Repository: DevaultProject/Devault-macOS

Length of output: 1158


Result { try await ... } ์˜ˆ์ œ๋Š” Swift 5.9์™€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Result์˜ async throwing initializer๋Š” Swift 6.4๋ถ€ํ„ฐ๋ผ์„œ, ํˆด์ฒด์ธ 5.9 ๋…์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ๋ง‰ํž™๋‹ˆ๋‹ค. do/catch ๋˜๋Š” TaskResult ์˜ˆ์ œ๋กœ ๋ฐ”๊พธ๋Š” ํŽธ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํŒจํ„ด์ด ์•„๋ž˜ ์˜ˆ์ œ์—๋„ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/TCA_GUIDELINES.md` around lines 452 - 454, The `projectsResponse`
example in the TCA guidelines uses `Result { try await ... }`, which is not
compatible with Swift 5.9. Update this example to use a Swift 5.9-safe pattern
such as `do/catch` or `TaskResult`, and make the same replacement anywhere the
same `Result { try await ... }` pattern is repeated in the document. Use the
surrounding `return .run { send in ... }` snippet as the reference point when
editing.

Comment thread docs/TCA_GUIDELINES.md
Comment on lines +471 to +475
๊ฒ€์ƒ‰ยท๋””๋ฐ”์šด์Šค ๋“ฑ **์ด์ „ ์ž‘์—…์„ ์ทจ์†Œํ•ด์•ผ ํ•˜๋Š” Effect**๋Š” `cancellable(id:)`๋ฅผ ์”๋‹ˆ๋‹ค.
ID๋Š” enum case ์—†๋Š” `enum CancelID { case search }` ํŒจํ„ด์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

```swift
private enum CancelID { case search }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

๐ŸŽฏ Functional Correctness | ๐ŸŸก Minor | โšก Quick win

CancelID ์„ค๋ช…์ด ์˜ˆ์ œ์™€ ๋ชจ์ˆœ๋ฉ๋‹ˆ๋‹ค.

๋ณธ๋ฌธ๊ณผ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” "case ์—†๋Š” enum"์„ ์š”๊ตฌํ•˜์ง€๋งŒ, ๋ฐ”๋กœ ์•„๋ž˜ ์˜ˆ์ œ๋Š” CancelID.search๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ‘œํ˜„๋Œ€๋กœ๋ฉด ๋…์ž๊ฐ€ ์ž˜๋ชป๋œ ํƒ€์ž…์„ ๋งŒ๋“ค๊ธฐ ์‰ฌ์šฐ๋‹ˆ "cancellation ID์šฉ enum"์ฒ˜๋Ÿผ ์„ค๋ช…์„ ๊ณ ์น˜๊ณ  ์˜ˆ์ œ/์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ํ‘œํ˜„์œผ๋กœ ํ†ต์ผํ•ด ์ฃผ์„ธ์š”.

Also applies to: 1276-1276

๐Ÿค– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/TCA_GUIDELINES.md` around lines 471 - 475, `CancelID` ์„ค๋ช…์ด ๋ณธ๋ฌธ/์ฒดํฌ๋ฆฌ์ŠคํŠธ์˜
์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์˜ˆ์ œ์—์„œ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋ฏ€๋กœ, `cancellable(id:)`์™€ ํ•จ๊ป˜ ์“ฐ๋Š” ์ทจ์†Œ ์‹๋ณ„์ž ์„ค๋ช…์„ โ€œcancellation ID์šฉ
enumโ€์ฒ˜๋Ÿผ ์ผ๊ด€๋œ ํ‘œํ˜„์œผ๋กœ ๋ฐ”๊พธ๊ณ  `CancelID` ์˜ˆ์‹œ์™€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฌธ๊ตฌ๋ฅผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋งž์ถ”์„ธ์š”. ํŠนํžˆ `CancelID`์˜ ์ •์˜ ๋ฐฉ์‹๊ณผ
์˜ˆ์ œ์—์„œ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹์ด ๋ชจ์ˆœ๋˜์ง€ ์•Š๋„๋ก ๋ฌธ์žฅ ์ „์ฒด๋ฅผ ํ†ต์ผํ•ด ๋…์ž๊ฐ€ ๋™์ผํ•œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •๋ฆฌํ•˜์„ธ์š”.

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

Labels

๐Ÿ“ƒ Docs ๋ฌธ์„œ ์ž‘์—… ๋ฐ ์ˆ˜์ •

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: TCA Convention & Code Template ์ž‘์„ฑ

1 participant