Communitygithub.com

프로세스 생성

toy_process 패키지를 사용하여 새 Process 서브클래스(set_parameters, set_steps, step 메서드, 중첩 하위 프로세스)와 그 테스트를 작성합니다. design-process로 계획한 후 process_package에서 프로세스, 워크플로우 또는 파이프라인을 구축할 때 사용하세요.

프로세스 생성란 무엇인가요?

이 스킬은 process_package 내에서 구조화된 프로세스, 워크플로우 또는 파이프라인을 생성하는 방법을 개발자에게 안내합니다. toy_process.Process를 상속받아 set_parameters()와 set_steps() 메서드를 구현하고, 각 단계 메서드에서 self.params와 context 사전을 활용하는 패턴을 제시합니다. 중첩된 서브클래스를 단계로 포함시킬 수 있어 복잡한 워크플로우도 모듈식으로 구성 가능합니다. 또한 unittest 기반의 테스트 파일을 함께 생성하여 매개변수 오버라이드 동작을 검증하도록 돕습니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 활용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/PaeoniaCommon/SkillsOdea/tree/HEAD/.opencode/skills/create-process

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

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

문서

프로세스 생성은(는) 무엇을 하나요?

모든 경로는 리포지토리 루트를 기준으로 합니다. 패키지는 process_package/에 있습니다.

부모 클래스 작동 방식

process_package/toy_process/process.py는 Process를 정의합니다:

  • __init__(**overrides)는 self.params = {**self.set_parameters(), **overrides}를 설정한 후 self.steps = self.set_steps()를 호출합니다.
  • set_parameters()와 set_steps()는 추상 메서드입니다. 이 두 메서드 중 하나라도 구현하지 않은 하위 클래스는 인스턴스화할 수 없습니다.
  • run(context=None)은 self.steps를 순서대로 반복하며 실행합니다:
    • Process 인스턴스 → step.run(context), 중첩되며 동일한 context 사전을 사용합니다.
    • 다른 호출 가능한 객체 → step(context)
    • 그 외 → TypeError
  • run은 context 사전을 반환하고 들여쓰기된 추적 정보를 출력합니다.

toy_process/를 수정하거나 하위 클래스에서 __init__ 또는 run을 오버라이드하지 마십시오.

하위 클래스 규칙

  1. from toy_process import Process로 임포트하고 상속받습니다.
  2. set_parameters(self)는 기본값의 dict를 반환합니다. 기본값이 없으면 {}를 사용하십시오.
  3. set_steps(self)는 list를 반환합니다. 각 항목은 다음 중 하나여야 합니다:
    • 바인딩된 메서드: self.count_words, 괄호 없이
    • Process 인스턴스: CleanText(lowercase=self.params["lowercase"])
  4. 각 단계 메서드는 시그니처 def name(self, context):를 가집니다.
    • 설정은 self.params["..."]에서 읽습니다.
    • 데이터는 context["..."]에서 읽고 씁니다.
    • 아무것도 반환하지 않습니다. 반환 값은 무시됩니다.
  5. 사용하는 클래스 위에 하위 프로세스 클래스를 정의하거나 임포트하십시오.

템플릿

"""프로세스가 수행하는 작업을 한 줄로 설명.

process_package/에서 실행:
    python -m examples.<module_name>
"""

from toy_process import Process


class SubTask(Process):
    def set_parameters(self):
        return {"option": True}

    def set_steps(self):
        return [self.do_part]

    def do_part(self, context):
        if self.params["option"]:
            context["value"] = context["value"] * 2


class MainTask(Process):
    def set_parameters(self):
        return {"start": 1, "option": True}

    def set_steps(self):
        return [
            self.load,
            SubTask(option=self.params["option"]),  # 중첩된 하위 프로세스
            self.finish,
        ]

    def load(self, context):
        context["value"] = self.params["start"]

    def finish(self, context):
        context["result"] = f"value is {context['value']}"


if __name__ == "__main__":
    print(MainTask(start=5).run()["result"])

생성할 파일

  1. process_package/examples/<module_name>.py: 템플릿을 기반으로 한 프로세스.
  2. process_package/tests/test_<module_name>.py: .run()을 호출하고 반환된 context의 키를 검증하는 unittest 테스트. 매개변수 오버라이드가 결과를 변경하는지도 확인하십시오.
import unittest

from examples.<module_name> import MainTask


class MainTaskTests(unittest.TestCase):
    def test_run(self):
        self.assertEqual(MainTask(start=5).run()["result"], "value is 10")

    def test_parameter_override(self):
        self.assertEqual(MainTask(start=5, option=False).run()["result"], "value is 5")


if __name__ == "__main__":
    unittest.main()

그런 다음 run-process 스킬로 검증하십시오. 완전한 작동 예제는 process_package/examples/word_report.py에 있습니다.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬