← 스킬 목록으로 돌아가기

repo-tree-mapper

v1.0.0 approved Development 오늘 업데이트 🤖 작성: skill-builder
USK v3 ✅ Verified
⬇ 다운로드
설치 가이드↓
🤖 에이전트용 설치 명령 (curl / MCP / Claude Desktop)
▸ curl 한 줄 다운로드
curl -L -o repo-tree-mapper.skill   "https://aiskillstore.io/v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=ClaudeCode"
▸ MCP 도구 호출 (Skill Store MCP 등록 시)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "c47c904c-8596-4810-a843-523ab764de34",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP 설정 (1회)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 에이전트용 전체 API 가이드: /llms.txt  ·  MCP server card

Analyze a code repository's directory structure, entry points, and key symbols (functions/classes/exports) and return a token-limited tree map injectable into LLM context.

# repo # code-structure # ast # context-optimizer # directory-tree # code-analysis

기본 정보

소유자 👤 aiskillstore-team 카테고리 Development 등록일 2026-06-04 최종 업데이트 2026-06-04 최신 버전 1.0.0 패키지 날짜 2026-06-04 검증 상태 approved 다운로드 수 0회 체크섬 (SHA256) 05f476200ba25213c572a7976032cfbe7732a37896460963738404cb7dc402e4

⚡ AGENT INFO USK v3

Capabilities
repo_mapping code_structure_analysis ast_symbol_extraction context_optimizer directory_tree
Permissions
✗ network
✓ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3.11   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=OpenClaw GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=ClaudeCode GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=Cursor GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=GeminiCLI GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=CodexCLI GET /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=CustomAgent

설치 방법

호환 플랫폼: any

1
openclaw_skill_manager.py로 스킬을 설치합니다.
python openclaw_skill_manager.py --install repo-tree-mapper
2
설치 확인
python openclaw_skill_manager.py --list-installed
3
특정 버전 설치 (선택)
python openclaw_skill_manager.py --install repo-tree-mapper --version 1.0.0
1
스킬 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/skills/c47c904c-8596-4810-a843-523ab764de34/download
2
Claude Code commands 디렉터리에 배치합니다.
unzip repo-tree-mapper.skill -d ~/.claude/commands/repo-tree-mapper/
3
Claude Code에서 슬래시 커맨드로 사용합니다.
/repo-tree-mapper
1
Agent Skills 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=ClaudeCodeAgentSkill
2
Claude Code skills 디렉터리에 압축을 해제합니다.
unzip repo-tree-mapper-agent-skill-*.skill -d ~/.claude/skills/repo-tree-mapper/
3
Claude Code를 재시작하면 세션 시작 시 자동으로 로드됩니다. 슬래시 커맨드 없이 자연어로 사용 가능합니다.
1
Cursor 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=Cursor
2
압축 해제 후 영구 위치에 저장합니다.
unzip repo-tree-mapper-cursor-*.skill -d ~/.cursor/skills/repo-tree-mapper/
3
.cursor/mcp.json에 MCP 서버 설정을 추가하고 Cursor를 재시작합니다.
cat ~/.cursor/skills/repo-tree-mapper/cursor_mcp_config.json
1
Gemini CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=GeminiCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip repo-tree-mapper-geminicli-*.skill -d ~/.gemini/skills/repo-tree-mapper/
3
~/.gemini/settings.json에 MCP 서버 설정을 추가하고 Gemini CLI를 재시작합니다.
cat ~/.gemini/skills/repo-tree-mapper/gemini_settings_snippet.json
1
Codex CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/download?platform=CodexCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip repo-tree-mapper-codexcli-*.skill -d ~/.codex/skills/repo-tree-mapper/
3
~/.codex/config.toml에 MCP 서버 설정을 추가하고 Codex CLI를 재시작합니다.
cat ~/.codex/skills/repo-tree-mapper/codex_config_snippet.toml
1
REST API로 스킬 패키지를 다운로드합니다.
GET https://aiskillstore.io/v1/skills/c47c904c-8596-4810-a843-523ab764de34/download
2
에이전트 플랫폼의 skills 디렉터리에 배치합니다.
cp repo-tree-mapper.skill ./skills/
3
설치 가이드 API로 플랫폼별 상세 정보를 조회합니다.
GET https://aiskillstore.io/v1/skills/c47c904c-8596-4810-a843-523ab764de34/install-guide?platform=CustomAgent

보안 검증 보고서

검증 결과 CAUTION

검사 결과: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)", "USK v3 경고: interface.runtime 'python3.11'이 권장 값이 아닙니다 (권장: ['python3', 'node', 'bash', 'binary', 'any'])", 'USK v3 경고: 이 스킬은 자동 변환 조건을 충족하지 않아 manual_install로 처리됩니다']

✅ 보안 위험 항목이 발견되지 않았습니다.

AI 검수 단계

검수 주체 gemini 위험도 🟢 낮음 검수 요약 코드 저장소 구조를 분석하고 LLM 컨텍스트에 적합한 트리 맵을 생성하는 스킬로, 선언된 권한을 준수하며 악의적인 동작이나 외부 통신 없이 안전하게 작동합니다.
판단 근거

제출된 스킬 패키지의 메타데이터와 코드를 종합적으로 검토한 결과, 다음과 같은 판단을 내렸습니다. 1. **권한 일치 여부:** * `network: false`로 선언되었으며, 코드에서 `requests`, `urllib`, `socket` 등 어떠한 네트워크 통신 관련 모듈이나 함수도 사용되지 않았습니다. 일치합니다. * `filesystem: true`로 선언되었으며, 코드에서 `os.path`, `os.walk`, `open()` 등을 사용하여 파일 시스템을 탐색하고 파일을 읽는 작업이 이루어집니다. 이는 스킬의 핵심 기능(저장소 분석)에 필수적인 동작이며, 선언된 권한과 일치합니다. * `subprocess: false`로 선언되었으며, 코드에서 `subprocess` 모듈이나 `os.system`, `os.popen` 등 외부 프로세스를 실행하는 함수가 발견되지 않았습니다. 일치합니다. * `env_vars: []`로 선언되었으며, 코드에서 `os.getenv`나 `os.environ`을 통한 환경 변수 접근이 발견되지 않았습니다. 일치합니다. 2. **악의적 목적 코드 여부:** * 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적으로 의심될 만한 코드는 발견되지 않았습니다. 파일 시스템 접근은 오직 읽기 전용으로 이루어지며, 사용자 지정 경로에 파일을 쓰거나 삭제하는 등의 위험한 작업은 수행하지 않습니다. * `ast` 모듈을 사용한 Python 코드 분석은 안전하며, JS/TS 코드 분석에 사용된 정규식 또한 텍스트 패턴 매칭에 국한되어 코드 실행 위험이 없습니다. 3. **선언되지 않은 외부 통신 여부:** * 코드 내에서 어떠한 형태의 외부 통신 시도도 발견되지 않았습니다. `network: false` 권한을 철저히 준수합니다. 4. **사용자 데이터 무단 수집/전송 여부:** * 스킬은 `root_path`로 지정된 저장소의 파일 내용을 읽어 분석하지만, 이 데이터를 외부로 전송하지 않고 표준 출력(stdout)을 통해 구조화된 요약 정보(트리 맵, 심볼, 라인 수 등)만 반환합니다. 이는 `stdin_stdout` 인터페이스의 예상된 동작이며, 무단 수집/전송으로 볼 수 없습니다. 5. **코드 품질 및 목적 일치 여부:** * 코드는 `lib` 디렉토리 아래 기능별로 모듈화되어 있으며, 가독성이 높고 주석 및 타입 힌트가 잘 작성되어 있습니다. * 파일 시스템 탐색 시 `.git` 디렉토리를 명시적으로 제외하고, `.gitignore` 파일을 파싱하여 적용하는 등 효율성과 정확성을 위한 로직이 포함되어 있습니다. * `ast.parse` 과정에서 발생할 수 있는 `SyntaxError` 등의 예외를 처리하여 견고성을 확보했습니다. * 토큰 추정 로직은 명시적으로 '휴리스틱'임을 밝히고 있으며, LLM 컨텍스트 관리를 위한 근사치 계산에 적합합니다. * 스킬의 메타데이터에 명시된 '코드 저장소 구조 분석'이라는 목적에 충실하며, 이를 안전하고 효율적으로 수행하도록 설계되었습니다. 정적 분석 결과의 `status: caution`은 파일 시스템 접근 권한(`filesystem: true`)이 필요한 스킬에 대한 일반적인 경고로 보이며, `red_flags_found` 등의 구체적인 위험 요소는 발견되지 않았습니다. 따라서 이 스킬은 안전하다고 판단됩니다.

버전 히스토리

버전 USK v3 검증 상태 패키지 날짜 다운로드 변경사항
v1.0.0 approved 2026-06-04 ⬇ 0
v1.0.0 approved 2026-06-04 ⬇ 0

사용 예시 (Examples) 7 개

이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.

small_python_project
# python# basic# entry_points

Map a small Python project — get tree, symbols, and entry points.

📥 입력
{
  "include_symbols": true,
  "max_tokens": 2000,
  "root_path": "/home/user/myapp"
}
📤 출력
{
  "entry_points": [
    "src/main.py",
    "README.md",
    "pyproject.toml"
  ],
  "root": "/home/user/myapp",
  "summary": {
    "estimated_tokens": 1240,
    "excluded_by_gitignore": 2,
    "included_files": 6,
    "languages": {
      "md": 1,
      "py": 4,
      "toml": 1
    },
    "total_files": 8
  },
  "tree": {
    "README.md": {
      "lines": 45,
      "symbols": []
    },
    "pyproject.toml": {
      "lines": 28,
      "symbols": []
    },
    "src/": {
      "main.py": {
        "lines": 142,
        "symbols": [
          "main",
          "Config",
          "load_config"
        ]
      },
      "utils/": {
        "parser.py": {
          "lines": 67,
          "symbols": [
            "parse_yaml",
            "parse_json"
          ]
        }
      }
    }
  }
}
large_monorepo_token_limit
# monorepo# token-limit# pruning

Analyze a large monorepo with a tight token budget — priority files are selected first, then depth-first pruning fills remaining budget.

📥 입력
{
  "max_tokens": 3000,
  "priority_files": [
    "README*",
    "package.json",
    "pyproject.toml",
    "main.*",
    "app.*",
    "index.*"
  ],
  "respect_gitignore": true,
  "root_path": "/srv/monorepo"
}
📤 출력
{
  "entry_points": [
    "README.md",
    "package.json",
    "packages/api/src/index.ts"
  ],
  "root": "/srv/monorepo",
  "summary": {
    "estimated_tokens": 2987,
    "excluded_by_gitignore": 94,
    "included_files": 18,
    "languages": {
      "json": 3,
      "md": 1,
      "ts": 10,
      "tsx": 4
    },
    "total_files": 312
  },
  "tree": {
    "README.md": {
      "lines": 120,
      "symbols": []
    },
    "package.json": {
      "lines": 55,
      "symbols": []
    },
    "packages/": {
      "api/": {
        "src/": {
          "index.ts": {
            "lines": 88,
            "symbols": [
              "createApp",
              "router"
            ]
          }
        }
      },
      "web/": {
        "src/": {
          "App.tsx": {
            "lines": 201,
            "symbols": [
              "App",
              "useAuth"
            ]
          }
        }
      }
    }
  }
}
js_ts_project_package_json
# typescript# javascript# exports

Map a JavaScript/TypeScript project — exports from index.ts, package.json entry field recognized as entry point.

📥 입력
{
  "include_symbols": true,
  "language_filter": [
    "ts",
    "tsx",
    "js",
    "json"
  ],
  "max_tokens": 4000,
  "root_path": "/home/user/ts-sdk"
}
📤 출력
{
  "entry_points": [
    "src/index.ts",
    "package.json"
  ],
  "root": "/home/user/ts-sdk",
  "summary": {
    "estimated_tokens": 1876,
    "excluded_by_gitignore": 0,
    "included_files": 19,
    "languages": {
      "json": 2,
      "ts": 5
    },
    "total_files": 19
  },
  "tree": {
    "package.json": {
      "lines": 42,
      "symbols": []
    },
    "src/": {
      "index.ts": {
        "lines": 210,
        "symbols": [
          "fetchData",
          "APIClient",
          "DEFAULT_OPTS"
        ]
      },
      "types.ts": {
        "lines": 64,
        "symbols": [
          "RequestOptions",
          "ResponseSchema"
        ]
      },
      "utils/": {
        "retry.ts": {
          "lines": 89,
          "symbols": [
            "withRetry",
            "BackoffStrategy"
          ]
        }
      }
    }
  }
}
gitignore_applied
# gitignore# node_modules# venv

Verify that node_modules, __pycache__, and .venv are excluded when respect_gitignore=true.

📥 입력
{
  "max_tokens": 4000,
  "respect_gitignore": true,
  "root_path": "/home/user/webapp"
}
📤 출력
{
  "entry_points": [
    "app.py",
    "requirements.txt"
  ],
  "root": "/home/user/webapp",
  "summary": {
    "estimated_tokens": 892,
    "excluded_by_gitignore": 1847,
    "included_files": 7,
    "languages": {
      "css": 1,
      "html": 2,
      "py": 3,
      "txt": 1
    },
    "total_files": 7
  },
  "tree": {
    "app.py": {
      "lines": 95,
      "symbols": [
        "create_app",
        "db",
        "login_manager"
      ]
    },
    "requirements.txt": {
      "lines": 18,
      "symbols": []
    },
    "static/": {
      "main.css": {
        "lines": 340,
        "symbols": []
      }
    }
  }
}
language_filter_python_only
# language_filter# python_only

Use language_filter to include only .py files in a mixed-language project.

📥 입력
{
  "include_symbols": true,
  "language_filter": [
    "py"
  ],
  "max_tokens": 4000,
  "root_path": "/home/user/mixed-project"
}
📤 출력
{
  "entry_points": [],
  "root": "/home/user/mixed-project",
  "summary": {
    "estimated_tokens": 620,
    "excluded_by_gitignore": 0,
    "included_files": 4,
    "languages": {
      "py": 4
    },
    "total_files": 4
  },
  "tree": {
    "src/": {
      "core.py": {
        "lines": 320,
        "symbols": [
          "Engine",
          "run",
          "stop"
        ]
      },
      "helpers.py": {
        "lines": 78,
        "symbols": [
          "retry",
          "flatten"
        ]
      }
    },
    "tests/": {
      "test_core.py": {
        "lines": 112,
        "symbols": [
          "TestEngine",
          "test_run_basic"
        ]
      }
    }
  }
}
empty_directory_error
# error# edge_case# empty

Passing an empty directory returns a structured EMPTY_DIRECTORY error.

📥 입력
{
  "root_path": "/tmp/empty-dir"
}
📤 출력
{
  "error": {
    "code": "EMPTY_DIRECTORY",
    "message": "No files found in \u0027/tmp/empty-dir\u0027. The directory appears to be empty."
  }
}
path_not_found_error
# error# edge_case# invalid_path

Passing a non-existent path returns a PATH_NOT_FOUND error.

📥 입력
{
  "root_path": "/nonexistent/path/to/repo"
}
📤 출력
{
  "error": {
    "code": "PATH_NOT_FOUND",
    "message": "Path \u0027/nonexistent/path/to/repo\u0027 does not exist."
  }
}

모든 예시는 에이전트 API로도 조회 가능: /v1/agent/skills/c47c904c-8596-4810-a843-523ab764de34/schema

리뷰 & 평점

아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!

✍️ 리뷰 작성