Skip to content

specs: skills and crons as first-class .t27 specs #3544

Description

@gHashTag

Why

t27.ai publishes two agent catalogs — Claude Code skills (26) and scheduled jobs (33, on GitHub Actions, Inngest, Railway and in-process timers) — and until now both were generated only from code scans: SKILL.md frontmatter, workflow YAML, setInterval sites. Nothing in the spec corpus stated them. That inverts the rule the rest of the project runs on: the spec is the source of truth and the code is its witness.

This issue tracks giving skills and crons first-class .t27 specs under specs/skills/ and specs/crons/, with the site (gHashTag/trinity) generating public/skills/spec-skills.json and public/crons/spec-crons.json from a vendored copy of those files through the compiler wasm at build time — no regex over .t27.

Schema

Every constant is pub const; full tables in specs/skills/README.md and specs/crons/README.md.

  • skill (module skill_<file>): KIND="skill", ID (<repo>/<dir>, equal to the code-manifest id), NAME, REPO, SOURCE, SUMMARY_EN, COMMAND, SPECS: [N]str, TAGS: [N]str, ENABLED: bool, TIMEOUT_MIN: u16.
  • cron (module cron_<file>): KIND="cron", ID (<host>/<repo>/<slug>), NAME, HOST (github-actions | inngest | railway-cron | timer), REPO, SERVICE, SUMMARY_EN, SCHEDULE or INTERVAL_MS: u32 (never both), SCHEDULE_NOTE?, TZ, RUNS: [N]str (skill ids), RUNS_NOTE, ENABLED: bool, ON_FAILURE, CONTROL, NOTE?.
  • Empty lists are [0]str = [] (the wasm accepts this form).
  • Language: specs are English-only (LANG-EN, bootstrap/build.rs). There is no SUMMARY_RU; the Russian line shown on the site is a site-side translation (apps/website/scripts/agents-i18n.ru.json) merged as summary.ru with ruSource: "site-annotation", never as spec text.

Rules the site generator enforces: duplicate ID → build fails; a RUNS id with no skill spec → health: "fail"; an ID absent from the code manifest → witness: "spec-only"; code with no spec → listed as code-only, never invented; Cyrillic in a spec → build fails; a translation key with no matching spec ID → build fails.

Witness / boundary

  • 59/59 typecheck ok under the vendored wasm (sha256 4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4), nothing discarded. That typecheck.ok is lenient (true for str = 5), so the schema check in the generator is the real gate.
  • The bootstrap compiler on master has not been run against these files yet; CI on the PR is the first run.
  • Every RUNS is [] with a RUNS_NOTE; no cron→skill edge is asserted.

Links

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions