Skip to content

Atomic

Low-level primitives: file I/O, git, HTTP, shell, SSH, process management, and testing.

44 modules

ModuleDescription
배열 필터조건으로 배열 요소 필터링
배열 정렬배열 요소를 오름차순 또는 내림차순으로 정렬
배열 고유값배열에서 중복 값 제거
OAuth2 Token ExchangeExchange authorization code, refresh token, or client credentials for an access token
DNS 조회도메인 레코드에 대한 DNS 조회
텍스트 차이두 텍스트 문자열 간의 차이점 생성
파일 편집정확한 문자열 매칭을 사용하여 파일의 텍스트 교체
파일 존재 확인파일 또는 디렉토리 존재 여부 확인
파일 읽기파일에서 내용 읽기
파일 쓰기파일에 내용 쓰기
Git 클론Git 저장소를 클론합니다
Git 커밋Git 커밋을 생성합니다
Git 차이Git 차이를 가져옵니다
HTTP PaginateAutomatically iterate through paginated API endpoints and collect all results
HTTP 요청HTTP 요청 전송 및 응답 수신
HTTP 응답 검증HTTP 응답 속성 검증 및 확인
HTTP SessionSend a sequence of HTTP requests with persistent cookies (login → action → logout)
Webhook WaitStart a temporary server and wait for an incoming webhook callback
LLM 채팅지능형 작업을 위해 LLM API와 상호작용
AI 코드 수정이슈에 기반하여 자동으로 코드 수정 생성
계산기본 수학 연산 수행
HTTP 상태 확인HTTP 상태 확인 / 가동 시간 모니터
포트 확인네트워크 포트가 열려있는지 닫혀있는지 확인
포트 대기네트워크 포트가 사용 가능해질 때까지 대기
프로세스 나열실행 중인 모든 백그라운드 프로세스 나열
백그라운드 프로세스 시작백그라운드 프로세스 시작 (서버, 서비스 등)
프로세스 중지실행 중인 백그라운드 프로세스 중지
셸 명령 실행셸 명령 실행 및 출력 캡처
SSH 실행SSH를 통해 원격 서버에서 명령 실행
SFTP 다운로드SFTP를 통해 원격 서버에서 파일 다운로드
SFTP 업로드SFTP를 통해 원격 서버에 파일 업로드
E2E 단계 실행엔드투엔드 테스트 단계를 순차적으로 실행
품질 게이트정의된 임계값에 대해 품질 메트릭 평가
HTTP 테스트 실행HTTP API 테스트 스위트 실행
린터 실행소스 코드에서 린트 검사 실행
보고서 생성테스트 실행 보고서 생성
시나리오 실행시나리오 기반 테스트 실행 (BDD 스타일)
보안 스캔보안 취약점 스캔
테스트 스위트 실행테스트 모음 실행
단위 테스트 실행단위 테스트 실행
시각적 비교시각적 출력의 차이 비교
UI 품질 평가다차원 점수를 통한 종합적인 UI 품질 평가
AI로 이미지 분석OpenAI Vision API(GPT-4V)를 사용하여 이미지 분석
이미지 비교두 이미지를 비교하여 시각적 차이 식별

Modules

배열 필터

array.filter

조건으로 배열 요소 필터링

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
conditionselect (eq, ne, gt, gte, lt, lte, contains, startswith, endswith, regex, in, notin, exists, empty, notempty)Yes-How to compare each item against the value
valuestringYes-Value to compare each item against (leave empty for exists/empty checks)

Output:

FieldTypeDescription
filteredarray필터링된 배열
countnumber필터링된 배열

Example: Filter numbers greater than 5

yaml
array: [1, 5, 10, 15, 3]
condition: gt
value: 5

배열 정렬

array.sort

배열 요소를 오름차순 또는 내림차순으로 정렬

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
orderselect (asc, desc)NoascDirection to sort items

Output:

FieldTypeDescription
sortedarray정렬된 배열
countnumber정렬된 배열

Example: Sort numbers ascending

yaml
array: [5, 2, 8, 1, 9]
order: asc

배열 고유값

array.unique

배열에서 중복 값 제거

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
preserve_orderbooleanNoTrueKeep first occurrence order

Output:

FieldTypeDescription
uniquearray고유 값 배열
countnumber고유 값 배열
duplicates_removednumber고유 값 배열

Example: Remove duplicates

yaml
array: [1, 2, 2, 3, 4, 3, 5]
preserve_order: true

OAuth2 Token Exchange

auth.oauth2

Exchange authorization code, refresh token, or client credentials for an access token

Parameters:

NameTypeRequiredDefaultDescription
token_urlstringYes-OAuth2 token endpoint URL
grant_typestringNoauthorization_codeOAuth2 grant type
client_idstringYes-OAuth2 application client ID
client_secretstringNo-OAuth2 application client secret
codestringNo-Authorization code received from the OAuth2 authorization flow
redirect_uristringNo-Redirect URI used in the authorization request (must match exactly)
refresh_tokenstringNo-Refresh token for obtaining a new access token
scopestringNo-Space-separated list of OAuth2 scopes
code_verifierstringNo-PKCE code verifier for public clients
client_auth_methodstringNobodyHow to send client credentials to the token endpoint
extra_paramsobjectNo{}Additional parameters to include in the token request
timeoutnumberNo15Maximum time to wait in seconds

Output:

FieldTypeDescription
okbooleanWhether token exchange was successful
access_tokenstringThe access token for API requests
token_typestringToken type (usually "Bearer")
expires_innumberToken lifetime in seconds
refresh_tokenstringRefresh token (if provided by the OAuth2 server)
scopestringGranted scopes
rawobjectFull raw response from the token endpoint
duration_msnumberRequest duration in milliseconds

Example: Exchange authorization code (Google)

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: authorization_code
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
code: 4/0AX4XfWh...
redirect_uri: https://yourapp.com/callback

Example: Refresh an expired token

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: refresh_token
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
refresh_token: ${env.REFRESH_TOKEN}

Example: Client credentials (machine-to-machine)

yaml
token_url: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
grant_type: client_credentials
client_id: ${env.AZURE_CLIENT_ID}
client_secret: ${env.AZURE_CLIENT_SECRET}
scope: https://graph.microsoft.com/.default

Example: GitHub OAuth (code exchange)

yaml
token_url: https://github.com/login/oauth/access_token
grant_type: authorization_code
client_id: ${env.GITHUB_CLIENT_ID}
client_secret: ${env.GITHUB_CLIENT_SECRET}
code: abc123...

DNS 조회

dns.lookup

도메인 레코드에 대한 DNS 조회

Parameters:

NameTypeRequiredDefaultDescription
domainstringYes-조회할 도메인 이름
record_typeselect (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV)NoA조회할 DNS 레코드 유형
timeoutnumberNo10초 단위의 조회 시간 초과

Output:

FieldTypeDescription
okbooleanWhether lookup succeeded
dataobject

Example: A record lookup

yaml
domain: example.com
record_type: A

Example: MX record lookup

yaml
domain: example.com
record_type: MX

텍스트 차이

file.diff

두 텍스트 문자열 간의 차이점 생성

Parameters:

NameTypeRequiredDefaultDescription
originalstringYes-원본 텍스트
modifiedstringYes-수정된 텍스트
context_linesnumberNo3변경 사항 주변의 문맥 줄 수
filenamestringNofile차이 헤더에 사용할 파일명

Output:

FieldTypeDescription
diffstring통합된 차이 출력
changedboolean변경 사항이 있는지 여부
additionsnumber추가된 줄 수
deletionsnumber삭제된 줄 수

Example: Diff two strings

yaml
original: hello
world
modified: hello
world!
filename: test.txt

파일 편집

file.edit

정확한 문자열 매칭을 사용하여 파일의 텍스트 교체

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-편집할 파일의 경로
old_stringstringYes-찾아 교체할 텍스트
new_stringstringYes-교체할 텍스트
replace_allbooleanNoFalse첫 번째만이 아닌 모든 발생을 교체
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8파일 인코딩

Output:

FieldTypeDescription
pathstring편집된 파일의 경로
replacementsnumber교체된 횟수
diffstring변경된 내용을 보여주는 차이

Example: Replace string in file

yaml
path: /tmp/example.py
old_string: def hello():
new_string: def hello_world():

파일 존재 확인

file.exists

파일 또는 디렉토리 존재 여부 확인

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file

Output:

FieldTypeDescription
existsboolean경로 존재 여부
is_fileboolean경로 존재 여부
is_directoryboolean경로 존재 여부

Example: Check file exists

yaml
path: /tmp/data.txt

파일 읽기

file.read

파일에서 내용 읽기

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file

Output:

FieldTypeDescription
contentstring파일 내용
sizenumber파일 내용

Example: Read text file

yaml
path: /tmp/data.txt
encoding: utf-8

파일 쓰기

file.write

파일에 내용 쓰기

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
contentstringYes-Text content to write to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
modeselect (overwrite, append)NooverwriteHow to write content to the file

Output:

FieldTypeDescription
pathstring파일 경로
bytes_writtennumber파일 경로

Example: Write text file

yaml
path: /tmp/output.txt
content: Hello World
mode: overwrite

Git 클론

git.clone

Git 저장소를 클론합니다

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-Git 저장소 URL (HTTPS 또는 SSH)
destinationstringYes-클론할 로컬 경로
branchstringNo-클론 후 체크아웃할 브랜치
depthnumberNo-얕은 클론 깊이 (전체 클론 시 생략)
tokenstringNo-개인 액세스 토큰 (비공개 저장소용)

Output:

FieldTypeDescription
okbooleanWhether clone succeeded
dataobject

Example: Clone public repository

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo

Example: Shallow clone specific branch

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo
branch: develop
depth: 1

Git 커밋

git.commit

Git 커밋을 생성합니다

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Git 저장소 경로
messagestringYes-커밋 메시지
add_allbooleanNoFalse커밋 전 모든 변경사항 스테이징 (git add -A)
filesarrayNo-커밋 전 스테이징할 특정 파일
author_namestringNo-커밋 작성자 이름 재정의
author_emailstringNo-커밋 작성자 이메일 재정의

Output:

FieldTypeDescription
okbooleanWhether commit succeeded
dataobject

Example: Commit all changes

yaml
repo_path: /home/user/project
message: feat: add user authentication
add_all: true

Example: Commit specific files

yaml
repo_path: /home/user/project
message: fix: correct typo in readme
files: ["README.md"]

Git 차이

git.diff

Git 차이를 가져옵니다

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Git 저장소 경로
ref1stringNoHEAD첫 번째 참조 (커밋, 브랜치, 태그)
ref2stringNo-비교할 두 번째 참조
stagedbooleanNoFalse스테이징된 변경사항만 표시 (--cached)
stat_onlybooleanNoFalse파일 통계만 표시 (--stat)

Output:

FieldTypeDescription
okbooleanWhether diff succeeded
dataobject

Example: Show unstaged changes

yaml
repo_path: /home/user/project

Example: Compare branches

yaml
repo_path: /home/user/project
ref1: main
ref2: feature/login

Example: Show staged changes stats

yaml
repo_path: /home/user/project
staged: true
stat_only: true

HTTP Paginate

http.paginate

Automatically iterate through paginated API endpoints and collect all results

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
authobjectNo-Authentication credentials for the HTTP request
strategystringNooffsetHow the API implements pagination
data_pathstringNo-Dot-notation path to the array of items in the response (e.g. "data", "results", "items")
offset_paramstringNooffsetQuery parameter name for offset
limit_paramstringNolimitQuery parameter name for page size
page_sizenumberNo100Number of items per page
page_paramstringNopageQuery parameter name for page number
start_pagenumberNo1First page number (usually 0 or 1)
cursor_paramstringNocursorQuery parameter name for cursor token
cursor_pathstringNo-Dot-notation path to the next cursor in the response (e.g. "meta.next_cursor", "pagination.next")
max_pagesnumberNo50Maximum number of pages to fetch (safety limit)
delay_msnumberNo0Milliseconds to wait between page requests (rate limiting)
timeoutnumberNo30Maximum time to wait in seconds
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all pages were fetched successfully
itemsarrayAll collected items across all pages
total_itemsnumberTotal number of items collected
pages_fetchednumberNumber of pages fetched
duration_msnumberTotal duration in milliseconds

Example: Offset pagination (REST API)

yaml
url: https://api.example.com/users
strategy: offset
data_path: data
page_size: 100

Example: Page number pagination

yaml
url: https://api.example.com/products
strategy: page
data_path: results
page_param: page
page_size: 50
start_page: 1

Example: Cursor pagination (Slack, Notion)

yaml
url: https://api.notion.com/v1/databases/{db_id}/query
method: POST
strategy: cursor
data_path: results
cursor_path: next_cursor
cursor_param: start_cursor
auth: {"type": "bearer", "token": "${env.NOTION_TOKEN}"}

Example: Link header pagination (GitHub)

yaml
url: https://api.github.com/repos/octocat/hello-world/issues
strategy: link_header
page_size: 100
auth: {"type": "bearer", "token": "${env.GITHUB_TOKEN}"}

HTTP 요청

http.request

HTTP 요청 전송 및 응답 수신

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
bodyanyNo-HTTP request body content (JSON, text, or form data)
queryobjectNo{}URL query string parameters as key-value pairs
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)Noapplication/jsonContent type of the request body
authobjectNo-Authentication credentials for the HTTP request
timeoutnumberNo30Maximum time to wait in seconds
follow_redirectsbooleanNoTrueAutomatically follow HTTP redirects
verify_sslbooleanNoTrueVerify SSL certificates
response_typeselect (auto, json, text, binary)NoautoHow to parse the response body
retry_countnumberNo0Number of retries on failure or 429/503 status
retry_backoffstringNoexponentialBackoff strategy between retries
retry_delaynumberNo1Initial delay between retries in seconds

Output:

FieldTypeDescription
okboolean요청 성공 여부 (2xx 상태)
statusnumber요청 성공 여부 (2xx 상태)
status_textstring요청 성공 여부 (2xx 상태)
headersobjectHTTP 상태 코드
bodyanyHTTP 상태 텍스트
urlstring응답 헤더
duration_msnumber응답 본문 (파싱된 JSON 또는 텍스트)
content_typestring최종 URL (리디렉션 후)
content_lengthnumber응답 Content-Type

Example: Simple GET request

yaml
url: https://api.example.com/users
method: GET

Example: POST with JSON body

yaml
url: https://api.example.com/users
method: POST
body: {"name": "John", "email": "john@example.com"}

Example: Request with Bearer auth

yaml
url: https://api.example.com/protected
method: GET
auth: {"type": "bearer", "token": "${env.API_TOKEN}"}

Example: Request with query params

yaml
url: https://api.example.com/search
method: GET
query: {"q": "flyto", "limit": 10}

HTTP 응답 검증

http.response_assert

HTTP 응답 속성 검증 및 확인

Parameters:

NameTypeRequiredDefaultDescription
responseobjectYes-HTTP response object from http.request
statusanyNo-Expected status code (number, array of numbers, or range string "200-299")
body_containsanyNo-String or array of strings that body should contain
body_not_containsanyNo-String or array of strings that body should NOT contain
body_matchesstringYes-Regular expression pattern
json_pathobjectNo-Object mapping JSON paths to expected values (e.g., {"data.id": 123})
json_path_existsarrayNo-Array of JSON paths that should exist
header_containsobjectNo-Object mapping header names to expected values
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)No-Content type of the request body
max_duration_msnumberNo-Maximum allowed response time in milliseconds
schemaobjectNo-JSON Schema to validate response body against
fail_fastbooleanNoFalseStop on first assertion failure

Output:

FieldTypeDescription
okboolean모든 검증 통과 여부
passednumber모든 검증 통과 여부
failednumber모든 검증 통과 여부
totalnumber통과한 검증 수
assertionsarray실패한 검증 수
errorsarray상세 검증 결과

Example: Assert status 200

yaml
response: ${http_request.result}
status: 200

Example: Assert JSON structure

yaml
response: ${http_request.result}
status: 200
json_path: {"data.id": "${expected_id}", "data.name": "John"}
json_path_exists: ["data.created_at", "data.email"]

Example: Assert API response

yaml
response: ${api_result}
status: [200, 201]
content_type: application/json
max_duration_ms: 1000
json_path: {"success": true}

HTTP Session

http.session

Send a sequence of HTTP requests with persistent cookies (login → action → logout)

Parameters:

NameTypeRequiredDefaultDescription
requestsarrayYes-Ordered list of HTTP requests to execute with shared cookies
authobjectNo-Authentication applied to all requests in the session
stop_on_errorbooleanNoTrueStop executing remaining requests if one fails (non-2xx)
timeoutnumberNo30Maximum time per individual request
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all requests succeeded
resultsarrayResults from each request in order
cookiesobjectFinal session cookies as key-value pairs
duration_msnumberTotal duration in milliseconds

Example: Login and fetch data

yaml
requests: [{"label": "Login", "url": "https://example.com/api/login", "method": "POST", "body": {"username": "${env.USER}", "password": "${env.PASS}"}}, {"label": "Get Profile", "url": "https://example.com/api/profile", "method": "GET"}]
stop_on_error: true

Example: CSRF token flow

yaml
requests: [{"label": "Get CSRF Token", "url": "https://example.com/csrf-token", "method": "GET"}, {"label": "Submit Form", "url": "https://example.com/api/submit", "method": "POST", "body": {"data": "value"}}]

Webhook Wait

http.webhook_wait

Start a temporary server and wait for an incoming webhook callback

Parameters:

NameTypeRequiredDefaultDescription
pathstringNo/webhookURL path to listen on (e.g. /webhook, /callback)
portnumberNo0Port to listen on (0 = auto-assign)
timeoutnumberNo300Maximum time to wait for the webhook callback
use_ngrokbooleanNoFalseCreate an ngrok tunnel for public access (requires pyngrok)
ngrok_tokenstringNo-ngrok authentication token (free at ngrok.com)
expected_methodstringNoPOSTOnly accept this HTTP method (empty = accept any)
response_statusnumberNo200HTTP status code to respond with when webhook is received
response_bodystringNo{"ok": true}Response body to send back to the webhook caller

Output:

FieldTypeDescription
okbooleanWhether webhook was received before timeout
webhook_urlstringThe URL to send webhooks to (public if ngrok enabled)
methodstringHTTP method of the received webhook
headersobjectHeaders from the received webhook
bodyanyBody from the received webhook (parsed JSON or raw text)
queryobjectQuery parameters from the received webhook
duration_msnumberTime waited for the webhook in milliseconds

Example: Wait for Stripe webhook (local)

yaml
path: /webhook/stripe
port: 8765
timeout: 120
use_ngrok: false

Example: Wait for webhook with ngrok tunnel

yaml
path: /webhook
timeout: 300
use_ngrok: true
ngrok_token: ${env.NGROK_AUTH_TOKEN}

LLM 채팅

llm.chat

지능형 작업을 위해 LLM API와 상호작용

Parameters:

NameTypeRequiredDefaultDescription
promptstringYes-The prompt or question to send to the AI model
system_promptstringNo-System instructions to set AI behavior and context
contextobjectNo-Additional context data to include
messagesarrayNo-Previous messages for multi-turn conversation
providerselect (openai, anthropic, ollama)NoopenaiAI model provider
modelstringNogpt-4oSpecific model to use
temperaturenumberNo0.7Creativity level (0=deterministic, 1=creative)
max_tokensnumberNo2000Maximum tokens in response
response_formatselect (text, json, code, markdown)NotextExpected format of the AI response
api_keystringNo-API key (defaults to provider env var)
base_urlstringNo-Custom API base URL (for Ollama or proxies)

Output:

FieldTypeDescription
okboolean요청 성공 여부
responsestring요청 성공 여부
parsedany요청 성공 여부
modelstringLLM 응답 텍스트
tokens_usednumber파싱된 응답 (JSON 형식 요청 시)
finish_reasonstring사용된 모델

Example: Code Review

yaml
prompt: Review this code for bugs and improvements:

${code}
system_prompt: You are an expert code reviewer. Be specific and actionable.
model: gpt-4o

Example: Generate Fix

yaml
prompt: The UI evaluation found these issues: ${issues}

Generate code fixes.
system_prompt: You are a frontend developer. Return only valid code.
response_format: code

Example: Decision Making

yaml
prompt: Based on these test results, should we deploy? ${test_results}
system_prompt: You are a DevOps engineer. Return JSON: {"decision": "yes/no", "reason": "..."}
response_format: json

AI 코드 수정

llm.code_fix

이슈에 기반하여 자동으로 코드 수정 생성

Parameters:

NameTypeRequiredDefaultDescription
issuesarrayYes-List of issues to fix (from ui.evaluate, test results, etc.)
source_filesarrayYes-Files to analyze and potentially fix
fix_modeselect (suggest, apply, dry_run)NosuggestHow to handle the suggested fixes
backupbooleanNoTrueCreate .bak backup before modifying files
contextstringNo-Text content to process
modelstringNogpt-4oSpecific model to use
api_keystringNo-API key (defaults to provider env var)

Output:

FieldTypeDescription
okboolean작업 성공 여부
fixesarray작업 성공 여부
appliedarray작업 성공 여부
failedarray생성된 수정 목록
summarystring적용된 수정 목록 (fix_mode가 apply인 경우)

Example: Fix UI Issues

yaml
issues: ${ui_evaluation.issues}
source_files: ["./src/components/Footer.tsx", "./src/styles/footer.css"]
fix_mode: suggest
context: React + Tailwind CSS project

Example: Auto-fix and Apply

yaml
issues: ${test_results.failures}
source_files: ["./src/App.tsx"]
fix_mode: apply
backup: true

계산

math.calculate

기본 수학 연산 수행

Parameters:

NameTypeRequiredDefaultDescription
operationselect (add, subtract, multiply, divide, power, modulo, sqrt, abs)Yes-Operation to perform
anumberYes-First operand
bnumberNo-Second operand (not required for sqrt and abs)
precisionnumberNo2Number of decimal places

Output:

FieldTypeDescription
resultnumber계산 결과
operationstring계산 결과
expressionstring계산 결과

Example: Add two numbers

yaml
operation: add
a: 10
b: 5

Example: Calculate power

yaml
operation: power
a: 2
b: 8

HTTP 상태 확인

monitor.http_check

HTTP 상태 확인 / 가동 시간 모니터

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-확인할 URL
methodselect (GET, HEAD, POST)NoGETHTTP 메서드
expected_statusnumberNo200예상 HTTP 상태 코드
timeout_msnumberNo10000밀리초 단위 요청 시간 초과
headersobjectNo-사용자 정의 요청 헤더
bodystringNo-요청 본문 (POST용)
check_sslbooleanNoTrueSSL 인증서 유효성 및 만료 확인
containsstringNo-응답 본문에 이 문자열이 포함되어야 함
follow_redirectsbooleanNoTrueHTTP 리디렉션 따르기

Output:

FieldTypeDescription
okbooleanWhether check completed
dataobject

Example: Basic health check

yaml
url: https://api.example.com/health
expected_status: 200

Example: Check with content validation

yaml
url: https://api.example.com/health
contains: "status":"ok"
timeout_ms: 5000

포트 확인

port.check

네트워크 포트가 열려있는지 닫혀있는지 확인

Parameters:

NameTypeRequiredDefaultDescription
portanyYes-확인할 포트 번호 또는 포트 배열
hoststringNolocalhost확인할 포트 번호 또는 포트 배열
connect_timeoutnumberNo2연결할 호스트
expect_openbooleanNo-각 연결 시도의 타임아웃

Output:

FieldTypeDescription
okboolean포트 열림 여부 확인 설정 (true: 열림, false: 닫힘)
resultsarray모든 확인 통과 여부 (expect_open 설정 시)
open_portsarray모든 확인 통과 여부 (expect_open 설정 시)
closed_portsarray포트 확인 결과 배열
summaryobject열린 포트 목록

Example: Check single port

yaml
port: 3000

Example: Check multiple ports

yaml
port: [3000, 8080, 5432]
host: localhost

Example: Assert ports are open

yaml
port: [80, 443]
host: example.com
expect_open: true

포트 대기

port.wait

네트워크 포트가 사용 가능해질 때까지 대기

Parameters:

NameTypeRequiredDefaultDescription
portnumberYes-대기할 포트 번호
hoststringNolocalhost연결할 호스트
timeoutnumberNo60연결할 호스트
intervalnumberNo500최대 대기 시간
expect_closedbooleanNoFalse연결 시도 간 시간 (밀리초)

Output:

FieldTypeDescription
okboolean포트가 사용 불가능해질 때까지 대기
availableboolean포트가 예상 상태인지 여부
hoststring포트가 예상 상태인지 여부
portnumber포트가 현재 사용 가능한지 여부
wait_time_msnumber확인된 호스트
attemptsnumber확인된 포트

Example: Wait for dev server

yaml
port: 3000
timeout: 30

Example: Wait for database

yaml
port: 5432
host: localhost
timeout: 60

Example: Wait for port to close

yaml
port: 8080
expect_closed: true
timeout: 10

프로세스 나열

process.list

실행 중인 모든 백그라운드 프로세스 나열

Parameters:

NameTypeRequiredDefaultDescription
filter_namestringNo-Filter processes by name (substring match)
include_statusbooleanNoTrueInclude running/stopped status check for each process

Output:

FieldTypeDescription
okboolean작업 성공
processesarray작업 성공
countnumber작업 성공
runningnumber프로세스 정보 목록
stoppednumber총 프로세스 수

Example: List all processes

yaml

Example: Filter by name

yaml
filter_name: dev

백그라운드 프로세스 시작

process.start

백그라운드 프로세스 시작 (서버, 서비스 등)

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
namestringNo-Friendly name to identify the process
wait_for_outputstringNo-String to wait for in stdout before returning
wait_timeoutnumberNo60Maximum time to wait in seconds
capture_outputbooleanNoTrueCapture stdout/stderr output from the process
log_filestringNo-File path to write process output to
auto_restartbooleanNoFalseAutomatically restart the process if it exits

Output:

FieldTypeDescription
okboolean프로세스 시작 성공 여부
pidnumber프로세스 시작 성공 여부
process_idstring프로세스 시작 성공 여부
namestring프로세스 ID
commandstringprocess.stop을 위한 내부 프로세스 식별자
cwdstring프로세스 이름
started_atstring실행된 명령
initial_outputstring프로세스 시작 시간 (ISO 타임스탬프)

Example: Start dev server

yaml
command: npm run dev
cwd: ./frontend
name: frontend-dev
wait_for_output: ready on
wait_timeout: 30

Example: Start Python HTTP server

yaml
command: python -m http.server 8000
name: static-server

Example: Start with environment

yaml
command: node server.js
env: {"PORT": "3000", "NODE_ENV": "test"}
name: api-server
wait_for_output: listening

프로세스 중지

process.stop

실행 중인 백그라운드 프로세스 중지

Parameters:

NameTypeRequiredDefaultDescription
process_idstringNo-Internal process identifier (from process.start)
namestringNo-Friendly name to identify the process
pidnumberNo-System process ID (PID) of the process
signalselect (SIGTERM, SIGKILL, SIGINT)NoSIGTERMSignal to send to the process
timeoutnumberNo10Maximum time to wait in seconds
forcebooleanNoFalseForce kill the process immediately with SIGKILL
stop_allbooleanNoFalseStop all tracked processes

Output:

FieldTypeDescription
okboolean모든 프로세스가 성공적으로 중지되었는지 여부
stoppedarray모든 프로세스가 성공적으로 중지되었는지 여부
failedarray중지된 프로세스 정보 목록
countnumber중지된 프로세스 정보 목록

Example: Stop by process ID

yaml
process_id: ${start_result.process_id}

Example: Stop by name

yaml
name: dev-server

Example: Force kill by PID

yaml
pid: 12345
force: true

Example: Stop all processes

yaml
stop_all: true

셸 명령 실행

shell.exec

셸 명령 실행 및 출력 캡처

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
timeoutnumberNo300Maximum time to wait in seconds
shellbooleanNoFalseExecute command through shell (enables pipes, redirects)
capture_stderrbooleanNoTrueCapture stderr separately from stdout
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
raise_on_errorbooleanNoFalseRaise exception if command returns non-zero exit code

Output:

FieldTypeDescription
okboolean명령 실행 성공 여부 (종료 코드 0)
exit_codenumber명령 실행 성공 여부 (종료 코드 0)
stdoutstring명령 실행 성공 여부 (종료 코드 0)
stderrstring명령 종료 코드
commandstring표준 출력
cwdstring표준 오류 출력
duration_msnumber실행된 명령

Example: Run npm install

yaml
command: npm install
cwd: ./my-project

Example: Run tests with pytest

yaml
command: python -m pytest tests/ -v
timeout: 120

Example: Git status

yaml
command: git status --porcelain

Example: Build project

yaml
command: npm run build
cwd: ./frontend
env: {"NODE_ENV": "production"}

SSH 실행

ssh.exec

SSH를 통해 원격 서버에서 명령 실행

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-SSH 서버 호스트명 또는 IP
portnumberNo22SSH 포트
usernamestringYes-SSH 사용자 이름
passwordstringNo-SSH 비밀번호
private_keystringNo-PEM 형식 개인 키
commandstringYes-원격 서버에서 실행할 명령어
timeoutnumberNo30명령어 타임아웃(초)

Output:

FieldTypeDescription
okbooleanWhether command succeeded
dataobject

Example: List files on remote server

yaml
host: 192.168.1.100
username: deploy
command: ls -la /var/www

Example: Restart service

yaml
host: 10.0.0.5
username: root
command: systemctl restart nginx

SFTP 다운로드

ssh.sftp_download

SFTP를 통해 원격 서버에서 파일 다운로드

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-SSH 서버 호스트명 또는 IP
portnumberNo22SSH 포트
usernamestringYes-SSH 사용자 이름
passwordstringNo-SSH 비밀번호
private_keystringNo-PEM 형식의 개인 키
remote_pathstringYes-원격 서버의 파일 경로
local_pathstringYes-로컬 컴퓨터의 대상 경로

Output:

FieldTypeDescription
okbooleanWhether download succeeded
dataobject

Example: Download server log

yaml
host: 10.0.0.5
username: deploy
remote_path: /var/log/nginx/access.log
local_path: /tmp/access.log

SFTP 업로드

ssh.sftp_upload

SFTP를 통해 원격 서버에 파일 업로드

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-SSH 서버 호스트명 또는 IP
portnumberNo22SSH 포트
usernamestringYes-SSH 사용자 이름
passwordstringNo-SSH 비밀번호
private_keystringNo-PEM 형식 개인 키
local_pathstringYes-업로드할 로컬 파일 경로
remote_pathstringYes-원격 서버의 대상 경로
overwritebooleanNoTrue기존 원격 파일 덮어쓰기

Output:

FieldTypeDescription
okbooleanWhether upload succeeded
dataobject

Example: Upload deployment archive

yaml
host: 10.0.0.5
username: deploy
local_path: /tmp/app.tar.gz
remote_path: /opt/releases/app.tar.gz

E2E 단계 실행

testing.e2e.run_steps

엔드투엔드 테스트 단계를 순차적으로 실행

Parameters:

NameTypeRequiredDefaultDescription
stepsarrayYes-테스트 단계 정의 배열
stop_on_failurebooleanNoTrueWhether to stop on failure
timeout_per_stepnumberNo30000Timeout Per Step value

Output:

FieldTypeDescription
okboolean작업 성공 여부
passednumber작업 성공 여부
failednumber작업 성공 여부
resultsarray통과한 테스트 수

품질 게이트

testing.gate.evaluate

정의된 임계값에 대해 품질 메트릭 평가

Parameters:

NameTypeRequiredDefaultDescription
metricsobjectYes-평가할 메트릭
thresholdsobjectYes-평가할 메트릭
fail_on_breachbooleanNoTrueWhether to fail on breach

Output:

FieldTypeDescription
okboolean각 메트릭의 임계값
passedboolean작업 성공 여부
resultsarray작업 성공 여부
summarystring통과한 테스트 수

HTTP 테스트 실행

testing.http.run_suite

HTTP API 테스트 스위트 실행

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-HTTP 테스트 정의 배열
base_urlstringNo-Base URL for API requests
headersobjectNo{}HTTP request headers

Output:

FieldTypeDescription
okboolean작업 성공 여부
passednumber작업 성공 여부
failednumber작업 성공 여부
resultsarray통과한 테스트 수

린터 실행

testing.lint.run

소스 코드에서 린트 검사 실행

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-린트할 파일 또는 디렉토리
linterstringNoautoLinter
fixbooleanNoFalseWhether to fix

Output:

FieldTypeDescription
okboolean작업 성공 여부
errorsnumber작업 성공 여부
warningsnumber작업 성공 여부
issuesarray발생한 오류 수

보고서 생성

testing.report.generate

테스트 실행 보고서 생성

Parameters:

NameTypeRequiredDefaultDescription
resultsobjectYes-Results data
formatstringNojsonFormat
titlestringNoTest ReportTitle

Output:

FieldTypeDescription
okboolean작업 성공 여부
reportstring작업 성공 여부
formatstring작업 성공 여부
summaryobject보고서

시나리오 실행

testing.scenario.run

시나리오 기반 테스트 실행 (BDD 스타일)

Parameters:

NameTypeRequiredDefaultDescription
scenarioobjectYes-given/when/then 시나리오 정의
contextobjectNo{}Additional context data

Output:

FieldTypeDescription
okbooleangiven/when/then 시나리오 정의
passedboolean작업 성공 여부
stepsarray작업 성공 여부

보안 스캔

testing.security.scan

보안 취약점 스캔

Parameters:

NameTypeRequiredDefaultDescription
targetsarrayYes-스캔할 파일, URL 또는 경로
scan_typestringNoallScan Type
severity_thresholdstringNomediumSeverity Threshold

Output:

FieldTypeDescription
okboolean작업 성공 여부
vulnerabilitiesarray작업 성공 여부
summaryobject작업 성공 여부

테스트 스위트 실행

testing.suite.run

테스트 모음 실행

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-테스트 정의 배열
parallelbooleanNoFalseWhether to parallel
max_failuresnumberNo0테스트 정의 배열

Output:

FieldTypeDescription
okboolean0 = 제한 없음
passednumber0 = 제한 없음
failednumber작업 성공 여부
skippednumber통과한 테스트 수
resultsarray실패한 테스트 수

단위 테스트 실행

testing.unit.run

단위 테스트 실행

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-테스트 파일 또는 디렉토리 경로
patternstringNotest_*.pyPattern
verbosebooleanNoFalseWhether to verbose

Output:

FieldTypeDescription
okboolean작업 성공 여부
passednumber작업 성공 여부
failednumber작업 성공 여부
errorsnumber통과한 테스트 수
resultsarray실패한 테스트 수

시각적 비교

testing.visual.compare

시각적 출력의 차이 비교

Parameters:

NameTypeRequiredDefaultDescription
actualstringYes-실제 이미지의 경로 또는 base64
expectedstringYes-실제 이미지의 경로 또는 base64
thresholdnumberNo0.1예상 이미지의 경로 또는 base64
output_diffbooleanNoTrueWhether to output diff

Output:

FieldTypeDescription
okboolean최대 허용 차이 (0-1)
matchboolean작업 성공 여부
differencenumber작업 성공 여부
diff_imagestring일치 여부

UI 품질 평가

ui.evaluate

다차원 점수를 통한 종합적인 UI 품질 평가

Parameters:

NameTypeRequiredDefaultDescription
screenshotstringYes-평가할 스크린샷 경로 또는 URL
app_typestringNoweb_app평가할 스크린샷 경로 또는 URL
page_typestringNo-평가할 페이지 유형
evaluation_criteriaarrayNo['visual_design', 'usability', 'accessibility', 'consistency', 'responsiveness']평가할 특정 기준 (기본값: 전체)
target_audiencestringNo-대상 사용자 설명
brand_guidelinesstringNo-확인할 간략한 브랜드 가이드라인
min_scorenumberNo70통과를 위한 최소 전체 점수 (0-100)
api_keystringNo-OpenAI API 키 (기본값: OPENAI_API_KEY 환경 변수)

Output:

FieldTypeDescription
okbooleanOpenAI API 키 (기본값: OPENAI_API_KEY 환경 변수)
passedboolean평가 성공 여부
overall_scorenumber평가 성공 여부
scoresobject전체 UI 품질 점수 (0-100)
strengthsarray전체 UI 품질 점수 (0-100)
issuesarray평가 기준별 점수
recommendationsarrayUI 강점 목록
summarystring구체적인 개선 권장 사항

Example: Evaluate Dashboard

yaml
screenshot: ./screenshots/dashboard.png
app_type: dashboard
page_type: analytics dashboard
target_audience: business analysts
min_score: 75

Example: E-commerce Page Review

yaml
screenshot: ./screenshots/product.png
app_type: e_commerce
page_type: product detail
evaluation_criteria: ["usability", "cta_effectiveness", "visual_design"]

AI로 이미지 분석

vision.analyze

OpenAI Vision API(GPT-4V)를 사용하여 이미지 분석

Parameters:

NameTypeRequiredDefaultDescription
imagestringYes-Image file path, URL, or base64 data
promptstringYes-What to analyze in the image
analysis_typeselect (general, ui_review, accessibility, bug_detection, comparison, data_extraction)NogeneralType of analysis to perform
contextstringNo-Additional context about the image
output_formatselect (text, structured, json, checklist)NostructuredFormat of the analysis output
modelstringNogpt-4oSpecific model to use
max_tokensnumberNo1000Maximum tokens in response
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name
detailselect (low, high, auto)NohighLevel of detail for image analysis

Output:

FieldTypeDescription
okboolean분석 성공 여부
analysisstring분석 성공 여부
structuredobjectAI 분석 결과
modelstring구조화된 분석 데이터 (output_format이 structured/json인 경우)
tokens_usednumber분석에 사용된 모델

Example: UI Review

yaml
image: ./screenshots/dashboard.png
prompt: Review this dashboard UI. Evaluate: 1) Visual hierarchy 2) Color contrast 3) Button visibility 4) Overall usability. Suggest specific improvements.
analysis_type: ui_review
output_format: structured

Example: Bug Detection

yaml
image: ./screenshots/form.png
prompt: Find any visual bugs, layout issues, or broken elements in this form
analysis_type: bug_detection

Example: Accessibility Check

yaml
image: ./screenshots/page.png
prompt: Evaluate accessibility: color contrast, text readability, button sizes, clear labels
analysis_type: accessibility

이미지 비교

vision.compare

두 이미지를 비교하여 시각적 차이 식별

Parameters:

NameTypeRequiredDefaultDescription
image_beforestringYes-Path to baseline/before image
image_afterstringYes-Path to current/after image
comparison_typeselect (visual_regression, layout_diff, content_diff, full_analysis)Novisual_regressionType of comparison to perform
thresholdnumberNo5Acceptable difference percentage
focus_areasarrayNo-Specific areas to focus on
ignore_areasarrayNo-Areas to ignore (dynamic content, ads, etc.)
modelstringNogpt-4oSpecific model to use
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name

Output:

FieldTypeDescription
okboolean비교 성공 여부
has_differencesboolean비교 성공 여부
similarity_scorenumber중요한 차이점 발견 여부
differencesarray유사도 백분율 (0-100)
summarystring식별된 차이점 목록
recommendationstring비교 결과 요약

Example: Visual Regression Test

yaml
image_before: ./screenshots/baseline/home.png
image_after: ./screenshots/current/home.png
comparison_type: visual_regression
threshold: 5

Example: Layout Comparison

yaml
image_before: ./design/mockup.png
image_after: ./screenshots/implementation.png
comparison_type: layout_diff
focus_areas: ["header", "main content"]

Released under the Apache 2.0 License.