feat(specs): skills and crons as first-class .t27 specs (site generates from them) - #3543
Merged
Conversation
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
This was referenced Sep 9, 2026
gHashTag
force-pushed
the
feat/specs-skills-crons
branch
from
September 9, 2026 12:32
9bb1145 to
a8e45eb
Compare
Contributor
PR DashboardGenerated at: 2026-09-09 12:32:41 UTC
Summary
Seal Status
|
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
…es from them) specs/skills: 26 modules, one per Claude Code skill t27.ai publishes. specs/crons: 33 modules, one per scheduled job (GitHub Actions, Inngest, Railway, in-process timers). Every constant is pub const; the field schema is in each README. Specs are English-only (LANG-EN). Translations are connected through a spec: specs/i18n/agents-ru.t27 (module i18n_agents_ru, KIND "i18n") declares LOCALE, SCOPE (specs/skills, specs/crons), the translatable FIELDS (SUMMARY, NAME), the bundle location (trinity:apps/website/i18n/agents.ru.json, keyed by ID), FALLBACK "en", COVERAGE_REQUIRED false, ORPHANS_ALLOWED false. The Cyrillic payload lives only in that bundle; one contract file per locale, no locale list hardcoded in the site generator. All 60 typecheck ok under the compiler wasm vendored by gHashTag/trinity (sha256 4d9c0447b5ca2887...), nothing discarded; the wasm's typecheck.ok is lenient, so the site generator's schema check is the gate that holds. The site generates public/skills/spec-skills.json and public/crons/spec-crons.json from a vendored, byte-identical copy of these files; this directory is the canonical home. specs/OWNERS.md: skills/, crons/, i18n/ -> T-Queen. docs/now entry added. Site PR: gHashTag/trinity#975 Closes #3544
gHashTag
force-pushed
the
feat/specs-skills-crons
branch
from
September 9, 2026 12:44
a8e45eb to
922111f
Compare
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-09-09 12:44:29 UTC
Summary
Seal Status
|
gHashTag
added a commit
to gHashTag/trinity
that referenced
this pull request
Sep 9, 2026
…from .t27 specs (#975) 59 skill/cron specs + specs/i18n/agents-ru.t27; generator scripts/agents-from-specs.mjs (wasm AST, no regex); Explorer spec panel, cron->skill links, CONTROL strip; Queen tabs 7/8; HUD_VIEWS fix. Canonical specs: gHashTag/t27#3543.
github-actions Bot
added a commit
to gHashTag/trinity
that referenced
this pull request
Sep 9, 2026
feat(queen): spec-first SKILLS (7) and CRONS (8) explorers generated from .t27 specs (#975) 59 skill/cron specs + specs/i18n/agents-ru.t27; generator scripts/agents-from-specs.mjs (wasm AST, no regex); Explorer spec panel, cron->skill links, CONTROL strip; Queen tabs 7/8; HUD_VIEWS fix. Canonical specs: gHashTag/t27#3543.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3544
What / why
Skills and scheduled jobs join the spec corpus as first-class
.t27modules:specs/skills/(26, one per Claude Code skill t27.ai publishes) andspecs/crons/(33, one per scheduled job on GitHub Actions, Inngest, Railway and in-process timers). Until now both catalogs on t27.ai were generated only from code scans (SKILL.mdfrontmatter, workflow YAML,setIntervalsites); the spec is now the source of truth and the code is its witness. The site (gHashTag/trinity) keeps a vendored copy of these files and generatespublic/skills/spec-skills.json/public/crons/spec-crons.jsonfrom them through the compiler wasm at build time — no regex over.t27.Companion PR (site side, generator, Explorer UI, Queen modules 7/8): gHashTag/trinity#975
Schema
Every constant is
pub const; the full tables are inspecs/skills/README.mdandspecs/crons/README.md.KIND="skill",ID(<repo>/<dir>, must equal the code-manifest id),NAME,REPO,SOURCE,SUMMARY_EN,COMMAND,SPECS: [N]str,TAGS: [N]str,ENABLED: bool,TIMEOUT_MIN: u16.KIND="cron",ID(<host>/<repo>/<slug>),NAME,HOST(github-actions | inngest | railway-cron | timer),REPO,SERVICE,SUMMARY_EN,SCHEDULEorINTERVAL_MS: u32(never both),SCHEDULE_NOTE?,TZ,RUNS: [N]str(skill ids),RUNS_NOTE,ENABLED: bool,ON_FAILURE,CONTROL,NOTE?.[0]str = []— the wasm accepts this form (probed before writing).rg -l '[\p{Cyrillic}]' specs/returns nothing (60.t27files). There is noSUMMARY_RU. Translations are connected through a spec:specs/i18n/agents-ru.t27(modulei18n_agents_ru,KIND = "i18n") declaresLOCALE = "ru",SOURCE_LOCALE = "en",SCOPE = ["specs/skills", "specs/crons"],FIELDS = ["SUMMARY", "NAME"],BUNDLE_REPO = "trinity",BUNDLE_PATH = "apps/website/i18n/agents.ru.json",BUNDLE_FORMAT = "json",KEY = "ID",FALLBACK = "en",COVERAGE_REQUIRED = false,ORPHANS_ALLOWED = false,ENABLED = true. The Cyrillic payload lives only in that bundle (in trinity). One contract per locale (agents-<locale>.t27); the site generator discoversspecs/i18n/*.t27and hardcodes no locale list. Schema inspecs/i18n/README.md. History: the first push carriedSUMMARY_RUandbootstrap/build.rsrejected it; the second push moved Russian to a site-side JSON convention; this revision replaces that with the spec-declared contract at the owner's request.Rules the site's generator enforces: duplicate
ID→ build fails; aRUNSid with no skill spec →health: "fail"; anIDabsent from the code manifest →witness: "spec-only"(warn); a code entry with no spec → listed ascode-only, never invented.Witness
apps/website/public/t27/, sha2564d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4discarded/lexerDiscarded/swallowedempty for every fileNote: the wasm's
typecheck.okis lenient (it staystrueforstr = 5oru16 = 70000), so the generator's schema check is the real gate; "typecheck ok" is necessary, not sufficient. Both READMEs say so.Also in this PR
docs/now/2026-09-09-skills-and-crons-as-first-class-t27-specs.md(NOW sync gate;tools/check_now_entry_shape.pypasses locally:OK: 1 entr(y/ies) added, each well formed). Written by hand because./scripts/tri now addneeds a builtt27c, which the sparse clone does not have.specs/OWNERS.md: rowskills/,crons/,i18n/→ T-Queen.Pre-existing on master (not addressed here)
gate-topologyanduntrusted-inputfail on already-merged PRs tools: pin every published spec population with its matcher and its unit #3504 and tools: pin the corpus figures with their instrument #3506 as well; they are red onmasterindependent of this change.Boundary
masterwas not run against these files locally — only the vendored wasm; this PR's CI is the first run.RUNSis[]with aRUNS_NOTE: none of the 33 jobs was found to invoke a skill by name; no cron→skill edge is asserted.public/t27/manifest.json; that happens whensync-t27-specsis re-run after this PR lands.Do not merge without review.