Coding policy for Viktor Gamov's AI agents: language-agnostic quality rules, autonomous shipping discipline, and stack defaults for JVM, Swift, TypeScript, and Python
98
94%
Does it follow best practices?
Impact
99%
1.45xAverage score across 10 eval scenarios
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, carrying the rules table, skills table, hooks table, and installation instructions[](https://tessl.io/registry/gamussa/coding-policy)rules/<name>.md, skills in skills/<name>/SKILL.md, hooks in hooks/<name>.sh.tesslignore to exclude CI files, scripts/, and docs/ from the published plugintessl plugin lint before every publish; CHANGELOG.md and similar repo files show as orphaned in lint, which 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)alwaysApply: true, no applyTo:; description: is optionalalwaysApply: false plus applyTo: "<glob list> — <natural-language clause>" — both halves required, the em dash separates file scope from action scopedescription: is a summary, never a substitute for applyTo: on a conditional ruleSKILL.md, README; out of scope for files the agent opens only by choice (references/**, lookup tables) and for CHANGELOGsum to exactly 100)When you add, remove, or rename a rule, skill, or hook, update all of these:
.tessl-plugin/plugin.json — the rules, skills, or hooks entryREADME.md — the rules, skills, or hooks tablechangelog.d/ — a fragment describing the change.claude/CLAUDE.md — the @../rules/<name>.md import listrules/, skills/, hooks/, .tessl-plugin/, .codex-plugin/, .tesslignore) adds a fragment changelog.d/<name>.mdbump: patch by default, minor for a new rule/skill/hook or a process change, major for a removed or renamed one### <Section> headings, each with - bullets; the format is changelog.d/README.mdversion and never adds a ## <version> heading to CHANGELOG.mdscripts/check-changelog-fragment.sh fails the PR on a missing or malformed fragment, an edited manifest version, or an added version heading.github/workflows/publish.yml assigns the version on push to main: scripts/assemble-release.sh bumps both manifests by the highest pending bump, writes the ## <version> — <date> heading with the merged fragments, and deletes themmain as chore(release): <version> and publishes itchangelog.d/ directoryversion by hand and writes the ## <version> — <date> heading itself (skills/release/SKILL.md Step 3 Hand bump)Unreleased section — the heading is forbiddenAfter 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, hook markers) and update them to satisfy the new wording.tessl-plugin
hooks
rules
skills
herdr-standup
herdr-teamlead
references
teamlead
templates
tests
onboard-repo
release
tests