Publish a self-documenting kind catalog in every Foundry
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- json, markdown
- Domain
- documentation, frontend
Research direction
Start by reading the committed kinds.generated.json manifest and the existing loadKindDocs helper in foundry-lib, then review the KindCatalog.astro and KindReference.astro ownership described here. Done means every manifest kind has a local index and detail route, validated examples are shown as source, and the listed gallery, built-route, visual, and link checks pass across adopting Foundries.
Written by the indexing model from the issue text.
Description
Goal
Make every Foundry self-documenting by publishing a local kind catalog from its own committed kinds.generated.json.
The current cross-instance catalog is valuable comparison evidence, but it has to explain several Foundries at once. A local catalog should answer a different question: what does this kind mean in this Foundry?
Reader surface
Each Foundry should expose:
/kinds/— a compact inventory grouped by declaredlayer;/kinds/<kind>/— a deep-linkable reference page for one kind.
The index should remain dense reference data: title, identifier, summary, shape, locations, field counts, companions, and links into the live corpus.
A detail page should render:
- definition, layer, shape, and content location;
- a locally derived browse link and note count;
- required and optional metadata tables;
- the directory/companion contract, including open-set semantics;
- the schema-validated
example.mdas escaped source; - the rendered
kind.mdrationale; - manifest source/provenance.
Ownership boundary
| Concern | Owner |
|---|---|
| Manifest wire format | @galaxy-foundry/kind-manifest |
Loading kind.md and example.md |
@galaxy-foundry/kind-schema/docs |
| Catalog index/detail components | @galaxy-foundry/site-kit |
| Routes, corpus counts, collection links, Markdown rendering, theme | Each Foundry |
| Cross-instance comparison | foundry-pattern |
The local pages must consume the generated manifest rather than introduce a second kind registry. Corpus counts and site URLs do not belong in the manifest. Examples render as source rather than as fake live notes.
No manifest format change is required: the current format already carries doc, example, locations, fields, shape, and companions.
Rollout
1. foundry-lib
- Add a shared
loadKindExamplesbesideloadKindDocs. - Add reusable
KindCatalog.astroandKindReference.astrosite-kit components. - Export resolved presentation prop types; routes and corpus discovery remain instance-owned.
- Add role-based catalog theme tokens and style-gap checks.
- Add shared specimens for flat/directory kinds, required/optional fields, closed/open companion sets, long schemas, and present/absent examples.
- Extend the upstream minimum/designed gallery proof and publish a release.
2. bio-topo-foundry
Use as the first adopter because all current kinds already publish docs and examples.
- Replace its local example loader with the shared helper.
- Add
/kinds/and/kinds/[kind]. - Derive corpus links/counts locally.
- Add gallery renderer coverage, navigation, search, and built-output checks.
3. Galaxy Workflow Foundry
Use as the complexity test.
- Emit its already-validated
example.mdfiles into the manifest. - Adopt the routes/components.
- Prove dense field tables, many companions, multiple locations, and the open research companion set.
- Add gallery and built-output coverage.
4. Statistical Genomics Foundry
Use as the vocabulary-divergence test.
- Emit examples into the manifest and adopt the routes/components.
- Preserve the real distinction that its
researchreference kind spans several note kinds. - Add gallery and built-output coverage.
5. foundry-pattern capstone
Once canonical local URLs exist:
- keep the pattern page as the cross-instance comparison surface;
- simplify it toward a compact matrix;
- retain missing-kind, shape, required-field, and companion-layout comparisons;
- link each instance/kind cell to the canonical local detail page;
- add local kind-catalog acceptance to the standing-up checklist.
Acceptance
- Every manifest kind has exactly one local detail route.
- Every generated manifest includes
kind.mdand validatedexample.mdcontent. - No Foundry maintains a parallel kind-name array for this surface.
- Detail documentation is searchable; example source is excluded from search excerpts.
- Every new site-kit component is represented in the shared specimens and every adopting Foundry's component gallery.
- Dark/light and narrow/wide visual acceptance, style-gap checks, built-route checks, and link checks pass.
Relates to #13, which established per-kind directories and the cross-instance generated catalog.
- Dominant language
- Astro
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from galaxyproject/foundry-pattern
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 48/100
-
Difficulty 5/5 Over a week Newbie friendliness 38/100
-
Ecosystem floor: converge the substrate minors, vitest, and foundry's ci.yml across the four repos Open
Difficulty 5/5 Over a week Newbie friendliness 20/100
galaxyproject/foundry-pattern#25 · 1 comment ·
All issues in galaxyproject/foundry-pattern
Similar issues
-
user-reported
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Kong/developer.konghq.com#7316 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
HarperFast/skills#96 ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
fullcalendar/fullcalendar#8106 ·