Skip to content

Latest commit

ย 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

English | ็ฎ€ไฝ“ไธญๆ–‡

syscity extensions catalog

Source of truth for the public syscity marketplace catalog. Every expert and skill lives in its own directory under entries/<id>/; merging to main makes CI pack and publish it to the live marketplace.

Live catalog: https://api.syscity.net/catalog.json ยท consumed by the syscity app's built-in marketplace

Data flow (split for review, merged for serving)

entries/<id>/          โ† source of truth โ€” humans only edit here (one PR per entry)
     โ”‚  scripts/pack.mjs + publish.mjs (CI on merge)
     โ–ผ
R2 archives + D1 catalog_entries  โ† runtime store (catalog.json + /archives routes)
     โ”‚
     โ””โ”€โ”€ index/catalog.json  โ† generated aggregate for humans (never hand-edited)
  • The repo owns content: SOUL/SKILL bodies, names and descriptions (including Chinese), categories, licenses, provenance.
  • Runtime fields stay out of the repo: visibility, credits_per_use, required_plan are managed in the cloud via ops catalog set โ€” PRs don't touch them.
  • The live catalog.json contract is unchanged (engine full-sync); index/catalog.json in this repo is only a mirror view.

Entry layout

entries/ws-backend-architect/
โ”œโ”€โ”€ meta.yaml          # catalog metadata (id/type/version/category/license/source/zh i18n)
โ”œโ”€โ”€ SOUL.md            # expert body (frontmatter: name/persona/voice/โ€ฆ + role prompt)
โ”‚   โ””โ”€โ”€ or SKILL.md    # skill body (frontmatter: name/description + usage) + references/
โ”œโ”€โ”€ LICENSE            # upstream license, verbatim
โ””โ”€โ”€ ATTRIBUTION.md     # upstream paths, commit, license

Field reference in CONTRIBUTING.md; templates in templates/entry/.

Contributing

  1. Fork โ†’ branch โ†’ copy templates/entry/ โ†’ fill it in
  2. Optional local check (CI runs it anyway): node scripts/validate.mjs
  3. Open a PR โ†’ review (license and content review are the gate) โ†’ merge
  4. CI automatically: validate โ†’ reproducible pack โ†’ upload R2 โ†’ D1 upsert โ†’ verify โ†’ regenerate index

Deleting an entry does not go through a PR (no automatic takedown) โ€” contact a maintainer. Licenses must be on the allowlist (MIT / Apache-2.0 / BSD / ISC / MPL-2.0 / CC0 / CC-BY-4.0).

Scripts

Command Purpose
node scripts/validate.mjs Validate all entries (layout / metadata / license / hygiene)
node scripts/pack.mjs [--only RE] Reproducible packing โ†’ .build/ (GNU tar fixed mtime + gzip -n)
node scripts/publish.mjs [--dry-run] [--changed] Publish to R2+D1 (content columns only) + verify
node scripts/gen-index.mjs Regenerate index/catalog.json

Publishing needs CLOUDFLARE_API_TOKEN / CLOUDFLARE_ACCOUNT_ID (CI secrets); a macOS-local pack is a smoke test only, never the publishing baseline.

License

Repo tooling (scripts, workflows, docs) is Apache-2.0. Each entry's content belongs to its upstream license โ€” see the LICENSE and meta.yaml in its directory.

About

๐Ÿ“ฆ Open marketplace content for the Syscity AI engine โ€” community-contributed experts, skills & MCP connectors.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages