Skip to content

feat(specs): skills and crons as first-class .t27 specs (site generates from them) - #3543

Merged
gHashTag merged 1 commit into
masterfrom
feat/specs-skills-crons
Sep 9, 2026
Merged

feat(specs): skills and crons as first-class .t27 specs (site generates from them)#3543
gHashTag merged 1 commit into
masterfrom
feat/specs-skills-crons

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Closes #3544

What / why

Skills and scheduled jobs join the spec corpus as first-class .t27 modules: specs/skills/ (26, one per Claude Code skill t27.ai publishes) and specs/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.md frontmatter, workflow YAML, setInterval sites); 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 generates public/skills/spec-skills.json / public/crons/spec-crons.json from 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 in specs/skills/README.md and specs/crons/README.md.

  • skill: 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.
  • cron: 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 written as [0]str = [] — the wasm accepts this form (probed before writing).
  • Language (LANG-EN): specs are English-only; rg -l '[\p{Cyrillic}]' specs/ returns nothing (60 .t27 files). There is no SUMMARY_RU. Translations are connected through a spec: specs/i18n/agents-ru.t27 (module i18n_agents_ru, KIND = "i18n") declares LOCALE = "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 discovers specs/i18n/*.t27 and hardcodes no locale list. Schema in specs/i18n/README.md. History: the first push carried SUMMARY_RU and bootstrap/build.rs rejected 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; a RUNS id with no skill spec → health: "fail"; an ID absent from the code manifest → witness: "spec-only" (warn); a code entry with no spec → listed as code-only, never invented.

Witness

Specs 26 skills + 33 crons = 59
Compiler vendored wasm from gHashTag/trinity apps/website/public/t27/, sha256 4d9c0447b5ca288790ab03d3dffc2dda629ed47af9d6731a105fc923aea0aee4
typecheck ok 59/59, discarded / lexerDiscarded / swallowed empty for every file
Schema check (site generator) 59/59 pass
Join with code manifests skills spec+code 26/26, crons spec+code 33/33, spec-only 0, code-only 0

Note: the wasm's typecheck.ok is lenient (it stays true for str = 5 or u16 = 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.py passes locally: OK: 1 entr(y/ies) added, each well formed). Written by hand because ./scripts/tri now add needs a built t27c, which the sparse clone does not have.
  • specs/OWNERS.md: row skills/, crons/, i18n/T-Queen.

Pre-existing on master (not addressed here)

Boundary

  • The bootstrap compiler on master was not run against these files locally — only the vendored wasm; this PR's CI is the first run.
  • Every RUNS is [] with a RUNS_NOTE: none of the 33 jobs was found to invoke a skill by name; no cron→skill edge is asserted.
  • These files are not yet in the site's public/t27/manifest.json; that happens when sync-t27-specs is re-run after this PR lands.

Do not merge without review.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-09 12:10:32 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 14
PRs with All Checks Green 2
READY 2
FAILING 14
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=d4c5b22b471e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-09 12:32:41 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 14
PRs with All Checks Green 2
READY 2
FAILING 14
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=d4c5b22b471e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
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
gHashTag force-pushed the feat/specs-skills-crons branch from a8e45eb to 922111f Compare September 9, 2026 12:44
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-09 12:44:29 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 13
PRs with All Checks Green 3
READY 2
FAILING 13
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 13 + 0 + 0 = 15, and there are 16 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=d4c5b22b471e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 2de523f into master Sep 9, 2026
30 of 32 checks passed
@gHashTag
gHashTag deleted the feat/specs-skills-crons branch September 9, 2026 12:58
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant