|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## What this repo is |
| 6 | + |
| 7 | +A collection of reference skills for LLM tooling, covering OGC standards and tooling. Skills follow the [Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) format: a directory with a `SKILL.md` entry point (YAML frontmatter + Markdown body) and supporting `.md` files. |
| 8 | + |
| 9 | +## Testing the site build locally |
| 10 | + |
| 11 | +```bash |
| 12 | +python3 .github/scripts/build_site.py _site <any-sha> <repo-url> <site-url> |
| 13 | +# e.g. |
| 14 | +python3 .github/scripts/build_site.py _site abc123 https://github.com/ogcincubator/ogc-llm-skills https://ogcincubator.github.io/ogc-llm-skills |
| 15 | +``` |
| 16 | + |
| 17 | +This writes `_site/` with all skill zips, `index.html`, `manifest.json`, and `llms.txt`. No other build step exists; there are no tests. |
| 18 | + |
| 19 | +## Publishing |
| 20 | + |
| 21 | +Every push to `master` triggers `.github/workflows/publish.yml`, which runs `build_site.py` and deploys to GitHub Pages. No manual step needed. |
| 22 | + |
| 23 | +## Adding a skill |
| 24 | + |
| 25 | +1. Create a directory under a namespace (e.g. `bblocks/consuming/`). |
| 26 | +2. Add `SKILL.md` with frontmatter: |
| 27 | + ```markdown |
| 28 | + --- |
| 29 | + name: kebab-case-name # max 64 chars |
| 30 | + description: "What it covers and when to use it." # max 1024 chars, plain text |
| 31 | + --- |
| 32 | + ``` |
| 33 | +3. Add supporting `.md` files in the same directory. |
| 34 | + |
| 35 | +The zip name is derived from the directory path with slashes replaced by hyphens (`bblocks/authoring/` → `bblocks-authoring.zip`). |
| 36 | + |
| 37 | +## Skill content design principles |
| 38 | + |
| 39 | +These are non-obvious and important for maintaining quality: |
| 40 | + |
| 41 | +- **SKILL.md is a router, not a tutorial.** It must give enough signal per entry that the LLM can decide which sub-file to read without actually reading it — closer to an annotated bibliography than a table of contents. |
| 42 | +- **One lookup unit per file.** Each file answers a set of questions a developer would look up together. Target 400–1500 words. If two topics always need each other to be actionable, merge them. |
| 43 | +- **Hierarchical navigation on demand.** The LLM reads `SKILL.md` first, then fetches sub-files via tool calls. Sub-files should be self-contained enough to be read independently. |
| 44 | +- **Schemas by URL, not copied.** Config file schemas live at `https://raw.githubusercontent.com/opengeospatial/bblocks-postprocess/master/ogc/bblocks/schemas/` — reference by URL so they stay current. |
| 45 | + |
| 46 | +## Machine-readable entrypoints |
| 47 | + |
| 48 | +The published site exposes two entrypoints for agent-driven installation: |
| 49 | +- `manifest.json` — structured JSON with absolute zip URLs for each skill |
| 50 | +- `llms.txt` — Markdown summary following the [llmstxt.org](https://llmstxt.org) convention |
| 51 | + |
| 52 | +Both are generated by `build_site.py` alongside `index.html`. |
0 commit comments