Community코딩 & 개발github.com

기능 설계 제안

아키텍처와 구현 지침을 포함한 기능 기술 설계 문서를 생성하거나 업데이트합니다.

기능 설계 제안란 무엇인가요?

이 스킬은 기능의 기술 설계 문서를 작성하는 방법을 안내합니다. 사용자는 기능 개념과 요구 사항이 준비된 후, 아키텍처, 패턴, 설계 결정 사항을 문서화하여 실제 코드 구현을 위한 지침을 제공할 수 있습니다. 주로 Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용되며, SKILL.md 문서를 기반으로 설계 템플릿 복사, 제약 조건 식별, 아키텍처 정의, 도메인 모델 명세, 모듈 구조 설계, 설계 패턴 및 결정 사항 문서화 등의 절차를 포함합니다. 이 스킬은 구현자가 코드를 작성하기 전에 올바른 방향을 설정하고, 잠재적인 실수를 방지하는 데 매우 유용합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cbgbt/bottlerocket-forest/tree/main/skills/propose-feature-design

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Propose Feature Design Skill

목적

구현을 안내하는 기술 설계 문서를 만듭니다. 이는 실제 코드를 작성하지 않고 아키텍처, 패턴, 설계 결정 사항을 제공합니다.

사용 시기

  • 기능 개념과 요구 사항이 존재할 때
  • 구현 접근 방식을 계획할 준비가 되었을 때
  • 아키텍처와 설계 패턴을 문서화해야 할 때

전제 조건

  • 기능 개념이 docs/features/NNNN-feature-name/concept.md에 존재함
  • 요구 사항이 docs/features/NNNN-feature-name/requirements.md에 존재함
  • 사용자가 기술 접근 방식을 이해함

절차

1. 전제 조건 확인

# 개념과 요구 사항이 있는지 확인
ls ./docs/features/NNNN-feature-name/concept.md
ls ./docs/features/NNNN-feature-name/requirements.md

둘 중 하나라도 없으면 해당 단계를 먼저 완료하세요.

2. 아이디어 다듬기 문서 확인

ls ./planning/NNNN-feature-name/idea-honing.md 2>/dev/null

존재한다면, 아이디어 다듬기 중 논의된 설계 인사이트와 기술적 고려 사항을 검토하세요.

3. 설계 템플릿 복사

cp ./docs/features/0000-templates/design.md ./docs/features/NNNN-feature-name/

4. 개요 작성

아키텍처와 설계 접근 방식에 대한 높은 수준의 설명을 작성합니다. 개념과 요구 사항을 참조하세요.

5. 중요 제약 조건 식별

각 주요 작업에 대해 다음을 질문하세요:

  • 이것을 구현하는 잘못된 방법은 무엇인가?
  • 어떤 성능 특성이 필요한가?
  • 어떤 불변 조건이 유지되어야 하는가?

중요 제약 조건 표를 다음으로 채우세요:

  • ID: CC-1, CC-2 등
  • 제약 조건: 반드시 특정 방식으로 수행되어야 하는 것
  • 근거: 이유 (성능, 정확성, 보안)
  • 안티 패턴: 리뷰에서 거부해야 할 잘못된 접근 방식

이것은 구현 실수를 방지하는 가장 중요한 섹션입니다. 구체적으로 작성하세요—모호한 제약 조건은 도움이 되지 않습니다.

6. 아키텍처 정의

전체 구조를 설명하세요:

  • 컴포넌트 관계
  • 데이터 흐름
  • 계층별 책임
  • 통합 지점

필요한 경우 ASCII 아트를 사용한 간단한 다이어그램을 사용하세요.

7. 솔루션 메커니즘 설명

이 섹션은 '왜'(개념)와 '무엇'(아키텍처)을 연결합니다. 개념에서 식별된 각 핵심 과제에 대해 설계가 어떻게 이를 해결하는지 설명하세요.

각 과제에 대해 다음을 답하세요:

  • 근본적인 문제는 무엇인가? (concept.md에서)
  • 어떤 아키텍처 요소가 이를 해결하는가?
  • 왜 이 접근 방식이 작동하는가?
  • 다르게 했을 때 무엇이 실패할 것인가?

표 또는 구조화된 목록 형식:

과제아키텍처 요소작동 이유
개념의 과제이를 해결하는 컴포넌트/패턴메커니즘 설명

작성자를 위한 프롬프트:

  • "누군가 '이것이 어떻게 X를 해결하나요?'라고 물었을 때, 특정 컴포넌트를 가리킬 수 있나요?"
  • "새로운 엔지니어가 왜 이 설계가 대안보다 선택되었는지 이해할 수 있나요?"
  • "각 주요 컴포넌트가 문제와 연결된 명확한 존재 이유를 가지고 있나요?"

이 섹션은 리뷰어가 설계가 단지 그럴듯한 코드 구조를 설명하는 것이 아니라 실제로 명시된 문제를 해결한다는 확신을 갖게 해야 합니다.

8. 도메인 모델 정의

핵심 유형과 작업을 명세하세요:

유형

  • 목적과 역할
  • 주요 속성
  • 유효성 검사 규칙
  • 다른 유형과의 관계

작업

  • 함수 시그니처 (개념적)
  • 수행하는 작업
  • 주요 동작
  • 불변 조건 (항상 참이어야 하는 것)

9. 모듈 구조 정의

코드가 어떻게 구성되어야 하는지 보여주세요:

  • 디렉터리 구조
  • 모듈 책임
  • 파일 조직
  • 관심사 분리

모듈 크기 제한: 이 프로젝트는 모듈당 550줄 제한을 적용합니다 (scripts/lint_loc.py 참조). 모듈을 설계할 때 컴포넌트가 이 제한을 초과할 수 있는지 고려하세요. 초과할 경우 내부 분해를 사전에 계획하세요—아티팩트 유형별이 아니라 기능별로 분할하세요(예: builder.rs, searcher.rs). 린터의 출력에는 제한을 초과할 경우 리팩터링 지침이 포함됩니다.

impl 블록을 함께 유지: 한 유형에 대한 모든 impl 블록은 하나의 파일에 있어야 합니다. impl 블록을 여러 파일에 흩뜨리면 독자(및 AI)가 유형이 수행하는 작업의 전체 그림을 얻기 어렵습니다. 유형의 구현이 너무 큰 경우, impl 블록 자체를 분할하지 말고 헬퍼 함수나 내부 컴포넌트 유형에 위임하세요.

// ✅ 좋음: 단일 impl 블록이 헬퍼에 위임
impl KnowledgeIndex {
    pub fn build(&self, path: &Path) -> Result<()> {
        self.builder.build(path)  // 내부 컴포넌트에 위임
    }
}

// ❌ 나쁨: impl 블록이 여러 파일에 분할됨
// facade/mod.rs: impl KnowledgeIndex { fn new() ... }
// facade/build.rs: impl KnowledgeIndex { fn build() ... }
// facade/search.rs: impl KnowledgeIndex { fn search() ... }

10. 설계 패턴 문서화

관련 패턴과 적용 이유를 설명하세요:

  • 사용할 패턴
  • 문제에 어떻게 적합한지
  • 구현 지침

11. 설계 결정 사항 문서화

대안 간의 중요한 선택에 대해 설계 결정 사항 섹션에 항목을 추가하세요:

  • 결정된 사항
  • 고려된 대안
  • 이 옵션이 선택된 이유
  • 구현에 미치는 영향

이것은 구현자가 추론을 이해하는 데 도움이 되는 기록을 만듭니다.

12. 구현 지침 추가

구현자를 위한 주요 고려 사항:

  • 중요 제약 조건을 ID로 참조
  • 성능 고려 사항
  • 테스트 접근 방식
  • 처리해야 할 엣지 케이스

13. 코드 최소화 유지

기억하세요:

  • 최소한의 설명 코드 사용
  • 아키텍처와 결정 사항에 초점
  • 구현자를 안내하고, 구현하지 마세요
  • 관련 시 요구 사항을 ID로 참조

검증

설계 문서를 확인하세요:

# 파일 존재 확인
ls ./docs/features/NNNN-feature-name/design.md

# 내용 확인
head -50 ./docs/features/NNNN-feature-name/design.md

일반적인 문제

코드가 너무 많음: 큰 코드 블록이 있으면 제거하고 지침에 집중하세요.

너무 추상적: 설계가 모호하면 구체적인 유형 이름과 모듈 구조를 추가하세요.

아키텍처 누락: 세부 사항에 들어가기 전에 전체 구조가 명확한지 확인하세요.

요구 사항을 참조하지 않음: 설계 결정을 특정 요구 사항 ID와 연결하세요.

솔루션 메커니즘 누락: 설계가 구조를 설명하지만 문제를 해결하는 이유를 설명하지 않으면, 과제를 아키텍처 요소에 매핑하는 솔루션 메커니즘 섹션을 추가하세요.

다음 단계

설계를 만든 후:

  1. 구현자와 함께 타당성 검토
  2. 피드백에 따라 개선
  3. 설계가 확정되면 propose-feature-test-plan 스킬을 사용하여 테스트 계획 생성
  4. 그런 다음 propose-implementation-plan 스킬을 사용하여 구현 계획 생성

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

ad-hoc-implementation-plan

Transform a rough plan into implement-commit ready artifacts. Allows rigorous review while implementing.

build-kit-locally

Build a kit and publish it to a locally hosted registry for development testing

build-variant-from-local-kits

Build a variant using locally published kits for development validation

deep-research

Create educational documents that build understanding progressively with citations

edit-spec-file

Edit Bottlerocket RPM spec files following project style conventions

fact-find

Quick lookup of specific facts about Bottlerocket with citations

idea-honing

Clarify feature ideas through iterative Q&A, recording insights to guide concept development

implement-commit

Implement commits from an implementation plan using a TDD pipeline

local-registry

Start and manage a local OCI registry for Bottlerocket kit development

prepare-core-kit-release

Prepare bottlerocket-core-kit for release by bumping version and updating changelog

propose-feature-concept

Create a new feature concept document to pitch the idea and explain the problem/solution

propose-feature-requirements

Create or update feature requirements specification using EARS notation with examples and appendices

propose-feature-test-plan

Create a test plan mapping EARS requirements and Critical Constraints to specific tests

propose-implementation-plan

Create an implementation plan with atomic commits that build toward a complete feature

review-code

Deep code review generating PR comments via principled question-driven analysis

review-scope

Verify code changes match intended scope and requirements without exceeding boundaries

review-style

Verify code follows project style guides without providing improvement suggestions

test-local-twoliter

Build and test local changes to twoliter before releasing

update-twoliter

Update all Bottlerocket repositories to a new Twoliter version

관련 스킬