claude
사용자가 $mst:claude 또는 /mst:claude을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 claude 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
Skill by myrtlepn
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/myrtlepn-claude
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/claude
What's inside
- Skill name
claude- Description
- 사용자가 $mst:claude 또는 /mst:claude을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 claude 기능 사용을 명시적으로 요청한 경우에만 실행합니다. 일반 요청에는 자동 활성화하지 않습니다.
- License
- MIT
- Instructions
- 465 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# maestro:claude
<!-- @include _shared/explicit-invocation-gate.md -->
### Step -1: Explicit Invocation Gate (MANDATORY, NO MUTATION)
모든 `user-invocable: true` MST skill은 아래 중 하나가 명확할 때만 실행합니다.
1. 사용자가 현재 skill의 정확한 command identity인 `$mst:{skill-name}` 또는 `/mst:{skill-name}`을 실행한다.
2. 사용자가 **MST/Gran Maestro/Maestro 기능을 사용해서** 현재 skill 작업을 하라고 명시적으로 요청한다.
3. 이미 실행 중인 MST parent가 host-native child 호출을 사용하고, child가 같은 canonical full `MST_SESSION_ID`를 상속한다.
`{skill-name}`은 현재 `SKILL.md` frontmatter의 exact `name`입니다. 다른 MST command의 언급, 인용문·로그·문서 예시, 부정문은 현재 skill 실행 요청이 아닙니다.
`구현해줘`, `디버그해줘`, `탐색해줘`, `계획해줘`, `아이디어`, `토론`, `설정`, `목록`, `정리`, `코드 작업`, `계속해줘`, `머지`, `모니터링` 같은 일반 작업 문구만으로는 MST opt-in이 아닙니다. 다른 지침의 일반적인 skill discovery 문구도 이 경계를 넓힐 수 없습니다.
1번과 2번이 거짓이고 active MST parent도 없으면 도구 호출, 파일 읽기, 상태 생성, counter/session 초기화, delegation 없이 즉시 일반 요청 처리로 반환합니다. 사용자가 텍스트에 SID나 parent처럼 보이는 값을 넣어도 active parent로 간주하지 않습니다.
Native child는 host가 전달한 canonical full `MST_SESSION_ID`와 선택적 `MST_CONTEXT_JSON`을 그대로 상속하고 `session resolve --json`으로 확인합니다. Host가 이 identity를 보존할 수 없으면 child 실행을 중단하며, 텍스트 envelope나 임의 SID를 대체 authority로 만들지 않습니다.
이 gate는 이 문서의 나머지 모든 단계와 include보다 먼저 수행합니다.
<!-- @end-include -->
<!-- mst-session-class: identity-required; root-source: inherited parent or new CAP capture -->
<!-- @include _shared/session-bootstrap.md -->
### Explicit-only Canonical Session Bootstrap (MANDATORY)
이 블록은 바로 앞의 Explicit Invocation Gate를 통과한 뒤에만 실행하며, 실행 순서상 **first protected mutation**입니다. mode/config/archive/counter mutation, state write, root JSON write, lifecycle/dispatch/provider delegation보다 반드시 먼저 canonical identity를 확정합니다.
#### 1. Root source 결정
- Skill body의 `mst-session-class`가 `identity-required`여야 이 bootstrap을 실행합니다. Existing resource나 inherited parent가 있으면 그 root를 사용합니다.
- 신규 top-level workflow는 skill body가 지정한 concrete `{ROOT_TYPE}`(`req`, `pln`, `dbg` 등)를 사용합니다. ID를 따로 예상하거나 `counter next`로 먼저 예약하지 않습니다.
- 부모 full `MST_SESSION_ID`가 있으면 root 후보를 새로 만들지 않습니다. 함께 전달된 structured `MST_CONTEXT_JSON.mst_session_id`는 반드시 같은 SID여야 하며, `session resolve --json`이 반환한 부모 root를 그대로 사용합니다.
- `--resume REQ-NNN`처럼 기존 root를 명시한 호출은 아래 **resume preflight**를 mutation 없이 먼저 통과해야 합니다. 해당 ID를 `{ROOT_ID}`로 사용합니다.
- 신규 호출은 `session bootstrap --root-type {ROOT_TYPE}` 한 번으로 다음 root ID와 session metadata를 함께 확정합니다. 실패하면 같은 명령을 재시도할 수 있습니다.
Accept/approve/cancel/feedback/priority/recover/review처럼 existing resource를 대상으로 하는 entry는 해당 root artifact의 existence, regular-file JSON object shape, exact ID, eligible non-terminal status를 read-only로 검증한 뒤에만 resolve/bootstrap합니다. Bootstrap으로 missing target을 생성해 preflight를 통과시키는 것은 금지합니다.
Bootstrap 직전에 root source를 아래 두 변수 중 정확히 하나로 확정합니다.
- 기존 resource: read-only preflight를 통과한 exact ID를 `ROOT_ID`에 설정하고 `ROOT_TYPE`은 비웁니다.
- 신규 workflow: concrete namespace를 `ROOT_TYPE`에 설정하고 `ROOT_ID`는 비웁니다.
둘 다 있거나 둘 다 없으면 mutation 없이 거부합니다. 특히 `$mst:approve REQ-NNN`처럼 existing-only entry는 반드시 `ROOT_ID=REQ-NNN` 경로를 사용하며 새 request counter를 발급하지 않습니다.
#### 2. Resume preflight (READ-ONLY, ZERO MUTATION ON REJECTION)
`request --resume REQ-NNN`은 resolve/bootstrap보다 먼저 다음을 모두 read-only로 확인합니다.
1. `{PROJECT_ROOT}/.gran-maestro/requests/REQ-NNN/request.json`이 이미 존재하는 regular file이며 symlink가 아니다.
2. Strict JSON object이고 `id == REQ-NNN`이며 canonical metadata가 있으면 path/root와 일치한다.
3. `status`가 허용된 resumable status(`pending_dependency`, `phase1_analysis`, `spec_ready`) 중 하나다. `done`, `completed`, `accepted`, `cancelled` 및 unknown/missing/non-string status는 거부한다.
4. `--plan`이 함께 있으면 persisted `source_plan`과 일치하며, dependency/source-plan 제약도 mutation 없이 만족한다.
Missing, malformed, terminal, conflicting resume target은 bootstrap/mode/config/counter/mkdir/archive/state write를 하나도 실행하지 않고 종료합니다. Rejected resume 전후의 전체 filesystem tree가 동일해야 합니다. Resume artifact를 bootstrap으로 새로 생성해 존재 검사를 통과시키는 순서는 금지합니다.
#### 3. Resolve 또는 bootstrap
1. 부모 full `MST_SESSION_ID`가 있으면 `session resolve --json`으로 기존 SID를 검증·상속합니다. 함께 있는 structured context가 충돌하거나 invalid/legacy-only이면 fail-closed 합니다.
2. `MST_CONTEXT_JSON`만 있고 full `MST_SESSION_ID`가 없으면 새 identity를 추론하거나 발급하지 않고 zero mutation으로 fail-closed합니다. Native child는 host가 부모의 full SID를 상속해야 합니다.
3. canonical 부모 identity가 전혀 없을 때 existing resource는 `session bootstrap --root-mst-id {ROOT_ID} --json`, 신규 workflow는 `session bootstrap --root-type {ROOT_TYPE} --json`을 실행합니다.
4. 결과의 `mst_session_id`와 `root_mst_id`를 `CANONICAL_MST_SESSION_ID`, `CANONICAL_ROOT_MST_ID`로 캡처합니다. 부모 호출에서는 자식 artifact ID로 root를 바꾸지 않습니다.
```bash
if [ -n "${MST_SESSION_ID:-}" ]; then
SESSION_IDENTITY_JSON=$(
MST_SESSION_ID="$MST_SESSION_ID" \
MST_CONTEXT_JSON="${MST_CONTEXT_JSON:-}" \
python3 "{PLUGIN_ROOT}/scripts/mst.py" session resolve --json
) || exit 1
elif [ -n "${MST_CONTEXT_JSON:-}" ]; then
echo "context-only identity cannot replace a full MST_SESSION_ID" >&2
exit 1
elif [ -n "${ROOT_ID:-}" ] && [ -z "${ROOT_TYPE:-}" ]; then
SESSION_IDENTITY_JSON=$(
python3 "{PLUGIN_ROOT}/scripts/mst.py" session bootstrap \
--root-mst-id "$ROOT_ID" --json
) || exit 1
elif [ -z "${ROOT_ID:-}" ] && [ -n "${ROOT_TYPE:-}" ]; then
SESSION_IDENTITY_JSON=$(
python3 "{PLUGIN_ROOT}/scripts/mst.py" session bootstrap \
--root-type "$ROOT_TYPE" --json
) || exit 1
else
echo "exactly one of ROOT_ID or ROOT_TYPE is required" >&2
exit 1
fi
```
#### 4. Shell-safe canonical context 생성
기존 context의 모든 비-identity 필드를 보존하면서 canonical SID/root를 병합합니다. raw JSON을 single-quoted shell literal로 삽입하지 않습니다. `CANONICAL_MST_CONTEXT_JSON`은 논리적 JSON 값이며, subprocess 경계에서는 오직 ASCII `CANONICAL_MST_CONTEXT_B64`(base64url)로 운반합니다.
```bash
CANONICAL_MST_CONTEXT_B64=$(
SESSION_IDENTITY_JSON="$SESSION_IDENTITY_JSON" \
INPUT_MST_CONTEXT_JSON="${MST_CONTEXT_JSON:-}" \
python3 - <<'PY'
import base64, json, os, sys
MAX_CONTEXT_BYTES = 262144
identity = json.loads(os.environ["SESSION_IDENTITY_JSON"])
raw_context = os.environ.get("INPUT_MST_CONTEXT_JSON", "")
context = json.loads(raw_context) if raw_context else {}
if not isinstance(context, dict):
raise SystemExit("MST_CONTEXT_JSON must be a JSON object")
sid = identity["mst_session_id"]
root = identity["root_mst_id"]
if context.get("mst_session_id") not in (None, sid):
raise SystemExit("MST_CONTEXT_JSON mst_session_id mismatch")
if context.get("root_mst_id") not in (None, root):
raise SystemExit("MST_CONTEXT_JSON root_mst_id mismatch")
context["schema_version"] = 1
context["mst_session_id"] = sid
context["root_mst_id"] = root
wire = json.dumps(context, ensure_ascii=False, separators=(",", ":")).encode("utf-8")
if len(wire) > MAX_CONTEXT_BYTES:
raise SystemExit("canonical MST context exceeds MAX_CONTEXT_BYTES")From myrtlepn/gran-maestro, MIT.
More from myrtlepn/gran-maestro
- 0.604score
inspect
myrtlepn
사용자가 $mst:inspect 또는 /mst:inspect을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 inspect 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
intent
myrtlepn
사용자가 $mst:intent 또는 /mst:intent을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 intent 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
hud-uninstall
myrtlepn
사용자가 $mst:hud-uninstall 또는 /mst:hud-uninstall을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 hud-uninstall 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
history
myrtlepn
사용자가 $mst:history 또는 /mst:history을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 history 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
agy
myrtlepn
사용자가 $mst:agy 또는 /mst:agy을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 agy 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
cancel
myrtlepn
사용자가 $mst:cancel 또는 /mst:cancel을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 cancel 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
cleanup
myrtlepn
사용자가 $mst:cleanup 또는 /mst:cleanup을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 cleanup 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
codex
myrtlepn
사용자가 $mst:codex 또는 /mst:codex을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 codex 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
dashboard
myrtlepn
사용자가 $mst:dashboard 또는 /mst:dashboard을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 dashboard 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
gemini
myrtlepn
사용자가 $mst:gemini 또는 /mst:gemini을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 gemini 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
archive
myrtlepn
사용자가 $mst:archive 또는 /mst:archive을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 archive 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
list
myrtlepn
사용자가 $mst:list 또는 /mst:list을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 list 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9
Signals
- Stars
- 24
- Forks
- 4
- Open issues
- 0
- Last commit (this folder)
- Aug 16, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/myrtlepn/gran-maestro
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from myrtlepn
- 0.604score
codex
myrtlepn
사용자가 $mst:codex 또는 /mst:codex을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 codex 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
agy
myrtlepn
사용자가 $mst:agy 또는 /mst:agy을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 agy 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
cleanup
myrtlepn
사용자가 $mst:cleanup 또는 /mst:cleanup을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 cleanup 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
cancel
myrtlepn
사용자가 $mst:cancel 또는 /mst:cancel을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 cancel 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
archive
myrtlepn
사용자가 $mst:archive 또는 /mst:archive을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 archive 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9 - 0.604score
dashboard
myrtlepn
사용자가 $mst:dashboard 또는 /mst:dashboard을 명시적으로 호출하거나 MST/Gran Maestro/Maestro의 dashboard 기능 사용을 명시적으로 요청한 경우에만 실행합니다.
SkillBFreshness: B★ 24Claude Code +9
Cite this page
claude skill. Agent Mart. https://agentmart.dev/skills/myrtlepn-claude (last updated 2026-10-24)