Skip to content
Back to skills

Workspace Indexer

ASecurity

Explore a workspace to (1) convert binary documents (PDF, PPTX, DOCX, XLSX) into text/Markdown and (2) build an index.md file with a keyword map and file inventory. Use when the user asks for binary document conversion, document indexing, index.md generation, keyword-map creation, workspace file inventorying, or PDF/PPTX/DOCX/XLSX text extraction.

  • 12 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 28, 2026
ai-agentspythonbashnodegit

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned November 12, 2026

npx -y skills add fritzprix/libr-agent --skill workspace-indexer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Workspace Indexer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Workspace Indexer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fritzprix-workspace-indexer/badge)](https://www.skillsdirectory.com/skills/fritzprix-workspace-indexer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: workspace-indexer
description: |
  Explore a workspace to (1) convert binary documents (PDF, PPTX, DOCX, XLSX) into text/Markdown
  and (2) build an index.md file with a keyword map and file inventory.
  Use when the user asks for binary document conversion, document indexing, index.md generation,
  keyword-map creation, workspace file inventorying, or PDF/PPTX/DOCX/XLSX text extraction.
---

# Workspace Indexer

> **Not this skill**: Wiki linking, catalog.json, backlinks, and `[[slug]]` management → use **repo-wiki**.
> **Not this skill**: Single-file text extraction → use **docs** (`--to md`).

## Overview

This skill provides two core capabilities:

1. **Binary → Markdown conversion** — Batch-convert PDF, PPTX, DOCX, and XLSX via **MarkItDown** (same engine as the **docs** skill)
2. **Index generation** — Build a workspace file inventory and keyword map in `index.md`

## Path conventions

All internal paths mentioned in this skill are **relative to the directory containing this `SKILL.md`**, and **are not the same as the workspace current directory (`./`)**.

- Scripts: `scripts/...`
- Other resources: relative paths inside the skill directory
- `python scripts/...` style references must be resolved against this skill's absolute Base Directory at runtime
- In the examples below, `<skill-base-dir>` means the actual deployed absolute path of this skill
- External workspace targets such as the workspace root must be passed explicitly with flags like `--root` and `--out`

## Script list

| Script | Role |
| --- | --- |
| `run.py` | **Unified entry point** that runs conversion and indexing together |
| `convert_binary_docs.py` | Convert binary documents to Markdown |
| `build_index.py` | Build a file inventory and keyword map into `index.md` |
| `check_status.py` | Report converted and unconverted document status |
| `install_deps.py` | Check for required packages and install them automatically |

## Prerequisites

Conversion follows the **to-md** skill policy. Install MarkItDown only — do not use pymupdf, python-docx, python-pptx, or openpyxl.

```bash
# Automatic install
python <skill-base-dir>/scripts/install_deps.py

# Manual install
pip install "markitdown[all]"
```

## Workflow

### Task A: Binary documents → Markdown conversion

Script: `scripts/convert_binary_docs.py`

```bash
# Preview target files with dry-run
python <skill-base-dir>/scripts/convert_binary_docs.py --root . --dry-run

# Convert everything and create .md files next to the originals
python <skill-base-dir>/scripts/convert_binary_docs.py --root .

# Convert only selected formats
python <skill-base-dir>/scripts/convert_binary_docs.py --root . --formats pdf docx

# Write output to a separate directory
python <skill-base-dir>/scripts/convert_binary_docs.py --root . --out ./converted

# Overwrite existing converted files
python <skill-base-dir>/scripts/convert_binary_docs.py --root . --overwrite
```

**Conversion engine:** All formats use **MarkItDown** (`convert_with_markitdown` in `convert_binary_docs.py`). Output structure (headings, tables, slides) is determined by MarkItDown — see the **docs** skill for details.

---

### Task B: Build `index.md`

Script: `scripts/build_index.py`

```bash
# Default run (create index.md at the root)
python <skill-base-dir>/scripts/build_index.py --root .

# Preview files and keywords with dry-run
python <skill-base-dir>/scripts/build_index.py --root . --dry-run

# Choose a custom output path
python <skill-base-dir>/scripts/build_index.py --root . --out docs/index.md

# Use a custom keyword file (one keyword per line)
python <skill-base-dir>/scripts/build_index.py --root . --keywords keywords.txt

# Ignore specific directories
python <skill-base-dir>/scripts/build_index.py --root . --ignore-dirs tmp out
```

**`index.md` structure:**

```
# Workspace Index
> Generated at / Root / File count

## File inventory (text)
### 📁 Directory name
- [filename](path) (size in KB)

## Binary document list
| Filename | Path | Size | Converted file |
(Link the converted `.md` when present; otherwise mark it as not converted)

## Keyword map
### Keyword
- [files where it appears]
```

**Keyword extraction behavior:**
- Default: auto-extract from `#`, `##`, and `###` headings in `.md` files
- Custom: map files that contain keywords listed in `--keywords keywords.txt`

---

### Task C: Full workflow (unified runner)

`run.py` automatically executes conversion and indexing in sequence.

```bash
# Full workflow (recommended)
python <skill-base-dir>/scripts/run.py --root .

# Conversion only (skip indexing)
python <skill-base-dir>/scripts/run.py --root . --skip-index

# Indexing only (skip conversion)
python <skill-base-dir>/scripts/run.py --root . --skip-convert

# Preview the full workflow with dry-run
python <skill-base-dir>/scripts/run.py --root . --dry-run
```

### Task D: Check conversion status

```bash
# Show unconverted files in the console
python <skill-base-dir>/scripts/check_status.py --root .

# Show the full status including converted files
python <skill-base-dir>/scripts/check_status.py --root . --show-converted

# Save the status report as Markdown
python <skill-base-dir>/scripts/check_status.py --root . --export conversion_status.md
```

## Notes

- `.git`, `__pycache__`, `node_modules`, `.github`, and `venv` directories are ignored by default
- Existing converted files are not regenerated unless `--overwrite` is set
- Scanned PDFs (image-only) require `markitdown[all]` for OCR support (see **docs** skill)
- For very large workspaces, use `--max-keyword-files` to cap oversized keyword maps

Files in this skill

  • SKILL.md5.5 KB
  • scripts/build_index.py11.2 KB
  • scripts/check_status.py7.8 KB
  • scripts/convert_binary_docs.py6.2 KB
  • scripts/install_deps.py2.8 KB
  • scripts/run.py5.4 KB
  • scripts/utils.py836 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.