OpenCode 명령어 가이드
OpenCode 명령어: 사용자 명령어, 인수와 안전한 재사용
먼저 두 종류를 구분해야 합니다. 기본 슬래시 명령어는 현재 TUI를 제어하고, 사용자 명령어는 반복하는 프롬프트를 이름 있는 작업 흐름으로 만듭니다. 프로젝트의 .opencode/commands/에 Markdown 파일을 만들고, 실제로 입력이 달라지는 부분에만 $ARGUMENTS를 사용하세요. 파일 수정이나 Shell 실행을 허용하기 전에 생성된 프롬프트를 검토하는 것도 중요합니다. 이 글은 기본 명령어, Markdown·JSON 설정, 위치 인수, Shell 출력, 파일 참조, 권한과 누락 문제의 확인 순서를 다룹니다.
- 핵심 키워드
- OpenCode 명령어
- 문서 확인
- 2026년 8월 19일
- 읽는 시간
- 약 14분

빠른 답변
OpenCode 명령어는 세 가지 층으로 나눌 수 있습니다
작업을 해결하는 가장 작은 층을 선택하면 프롬프트 단축키를 검토하기 쉽습니다.
| 층 | 역할 | 예시 |
|---|---|---|
| TUI 기본 명령어 | 현재 세션이나 기본 동작을 제어합니다. | /help, /undo |
| 사용자 명령어 | Markdown 또는 JSON에서 이름 있는 프롬프트를 확장합니다. | /review와 $ARGUMENTS |
| Shell 명령어 | 터미널에서 실행되는 별도의 실행 영역입니다. | npm test, git status |
사용자 명령어는 CLI 설치, Provider, 권한 설정을 대신하지 않습니다. opencode를 찾지 못하면 배포 가이드, 모델 문제는 Provider 가이드, 파일 수정과 Shell 범위는 권한 가이드를 확인하세요. 이름은 공식 Commands 문서와 설치된 버전의 /help로 검증합니다.
기본 명령어
슬래시 명령어로 현재 TUI 세션을 제어하기
OpenCode에는 /init, /undo, /redo, /share, /help가 포함됩니다. Shell 별칭도 아니고 package.json에 넣는 스크립트도 아닙니다. OpenCode 입력창에서 실행한 뒤 결과나 확인 메시지를 읽으세요.
설치한 버전의 목록이 확실하지 않다면 /help부터 확인합니다. /undo와 /redo는 Git 커밋을 대신하지 않습니다. /share는 비공개 코드에서 사용하기 전에 공개되는 세션 데이터를 확인하세요. 기본 목록은 버전에 따라 달라질 수 있습니다.
Markdown 예제
프로젝트 사용자 명령어부터 시작하기
Markdown 파일은 Git에서 검토할 수 있고 사용하는 저장소 가까이에 둘 수 있습니다.
- 프로젝트 루트에
.opencode/commands/review.md를 만듭니다. - 짧은 설명과 범위가 분명한 작업을 작성합니다.
- 작은 브랜치에서 실행하고 프롬프트와 diff를 검토합니다.
.opencode/commands/review.md
자동으로 쓰지 않고 검토 계획만 요청하는 예제입니다.
---
description: Review the current changes
---
Review the current Git changes. Explain risky behavior,
missing tests, and the smallest safe follow-up.
Do not edit files until I approve the plan.파일 이름이 명령어 이름이 되므로 /review로 실행합니다. 개인용 전역 흐름은 ~/.config/opencode/commands/, 프로젝트 경로·테스트·팀 규칙을 포함하는 명령어는 .opencode/commands/가 적합합니다. “변경 사항을 검토하고 계획을 제안하라”가 “전부 수정하라”보다 검증하기 쉽습니다.
JSON 설정
프로젝트 설정과 함께 관리할 때 command 객체 사용하기
JSON 또는 JSONC 설정의 command 객체에서도 사용자 명령어를 정의할 수 있습니다. 특정 agent나 model을 선택해야 할 때 유용합니다. 경로, Schema와 우선순위는 opencode.jsonc 설정 가이드에서 확인하세요.
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test-review": {
"template": "Review the latest test output and list the first three fixes.",
"description": "Review test output",
"agent": "plan"
}
}
}| 옵션 | 용도 | 공유 전 확인 |
|---|---|---|
template | 실행할 때 보내는 프롬프트입니다. | 존재하고 작업 범위가 분명한가. |
description | 명령어를 찾을 때 보여주는 설명입니다. | 결과를 설명하는가. |
agent | 이름 있는 agent를 선택합니다. | 도구와 권한이 맞는가. |
model | 이 흐름의 model을 바꿉니다. | Provider에 정확한 ID가 있는가. |
설정 파일은 비밀 저장소가 아닙니다. API key와 token은 Provider의 인증 경로에 보관하세요. 파일이나 Shell 출력을 사용하는 명령어는 짧아도 스크립트처럼 검토해야 합니다.
인수와 컨텍스트
흐름이 실제로 달라지는 곳에만 변수를 사용하기
$ARGUMENTS는 전체 문자열을 받고 $1, $2는 위치별 값을 받습니다.

---
description: Create a file with supplied values
---
Create a file named $1 in directory $2.
Use this content: $3
Show the proposed path before writing./create-file config.json src "{ \"key\": \"value\" }"는 세 값을 전달합니다. 템플릿에는 각 값의 사용처와 쓰기 전 표시할 경로를 적습니다. 자유로운 한 문장만 필요하면 $ARGUMENTS가 더 간단합니다.
@src/components/Button.tsx로 파일을 참조하고, !`npm test` 또는 !`git log --oneline -10`으로 Shell 출력을 프롬프트에 넣을 수 있습니다. 프로젝트 루트에서 실행되므로 파괴적인 작업이나 비밀을 재사용 템플릿에 넣지 마세요.
인수는 입력이지 권한이 아닙니다. 먼저 읽기 전용으로 확인하고 작은 수정만 승인한 뒤 신뢰할 수 있는 저장소에서 자동화하세요.
안전한 재사용
이름, 프롬프트와 권한을 예측 가능하게 만들기
기본 명령어와 같은 이름의 사용자 명령어는 기본 동작을 덮어쓸 수 있습니다. 의도한 변경이 아니라면 help, undo, share를 피하고 review-tests처럼 결과가 드러나는 이름을 사용하세요.
명령어 파일도 코드처럼 검토합니다. 프롬프트 diff, 결과, 참조 파일과 제안된 Shell을 확인하세요. agent와 model은 Agents 가이드, Skills와 MCP 범위는 Skills 가이드와 MCP 가이드를 참고합니다.
| 증상 | 가능한 계층 | 첫 확인 |
|---|---|---|
| 슬래시 명령어가 안 보임 | 경로 또는 이름 | 파일, 폴더, frontmatter와 루트를 확인합니다. |
| 결과가 예상과 다름 | 프롬프트 또는 인수 | 작은 요청과 한 개의 인수로 시험합니다. |
| Shell 출력이 위험함 | Shell 컨텍스트 | 직접 실행하고 폴더와 권한을 확인합니다. |
| 기본 동작이 바뀜 | 이름 충돌 | 이름을 바꾸고 /help와 비교합니다. |
검증 절차
팀 인프라로 사용하기 전 여섯 가지 확인
- 범위: 입력과 출력을 한 문장으로 정합니다.
- 위치: 프로젝트용인지 전역용인지 선택하고 기록합니다.
- 입력: 정상, 누락, 따옴표, 경로 값을 시험합니다.
- 컨텍스트: 수정 전에 파일 참조와 Shell 출력을 확인합니다.
- 권한: ask 또는 읽기에서 시작하고 작은 변경만 승인합니다.
- 되돌리기: Git에 남기고 비활성화·이름 변경 방법을 기록합니다.
이 순서를 지키면 명령어 누락은 경로, 잘못된 결과는 프롬프트나 인수, 수정 거부는 권한, model 실패는 Provider 문제로 분리할 수 있습니다.
자주 묻는 질문
OpenCode 명령어 FAQ
OpenCode 명령어는 어디에 사용하나요?
기본 명령어는 TUI를 제어하고 사용자 명령어는 코드 리뷰, 테스트, 파일 템플릿처럼 반복되는 프롬프트를 묶습니다.
사용자 명령어 폴더는 어디인가요?
프로젝트 명령어는 .opencode/commands/, 전역 명령어는 ~/.config/opencode/commands/에 둡니다. Markdown 파일 이름이 명령어 이름이 됩니다.
명령어에 인수를 어떻게 전달하나요?
전체 문자열에는 $ARGUMENTS, 개별 값에는 $1, $2를 사용합니다. 공백이나 JSON은 따옴표로 묶습니다.
명령어가 표시되지 않는 이유는 무엇인가요?
폴더, 루트, 이름, frontmatter와 이름 충돌을 확인한 다음 /help와 공식 문서를 비교하세요.
공식 자료
버전에 따라 달라지는 내용 확인하기
이 페이지는 2026년 8월 19일 OpenCode 공식 문서를 기준으로 확인했습니다. 이름과 경로는 바뀔 수 있습니다.
요약
기본 명령어는 TUI에, Markdown은 검토 가능한 프로젝트 흐름에, JSON은 설정과 함께 관리할 명령어에 사용하세요. 인수를 명확히 하고 Shell 출력을 신뢰하지 않는 컨텍스트로 취급하며 이름 충돌을 피하고 작은 되돌릴 수 있는 작업으로 검증합니다.