General-purpose coding policy for Baruch's AI agents
95
91%
Does it follow best practices?
Impact
96%
1.31xAverage score across 10 eval scenarios
Advisory
Suggest reviewing before use
tile.json manifest with name, version, summary, and entrypoint (→ README.md). Don't add a separate docs field — keep all documentation in the entrypoint to avoid duplicate tables that drift out of syncREADME.md is the project's README.md — they are the same file. Do not create a separate README for the tile. If the project already has a README, extend it with tile content (rules table, skills table, installation instructions)[](https://tessl.io/registry/<workspace>/<tile>)skills/<name>/SKILL.md, rules live in rules/<name>.mdrules/, skills/<name>/, evals/.tileignore to exclude build artifacts and CI files from the published tiletessl tile lint before every publishCHANGELOG.md will show as orphaned in lint — this is expected; lint only tracks manifest-declared pathssee rules/foo.md), don't duplicate content across rules — if you want to state the same point in two rules, one states it and the other references italwaysApply: true (no other fields needed for rules)# Commit Conventions for commit-conventions.md)tessl skill review --threshold 85 before publishtessl skill review --threshold 85 skills/<name> step to the CI workflow — the review gate is only real if CI enforces itrules/skill-authoring.md), flat step numbering, typed Skill() calls (no prose invocations), silence-rule compliance, and channel-appropriate formatting (e.g., no Markdown in HTML-only channels)--threshold 85 to make a failing skill pass — that shifts the burden from "fix the skill" to "hide the failure" and rots the gate. Bypassing CI by other means (local publish, [skip ci], disabling the review step) is forbidden under rules/ci-safety.md's "Never Skip Tests" already; this section adds the threshold-specific prohibition on toptessl skill review --optimize <skill> run locally — not arguing with the CI gate. Back up SKILL.md (and any reference files --optimize may rewrite) before invoking, so you can diff against the pre-optimization state--optimize is a learning tool, not a take-it-or-leave-it patch. The reviewer's judge is not a subject-matter expert and routinely strips load-bearing context, examples, and edge-case handling that the local agent (with project context) knows are necessary. Diff the optimized output against the backup, keep the genuinely-improving moves (tighter triggers, less prose, better Skill() typing, removed redundancy), reject the over-aggressive cuts, then re-run tessl skill review --threshold 85 <skill> against the curated result and iterate until the gate passes--optimize produces. A skill that scores 92 with critical context preserved beats a skill that scores 98 because the reviewer cut the load-bearing bits--optimize output verbatim is forbidden even when the score went up. The "I'll run --optimize and ship because the score improved" pattern has the same gate-rotting effect as dropping the threshold, just disguised as a fix. The score reflects what the rubric measures; it does not reflect the content the optimizer stripped that the rubric does not penalize but the skill's author or local agent knows is load-bearing. The optimizer is a diagnostic signal that surfaces what kinds of issues exist (actionability deductions, progressive-disclosure deductions, redundancy); the actual fix is applying that signal with judgment. Repeated experience: the optimizer is too aggressive on applied output and strips content authors value, so use it as a signal and curate manually — never accept the full outputrules/plugin-evals.mdeval-authoring skill — invoke it to generate and curate scenariosWhen you add, remove, or rename a rule or skill, update all of these:
tile.json — add/remove the steering or skill entrytessl skill review step for each skillREADME.md — update the rules table and/or skills tableCHANGELOG.md — add an entry describing the changeAfter modifying rules, audit for cross-rule alignment:
tile.json entries exactlyAfter editing a rule, audit the repo itself against the new rule text and fix any drift in the same PR:
.env.example files, SKILL.md step headings, secret names, etc.) and update them to satisfy the new wording