CLAUDE.md · git:20260514.12e09a8 · 2026-05-14 · sha256 b19eeecd6ca360e9
CLAUDE.md git:20260514.12e09a8A
Immutable. This exact content is served forever at /api/v1/blob/b19eeecd6ca360e9.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Repository Overview
This is an **aggregation repository** (npm package: `ahoo-skills`) that collects Claude Code skills from multiple Ahoo-Wang open source projects into a single location. Skills are automatically synced from source repositories via GitHub Actions.
Install as a Claude Code plugin: `/plugin install ahoo-skills@github`
## Architecture
**Source repos** are listed in `repos.json`. The GitHub Actions workflow (`.github/workflows/sync-skills.yml`) runs every 6 hours (02:00, 08:00, 14:00, 20:00 UTC) via `scripts/sync-skills.sh`, which shallow-clones each source repo and rsync's its `skills/` directory into `skills/`.
To add a new source repo, add an entry to `repos.json`:
```json
{ "url": "https://github.com/Ahoo-Wang/<repo>.git", "branch": "main", "skills_path": "skills" }
```
Sync behavior:
- Skills can also be added directly to this repo (not synced) — the workflow only overwrites skills that exist in source repos
- Workspace skills (directories ending in `-workspace`) are skipped during sync and existing ones are cleaned up
- Duplicate skill names across repos produce a warning; the last repo wins
## Skill Structure
Each skill lives in `skills/<skill-name>/`:
```
skills/<skill-name>/
├── SKILL.md # Main skill file (YAML frontmatter + markdown)
├── references/ # Detailed reference documentation (optional)
│ └── *.md
└── evals/ # Evaluation criteria (optional)
└── evals.json
```
### SKILL.md Frontmatter
```yaml
---
name: <skill-name>
description: |
When to invoke this skill and what it covers
compatibility: <comma-separated list of technologies>
---
```
## Plugin Structure
This repository is a valid [Claude Code plugin](https://code.claude.com/docs/en/plugins). The plugin manifest lives at `.claude-plugin/plugin.json` and defines the `ahoo-skills` namespace.
```
./
├── .claude-plugin/
│ └── plugin.json # Plugin manifest (name, version, metadata)
├── skills/ # Plugin skills (model-invoked)
│ └── <skill-name>/
│ ├── SKILL.md
│ ├── references/
│ └── evals/
├── repos.json # Source repos for skill sync
├── scripts/ # Sync scripts
└── package.json # npm package metadata
```
Skills are namespaced under the plugin name (e.g., `/ahoo-skills:wow`, `/ahoo-skills:simba`).
## Working with Skills
- **Creating a new skill**: Follow the structure above — SKILL.md with YAML frontmatter, optional references/ and evals/
- **Adding a source repo**: Edit `repos.json`, the next sync will pick it up
- **Sync does not touch `.claude-plugin/`**: The sync script only operates on `skills/`, so the plugin manifest is maintained separately
- **No build/test commands**: This repository only contains documentation and skill definitions — no build system or tests to run