- 민감한 것(API 키, 토큰, DB URL)
- 큰 것(멀티라인 프롬프트, 마크다운 노트, JSON 페이로드)
- 다른 프로세스에서 온 것(이전 명령의 출력)
입력 모드 셋
CLI가 시크릿·파일·파이프가 될 수 있는 값을 받는 곳에서 이렇게 인식합니다:?인터랙티브 프롬프트. 시크릿 필드는 가려서, 아니면 그대로 입력-stdin에서 한 줄 읽기. 파이프에 좋음@<path>파일에서 읽기. 전체 파일 내용이 값이 됨- 그 밖의 값 리터럴로 사용. 시크릿 필드면 셸 히스토리 경고
어느 필드가 어느 모드를 받나
시크릿이 아닌 필드 대부분(이름, 설명, 프롬프트)이 파일 입력에@<path>를 받습니다. 시크릿에 민감한 필드(--api-key, --auth-value, 헤더 값, DB URL)도 가림 프롬프트에 ?, stdin에 -를 받습니다.
애매하면 <command> --help가 플래그마다 입력 계약을 표시합니다.
다른 CLI에서 값 읽기
리터럴을 넘길 수 있는 곳이면 서브셸도 넘길 수 있습니다:멀티라인 콘텐츠 넘기기
멀티라인이면 무엇이든@file로 넘깁니다. 프롬프트, 노트 본문, JSON 페이로드가 그렇습니다:
-를 지원하는 건 아닙니다. --help로 확인합니다.
시크릿과 셸 히스토리
명령줄에 시크릿을 리터럴로 넘기면 셸 히스토리에 남습니다. 위험할 뿐 아니라 보안 정책 위반일 때가 많습니다. 증상:nora 명령 사이 파이핑
많은 명령이--json을 지원하므로 조합할 수 있습니다:
jq로 복잡한 구조 읽기
--json 출력 대부분이 배열이나 객체입니다. 흔한 패턴입니다:
CI 용 환경변수
CLI가 auth와 워크스페이스 맥락용 env var를 읽습니다:인용 룰
Bash와 zsh는 셸 값의 특수 문자를 다르게 처리합니다. 값에 공백·$·!·#가 있으면 이렇게 씁니다:
jq -c로 JSON 파일을 한 줄로 압축합니다:
Exit 코드
CLI는 표준 Unix exit 코드를 따릅니다:0성공1일반 에러2오용(잘못된 플래그, 필수 인자 누락)4인증 안 됨8권한 거부(auth는 됐지만 역할 부족)16서버 에러(플랫폼의 5xx)64명령 없음 또는 형식 잘못
뭔가 안 될 때
- 전체 요청/응답을 보려면
--verbose - 워크스페이스와 토큰을 확인하려면
nora auth status - 고정된 Flow 확인:
nora flows current - CI에서 exit 코드 echo:
nora flows publish support; echo "Exit: $?"