---
slug: "claude-resources-monorepo"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/aliceisjustplaying/claude-resources-monorepo@main/README.md"
repo: "https://github.com/aliceisjustplaying/claude-resources-monorepo"
source_file: "README.md"
branch: "main"
---
# Claude Code Skills Monorepo

A centralized repository for Claude Code extensions including skills, commands, scripts, and plugins.

---

## ✨ Features

| Component | Description |
|-----------|-------------|
| **Skills** | EPUB reader, PDF-to-Markdown converter, and axe (iOS Simulator control) |
| **Plan Saver Plugin** | Automatically saves plans from plan mode to project directories |
| **Slash Commands** | `/latest-plan`, `/reflect`, `/handoff` for workflow enhancement |
| **Utility Scripts** | Standalone scripts for plan management |

---

## 🚀 Installation

### Option 1: Claude Code Marketplace (Recommended)

Install plugins using the official Claude Code plugin system:

```bash
# Add this repo as a marketplace
/plugin marketplace add aliceisjustplaying/claude-resources-monorepo

# Install plugins
/plugin install plan-saver@alice-marketplace
/plugin install handoff@alice-marketplace
```

**Note:** Skills (epub, pdf-to-markdown, axe) are not distributed via marketplaces. See "Installing Skills" below.

### Option 2: Clone + Setup Script (Full Access)

For developers who want everything, or to contribute:

```bash
git clone https://github.com/aliceisjustplaying/claude-resources-monorepo.git
cd claude-resources-monorepo
./setup.sh
```

This will:
- Symlink skills → `~/.claude/skills/`
- Symlink commands → `~/.claude/commands/`
- Symlink scripts → `~/.claude/scripts/`
- Symlink plugins → `~/.claude/plugins/`
- Symlink skills → `~/.codex/skills/`
- Symlink scripts → `~/.codex/scripts/`
- Generate Codex prompts from `commands/*.md` → `~/.codex/prompts/`
- Run plugin installers (e.g., plan-saver daemon setup)

### Installing Skills

Skills must be copied or symlinked manually. Choose one:

**Personal use (available in all your projects):**
```bash
# Clone the repo, then symlink specific skills
ln -s /path/to/claude-code-skills-monorepo/skills/epub ~/.claude/skills/epub
ln -s /path/to/claude-code-skills-monorepo/skills/pdf-to-markdown ~/.claude/skills/pdf-to-markdown
ln -s /path/to/claude-code-skills-monorepo/skills/axe ~/.claude/skills/axe

# Codex (user-level)
ln -s /path/to/claude-code-skills-monorepo/skills/epub ~/.codex/skills/epub
ln -s /path/to/claude-code-skills-monorepo/skills/pdf-to-markdown ~/.codex/skills/pdf-to-markdown
ln -s /path/to/claude-code-skills-monorepo/skills/axe ~/.codex/skills/axe
```

**Per-project (shared with collaborators via git):**
```bash
# Copy a skill into your project
cp -r /path/to/claude-code-skills-monorepo/skills/epub .claude/skills/
git add .claude/skills/epub
git commit -m "Add epub skill"
```

> Codex supports repo-local skills in `.codex/skills/` if you prefer to check them into a project instead.

---

## 📦 Components

### Plugins

#### plan-saver (v2.2.0)

Automatically distributes plans created in Claude Code's plan mode to their respective project directories.

**How it works:**
1. When Claude Code starts, a session is registered with the working directory
2. The daemon watches `~/.claude/plans/` for new plan files
3. When a plan is saved, it's matched to the correct project via session tracking
4. Plans are copied to `{project}/.claude/plans/NNNN-title.md` with auto-incrementing numbers
5. When plans are updated, the existing destination is updated (no duplicate files)

**Commands:**
```bash
# Check daemon status
plugins/plan-saver/status.sh

# Uninstall
plugins/plan-saver/uninstall.sh
```

#### handoff (v1.0.0)

Automatically detects handoff files and prompts Claude to continue previous work.

**How it works:**
1. On session start, checks if `.claude/handoff.md` exists in the project
2. If found, injects a prompt telling Claude to read it and continue
3. Near-zero overhead when no handoff file exists (~5ms shell check)

**Usage:**
1. Run `/handoff` when context is running low
2. Start a new session — Claude automatically picks up where you left off
3. Claude deletes the handoff file after absorbing the context

---

### Skills

#### epub

Read and extract content from EPUB ebook files.

| Capability | Description |
|------------|-------------|
| Metadata | View title, author, publisher, description |
| TOC | List table of contents with chapter references |
| Read | Read specific chapters by number |
| Extract | Export entire book as Markdown |
| Search | Search text with surrounding context |

**Requirements:** Node.js, built with `bun install && bun run build` in `skills/epub/scripts/epub-reader/`

#### pdf-to-markdown

Convert PDF documents to clean, structured Markdown for full context loading.

| Capability | Description |
|------------|-------------|
| Text | Formatting preservation (headers, bold, italic, lists) |
| Tables | IBM TableFormer AI extraction (~93.6% accuracy) |
| Images | Extraction with caching |
| Layout | Multi-column support |

**Requirements:** Python 3.11+, virtual environment created automatically on first use

#### axe

Control iOS Simulators via accessibility APIs for UI automation and testing.

| Capability | Description |
|------------|-------------|
| describe-ui | Get the full accessibility tree |
| tap | Tap by accessibility label, ID, or coordinates |
| type | Type text into focused element |
| swipe | Swipe gestures with start/end coordinates |
| button | Hardware buttons (home, lock) |

**Requirements:** Xcode, `axe` CLI in PATH

---

### Commands

| Command | Description |
|---------|-------------|
| `/latest-plan` | Load the most recent plan from `.claude/plans/` |
| `/latest-plan <query>` | Find a plan by number or name |
| `/reflect` | Reflect on session learnings and update CLAUDE.md |
| `/handoff [instructions]` | Create a handoff document for session continuity |

**Codex compatibility:** This repo also supports Codex “slash commands” via custom prompts. Running `./setup.sh` will generate prompt files in `~/.codex/prompts/` from the `commands/*.md` files, with `.claude` paths rewritten to `.codex`. Use them in Codex as:
```
/prompts:latest-plan
/prompts:reflect
/prompts:handoff
```

#### `/reflect`

Prompts Claude to think carefully about what was learned during the session and update the project's CLAUDE.md with durable, non-obvious, actionable insights for future sessions.

#### `/handoff`

Creates a structured handoff document at `.claude/handoff.md` containing:
- **Goal** — what you're trying to accomplish
- **Progress** — what's done, files changed, decisions made
- **Current State** — where work stopped, any partial work
- **Remaining Work** — what's left to do
- **Context** — file paths, patterns, gotchas discovered
- **Blockers** — anything stuck or needing answers
- **Additional Instructions** — any extra text you provide after `/handoff`

**Optionally pass instructions for the next session:**
```
/handoff please just acknowledge the pending issue before continuing
```

Start a new session with "Continue from .claude/handoff.md" to pick up where you left off.

---

### Scripts

| Script | Description |
|--------|-------------|
| `latest-plan.sh` | Find and display the latest plan file |
| `save-plan.sh` | Save a plan to `.claude/plans/` with auto-numbering |

---

## 📁 Directory Structure

```
claude-code-skills-monorepo/
├── commands/                       # Slash command definitions
│   ├── handoff.md
│   ├── latest-plan.md
│   └── reflect.md
├── scripts/                        # Utility scripts
│   ├── latest-plan.sh
│   └── save-plan.sh
├── skills/                         # Claude Code skills
│   ├── axe/                        # iOS Simulator control
│   │   └── SKILL.md
│   ├── epub/                       # EPUB reader (TypeScript)
│   │   ├── SKILL.md
│   │   ├── README.md
│   │   └── scripts/epub-reader/
│   └── pdf-to-markdown/            # PDF converter (Python)
│       ├── SKILL.md
│       ├── README.md
│       └── scripts/
├── plugins/
│   ├── handoff/
│   │   ├── .claude-plugin/
│   │   │   └── plugin.json
│   │   ├── hooks/
│   │   │   └── hooks.json
│   │   └── scripts/
│   │       └── check-handoff.sh
│   └── plan-saver/
│       ├── daemon/
│       │   └── plan-saver-daemon.sh
│       ├── hooks/
│       │   └── hooks.json
│       ├── scripts/
│       │   ├── register-session.sh
│       │   └── unregister-session.sh
│       ├── install.sh
│       ├── uninstall.sh
│       └── status.sh
├── .claude-plugin/
│   └── marketplace.json
├── setup.sh                        # Main installation script
├── CLAUDE.md                       # Project instructions for Claude
└── README.md
```

---

## ➕ Adding New Components

### Adding a Skill

1. Create a new directory under `skills/`
2. Add your skill definition `.md` file
3. Run `./setup.sh` to create symlinks

### Adding a Command

1. Create a `.md` file in `commands/`
2. Run `./setup.sh` to create symlinks

### Adding a Script

1. Create your `.sh` script in `scripts/`
2. Make it executable: `chmod +x scripts/your-script.sh`
3. Run `./setup.sh` to create symlinks

---

## 📋 Shell Script Standards

All shell scripts in this repository follow these standards:

```bash
#!/usr/bin/env bash
set -euo pipefail
```

- **Shellcheck compliant** — run `shellcheck` before committing
- **Proper quoting** — all variable expansions are quoted
- **Modern syntax** — use `[[ ]]` for conditionals

---

## 📌 Requirements

| Requirement | Purpose |
|-------------|---------|
| macOS | launchd-based daemon |
| Homebrew | dependency installation |
| Claude Code CLI | core functionality |
| Node.js / Bun | epub skill |
| Python 3.11+ | pdf-to-markdown skill |

---

## 🔧 Troubleshooting

### Daemon not running

```bash
# Check status
plugins/plan-saver/status.sh

# View logs
tail -f ~/.claude/.plan-saver/daemon.log

# Restart daemon
launchctl unload ~/Library/LaunchAgents/com.claude.plan-saver.plist
launchctl load ~/Library/LaunchAgents/com.claude.plan-saver.plist
```

### Plans not being saved

- Ensure the daemon is running
- Check that a session was registered (look in `~/.claude/.plan-saver/sessions.json`)
- Verify the plan slug matches the session

---

## 📄 License

MIT
