Skip to main content
많은 CLI 명령이 이런 콘텐츠를 받습니다:
  • 민감한 것(API 키, 토큰, DB URL)
  • 큰 것(멀티라인 프롬프트, 마크다운 노트, JSON 페이로드)
  • 다른 프로세스에서 온 것(이전 명령의 출력)
CLI는 모든 서브커맨드에서 일관된 입력 문법을 지원합니다.

입력 모드 셋

CLI가 시크릿·파일·파이프가 될 수 있는 값을 받는 곳에서 이렇게 인식합니다:
  • ? 인터랙티브 프롬프트. 시크릿 필드는 가려서, 아니면 그대로 입력
  • - stdin에서 한 줄 읽기. 파이프에 좋음
  • @<path> 파일에서 읽기. 전체 파일 내용이 값이 됨
  • 그 밖의 값 리터럴로 사용. 시크릿 필드면 셸 히스토리 경고
예:

어느 필드가 어느 모드를 받나

시크릿이 아닌 필드 대부분(이름, 설명, 프롬프트)이 파일 입력에 @<path>를 받습니다. 시크릿에 민감한 필드(--api-key, --auth-value, 헤더 값, DB URL)도 가림 프롬프트에 ?, stdin에 -를 받습니다. 애매하면 <command> --help가 플래그마다 입력 계약을 표시합니다.

다른 CLI에서 값 읽기

리터럴을 넘길 수 있는 곳이면 서브셸도 넘길 수 있습니다:

멀티라인 콘텐츠 넘기기

멀티라인이면 무엇이든 @file로 넘깁니다. 프롬프트, 노트 본문, JSON 페이로드가 그렇습니다:
또는 heredoc과 stdin을 씁니다:
주의하세요. 모든 명령이 그 플래그에 -를 지원하는 건 아닙니다. --help로 확인합니다.

시크릿과 셸 히스토리

명령줄에 시크릿을 리터럴로 넘기면 셸 히스토리에 남습니다. 위험할 뿐 아니라 보안 정책 위반일 때가 많습니다. 증상:
해결:
CLI가 시크릿 모양 리터럴을 감지하면 경고하지만 거절하지는 않습니다. 이유가 있으면 그냥 진행할 수 있습니다.

nora 명령 사이 파이핑

많은 명령이 --json을 지원하므로 조합할 수 있습니다:

jq로 복잡한 구조 읽기

--json 출력 대부분이 배열이나 객체입니다. 흔한 패턴입니다:

CI 용 환경변수

CLI가 auth와 워크스페이스 맥락용 env var를 읽습니다:
그다음 명령은 이렇게 씁니다:
명령줄에 자격증명이 없고, 디스크에 상태를 쓰지 않습니다.

인용 룰

Bash와 zsh는 셸 값의 특수 문자를 다르게 처리합니다. 값에 공백·$·!·#가 있으면 이렇게 씁니다:
보간이 많은 JSON 페이로드는 jq -c로 JSON 파일을 한 줄로 압축합니다:

Exit 코드

CLI는 표준 Unix exit 코드를 따릅니다:
  • 0 성공
  • 1 일반 에러
  • 2 오용(잘못된 플래그, 필수 인자 누락)
  • 4 인증 안 됨
  • 8 권한 거부(auth는 됐지만 역할 부족)
  • 16 서버 에러(플랫폼의 5xx)
  • 64 명령 없음 또는 형식 잘못
CI가 exit 코드로 막을 수 있습니다:

뭔가 안 될 때

  • 전체 요청/응답을 보려면 --verbose
  • 워크스페이스와 토큰을 확인하려면 nora auth status
  • 고정된 Flow 확인: nora flows current
  • CI에서 exit 코드 echo: nora flows publish support; echo "Exit: $?"