General-purpose coding policy for Baruch's AI agents
—
—
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
.tessl-plugin/plugin.json manifest with name, version, and description — full schema in rules/skill-authoring.mdREADME.md is the project's README.md — same file. Extend the existing README with rules table, skills table, and installation instructions[](https://tessl.io/registry/<workspace>/<plugin>)skills/<name>/SKILL.md, rules live in rules/<name>.mdrules/, skills/<name>/.tesslignore to exclude build artifacts and CI files from the published plugintessl plugin lint before every publishCHANGELOG.md and similar repo files show as orphaned in tessl plugin lint — 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 it# Commit Conventions for commit-conventions.md)applyTo: — see rules/rule-frontmatter.mdrules/context-writing-style.mdtessl review run --threshold 85 before publishgit diff --name-only <prev-sha>..HEAD -- 'skills/'. Reference: .github/actions/skill-review/action.yml (consumers uses: jbaruch/coding-policy/.github/actions/skill-review@<ref>)workflow_dispatch, initial push, all-zeros sentinel SHA); hard-fail when the base is set but unreachablerules/skill-authoring.md), flat step numbering, typed Skill() calls, silence-rule compliance, channel-appropriate formattingtessl review run fails with the out-of-credits signature; never a below-threshold scoreskill-review action's credit-outage: skip input publishes the affected skill unreviewed rather than blocking every skill-changing merge until credits returncredit-outage: skip; default fail preserves the gate. Classification is the action's decision contract — see .github/actions/skill-review/review-skills.sh run_reviews::warning:: plus a $GITHUB_STEP_SUMMARY note names every skipped skill, surfaced on the unreviewed-skills action output--threshold 85 to make a failing skill pass. Bypassing CI by other means (local publish, [skip ci], disabling the review step) is forbidden under rules/ci-safety.mdtessl review fix <skill> locallySKILL.md and any reference files before invoking the fix loopSkill() typing)tessl review run until the gate passesWhen you add, remove, or rename a rule or skill, update all of these:
.tessl-plugin/plugin.json — add/remove the rule path in rules or the skill path in skillsgit diff); for bespoke workflows, confirm the path glob covers the added skill or excludes the removed oneREADME.md — update the rules table and/or skills tableCHANGELOG.md — add an entry describing the changetesslio/patch-version-publish)Unreleased section — the heading is forbiddentesslio/patch-version-publish does NOT stamp CHANGELOG.md (it only bumps the manifest version and publishes)## <version> — <date> heading is a separate step the repo wires itself.github/actions/stamp-changelog (consumers uses: jbaruch/coding-policy/.github/actions/stamp-changelog@<ref>, wired before tesslio/patch-version-publish)### entry blocks at the top of CHANGELOG.md## <version> — <date> heading above those blocks before publish## <version> — <date> heading manually above their entries### blocks expecting auto-stamping when no stamp step is wiredAfter modifying rules, audit for cross-rule alignment:
rules/script-delegation.md.tessl-plugin/plugin.json entriesAfter 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.tessl-plugin
rules
skills
adopt-fork-pr
install-reviewer
migrate-to-plugin