Skip to content

Commit 2c25952

Browse files
committed
rewrite README
1 parent 265dcbf commit 2c25952

File tree

1 file changed

+74
-15
lines changed

1 file changed

+74
-15
lines changed

README.md

Lines changed: 74 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,92 @@
11
# LinkML Registry
22

3-
Registry of LinkML schemas
3+
An automatically generated registry of LinkML schemas discovered from GitHub repositories.
44

5-
See the registry:
5+
## View the Registry
66

7-
* [linkml-registry](https://linkml.github.io/linkml-registry/registry/)
7+
* **Documentation**: [https://linkml.github.io/linkml-registry/registry/](https://linkml.github.io/linkml-registry/registry/)
8+
* **Registry Data**: [linkml_registry.yaml](linkml_registry.yaml)
89

9-
Metadata:
10+
## Registry Generation
1011

11-
* [models.yaml](models.yaml)
12+
The LinkML Registry is automatically generated using GitHub's Search API to discover repositories that use LinkML.
13+
The registry is updated through automated scripts that search for, analyze, and catalog LinkML projects.
1214

13-
Registry Schema:
15+
### Discovery Script
1416

15-
* [https://linkml.github.io/linkml-registry/registry/](https://linkml.github.io/linkml-registry/registry)
17+
The main discovery script (`src/scripts/discover_linkml_repos.py`) performs the following operations:
1618

17-
## How to register a schema
19+
#### Search Queries
20+
- **Repository searches**: Queries for repositories containing "linkml", "linkml-project-cookiecutter",
21+
"linkml in:description", and "LinkML in:description"
22+
- **File content searches**: Searches for "linkml" in specific files including:
23+
- `pyproject.toml`
24+
- `requirements.txt`
25+
- `setup.py`, `setup.cfg`
26+
- `poetry.lock`, `Pipfile`
27+
- README files (`.md`, `.rst`)
1828

19-
Make a Pull Request on:
29+
#### Filtering Logic
30+
The following filters are applied to discovered repositories:
2031

21-
* [src/linkml_registry/data/models.yaml](src/linkml_registry/data/models.yaml)
32+
- **Fork exclusion**: Skips forked repositories to focus on original projects
33+
- **LinkML organization exclusion**: Excludes repositories from the `linkml/` organization itself to focus on external usage
34+
- **Minimum stars**: Configurable minimum GitHub star count (default: 0)
35+
- **Archive status**: Filters out archived repositories during analysis
2236

23-
You should also add the `linkml` tag on your repo so it shows up here: [https://github.com/topics/linkml](https://github.com/topics/linkml)
37+
#### Repository Analysis
38+
For each discovered repository, the script extracts:
2439

25-
This is then compiled to the models.yaml in the top level (do not edit this directly). Currently this is a manual step but in future this will be done with github actions
40+
- **Basic metadata**: Title, description, license, GitHub URL
41+
- **Domain classification**: Categorizes projects by domain (Biology, Computer Science, Chemistry, etc.)
42+
- **Status determination**: Assesses if projects are active, inactive, or maintenance mode
43+
- **Topics extraction**: Collects relevant GitHub topics, filtering out generic ones
44+
- **Schema URL detection**: Attempts to identify documentation URLs (GitHub Pages, w3id.org)
45+
- **Contact information**: Extracts repository owner/organization
2646

27-
## Rebuilding the index
47+
#### Sorting and Organization
48+
- **Primary sort**: By GitHub star count (descending)
49+
- **Secondary sort**: Alphabetically by repository title within same star count
2850

29-
TODO: run via gh actions
51+
### Regeneration Schedule
52+
53+
The registry is automatically updated through GitHub Actions workflows:
54+
55+
- **Trigger**: Push to main branch or manual dispatch
56+
- **Frequency**: Can be run on-demand via the GitHub Actions interface
57+
- **Process**:
58+
1. Runs discovery script to update `linkml_registry.yaml`
59+
2. Generates documentation from the updated registry
60+
3. Commits changes back to the repository
61+
4. Deploys updated documentation to GitHub Pages
62+
63+
### Manual Generation
64+
65+
To manually update the registry:
3066

3167
```bash
32-
make src/docs/registry.md
68+
# Discover and update the registry
69+
make discover
70+
71+
# Generate documentation
72+
make gendoc
73+
74+
# View locally
75+
make testdoc
3376
```
77+
78+
### Scripts and Configuration
79+
80+
- **Discovery script**: `src/scripts/discover_linkml_repos.py`
81+
- **Documentation generator**: `src/scripts/generate_registry_docs.py`
82+
- **Template files**: `src/doc_templates/`
83+
- **Makefile targets**: `discover`, `gendoc`, `testdoc`
84+
85+
### GitHub Workflows
86+
87+
- **`.github/workflows/regenerate-registry.yaml`**: Updates registry data
88+
- **`.github/workflows/deploy-docs.yaml`**: Deploys documentation to GitHub Pages
89+
- **`.github/workflows/test-pr.yaml`**: Runs tests on pull requests
90+
91+
The registry serves as a comprehensive catalog of the LinkML ecosystem, helping users discover projects, tools,
92+
and schemas that utilize the LinkML framework.

0 commit comments

Comments
 (0)