$npx -y skills add ghostsecurity/skills --skill repo-contextScans directory structure, detects projects, maps dependencies, and documents code organization into a repo.md file. Use when the user needs a codebase overview, project structure map, or repository context before security analysis.
| 1 | # Repository Context Builder |
| 2 | |
| 3 | You gather repository context by detecting projects, summarizing their architecture, and writing the results to `repo.md`. Do all work yourself — do not spawn subagents or delegate. |
| 4 | |
| 5 | ## Inputs |
| 6 | |
| 7 | Parse these from `$ARGUMENTS` (key=value pairs): |
| 8 | - **repo_path**: path to the repository root |
| 9 | - **cache_dir**: path to the cache directory (defaults to `~/.ghost/repos/<repo_id>/cache`) |
| 10 | |
| 11 | $ARGUMENTS |
| 12 | |
| 13 | If `cache_dir` is not provided, compute it: |
| 14 | ```bash |
| 15 | repo_name=$(basename "$(pwd)") && remote_url=$(git remote get-url origin 2>/dev/null || pwd) && short_hash=$(printf '%s' "$remote_url" | git hash-object --stdin | cut -c1-8) && repo_id="${repo_name}-${short_hash}" && cache_dir="$HOME/.ghost/repos/${repo_id}/cache" && echo "cache_dir=$cache_dir" |
| 16 | ``` |
| 17 | |
| 18 | ## Tool Restrictions |
| 19 | |
| 20 | Do NOT use WebFetch or WebSearch. All work must use only local files in the repository. |
| 21 | |
| 22 | ## Setup |
| 23 | |
| 24 | Discover this skill's own directory so you can reference agent files: |
| 25 | ```bash |
| 26 | skill_dir=$(find . -path '*/skills/repo-context/SKILL.md' 2>/dev/null | head -1 | xargs dirname) |
| 27 | echo "skill_dir=$skill_dir" |
| 28 | ``` |
| 29 | |
| 30 | --- |
| 31 | |
| 32 | ## Check Cache First |
| 33 | |
| 34 | Check if `<cache_dir>/repo.md` already exists. If it does, skip everything and return: |
| 35 | |
| 36 | ``` |
| 37 | Repository context is at: <cache_dir>/repo.md |
| 38 | ``` |
| 39 | |
| 40 | If it does not exist, run `mkdir -p <cache_dir>` and continue. |
| 41 | |
| 42 | --- |
| 43 | |
| 44 | ## Workflow |
| 45 | |
| 46 | 1. **Detect Projects** — Read `<skill_dir>/detector.md` and follow its instructions against `<repo_path>`. Save the full detection output (project details needed for step 2). If detection finds no projects, write a minimal `repo.md` noting "No projects detected" and skip to step 4. |
| 47 | |
| 48 | 2. **Summarize Each Project** — Read `<skill_dir>/summarizer.md`. For EACH project detected in step 1, follow the summarizer instructions using that project's details (id, type, base_path, languages, frameworks, dependency_files, extensions, evidence). Collect the summary for each project. If summarization fails for a project, note it as "summary unavailable" and continue with remaining projects. |
| 49 | |
| 50 | 3. **Write repo.md** — Combine detection and summary results into `<cache_dir>/repo.md` using the format in `<skill_dir>/template-repo.md`. For each project include: |
| 51 | - Detection: ID, Type, Base Path, Languages, Frameworks, Dependency Files, Extensions, Evidence |
| 52 | - Summary: Architectural summary, Sensitive Data Types, Business Criticality, Component Map, Evidence |
| 53 | |
| 54 | 4. **Validate** — Read `<cache_dir>/repo.md` back and verify it contains the expected sections from `<skill_dir>/template-repo.md` (e.g., project entries with Detection and Summary fields). If the file is missing or malformed, retry the write once before reporting an error. |
| 55 | |
| 56 | 5. **Output** — Return: `Repository context is at: <cache_dir>/repo.md` |