Skip to content

Commit 363e0f1

Browse files
committed
Add CLAUDE.md with repo guidance for Claude Code
1 parent fce1b8e commit 363e0f1

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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

Comments
 (0)