agentsclimarketplace

Standards to tooling

Skill pantheon-org/tekhne/skills/software-engineering/standards-to-tooling

Agents Skills

Install
npx -y skills add pantheon-org/tekhne --skill standards-to-tooling

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Translates project coding standards into concrete linting and formatting tool configurations. Given human-readable conventions (from AGENTS.md, code review guidelines, or team standards), this skill produces ESLint, Prettier, Biome, TypeScript, and other tool configs that enforce them automatically. Covers discovery, mapping, implementation, verification, and CI integration.

SKILL.md

8.3 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

Standards to Tooling

Maps project-specific coding conventions to linting/formatting tool configuration. For the Stars project: JS/TS/Vue codebase with ESLint 10 + Prettier, migrating to full TypeScript.

Mindset

A convention that cannot be auto-enforced will drift. Before implementing any standard, always ask: Can a tool catch this? If yes, configure it. If no, document it as a code review checklist item.

Prefer tools that provide fix-on-save or --fix support — adoption is higher when enforcement is automatic rather than manual.

When to Use

  • Onboarding a new project and need to set up linting/formatting from scratch
  • Adding a new code convention that should be machine-enforced
  • Reviewing a PR where a convention was violated and a tool should catch it
  • Migrating a codebase (e.g., JS → TS) and need to update or add tooling
  • Standardising tooling across multiple projects or monorepo workspaces

Workflow

1. Discovery — Extract actionable standards

Source the project's conventions from:

SourceWhat to look for
AGENTS.mdNaming, import style, component conventions, file structure
.github/CONTRIBUTING.mdPR requirements, commit style
Existing configsPatterns already configured (eslint.config.js, .prettierrc, tsconfig.json)
Code review historyRepeated comments about the same issue
Project language docsBest practices for the language/framework (Vue 3 style guide, etc.)

For each convention, classify it:

CategoryExampleTool
Namingkebab-case files, PascalCase componentsESLint, lint-staged
Importstype imports, .js extensions, orderingESLint, Prettier plugins
Formattingsingle quotes, trailing commas, print widthPrettier
Typesno implicit any, strict null checksTypeScript tsconfig.json
Unused codeno unused vars, params, importsESLint
Styleno-var, prefer-const, no console.logESLint
Vue<script setup> only, component name casingeslint-plugin-vue

2. Mapping — Convention → Rule

Use this reference for the Stars project's tech stack:

JavaScript / TypeScript (ESLint)

ConventionESLint rule / plugin
Consistent type imports@typescript-eslint/consistent-type-imports: ["error", { prefer: "type-imports" }]
No unused variables@typescript-eslint/no-unused-vars: ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }]
No varno-var: "error"
Prefer constprefer-const: "error"
Named exports onlyimport/no-default-export: "error" (eslint-plugin-import)
No console.log (except warn/error)no-console: ["warn", { allow: ["warn", "error"] }]
Max paramsmax-params: ["warn", 3]
Complexity gatecomplexity: ["warn", 10]
Explicit .js extensions in importsCustom or import/extensions rule
JSDoc required on public functionsjsdoc/require-jsdoc (eslint-plugin-jsdoc)

Vue SFCs (eslint-plugin-vue)

ConventionRule
PascalCase component names in templatesvue/component-name-in-template-casing: ["error", "PascalCase"]
No unused componentsvue/no-unused-components: "warn"
<script setup> only (no Options API)vue/component-api-style: ["error", ["script-setup"]]
Multi-word component names (per Vue 3 style guide)vue/multi-word-component-names: "error"
No v-html (XSS risk)vue/no-v-html: "warn"
Attribute ordering conventionvue/attributes-order
Require :key in v-forvue/require-v-for-key

Formatting (Prettier)

ConventionPrettier option
Single quotessingleQuote: true
Trailing commastrailingComma: "all"
100 char print widthprintWidth: 100
Import ordering@ianvs/prettier-plugin-sort-imports with importOrder config
No semicolons (if desired)semi: false
2-space indenttabWidth: 2 (default)

TypeScript (tsconfig.json)

ConventionCompiler option
Strict null checksstrictNullChecks: true
No implicit anynoImplicitAny: true
Strict mode (all)strict: true
No unchecked indexed accessnoUncheckedIndexedAccess: true
Force consistent casing in importsforceConsistentCasingInFileNames: true

3. Implementation — Generate config

When creating or updating config files, follow these principles:

ESLint flat config (eslint.config.js):

  • Use ESM (export default), not .eslintrc
  • Organise by file glob: separate JS/TS blocks from Vue SFC blocks
  • Use the files array to scope rules correctly
  • Vue SFCs need vue-eslint-parser as outer parser with TS parser inside

Prettier config (.prettierrc):

  • Keep it minimal — formatting rules belong here, logic rules belong in ESLint
  • Use prettier-plugin-sort-imports for import order when ESLint import plugin is not used
  • Pair with format and format:check npm scripts

TypeScript config (tsconfig.json):

  • Separate tsconfig.json (IDE/typecheck) from Vite config
  • Set "noEmit": true when using Vite for bundling
  • Enable strict: true as a baseline, relax specific checks only with documented justification

4. Verification — Tooling checklist

After implementing, verify with:

# Lint all source files
npx eslint 'web/src/**/*.{ts,js,vue}'

# Check formatting (without writing)
npx prettier --check 'web/src/**/*.{ts,vue,css}'

# TypeScript type check
npx vue-tsc --noEmit

# Fix all auto-fixable issues
npx eslint --fix 'web/src/**/*.{ts,js,vue}'
npx prettier --write 'web/src/**/*.{ts,vue,css}'

5. CI Integration

Ensure lint/format/typecheck runs in CI:

name: Lint & Typecheck
steps:
  - run: npm run format:check   # Prettier
  - run: npm run lint           # ESLint
  - run: npm run typecheck      # vue-tsc

Add to package.json scripts:

{
  "lint": "eslint 'web/src/**/*.{ts,js,vue}'",
  "lint:fix": "eslint --fix 'web/src/**/*.{ts,js,vue}'",
  "format": "prettier --write 'web/src/**/*.{ts,vue,css}'",
  "format:check": "prettier --check 'web/src/**/*.{ts,vue,css}'",
  "typecheck": "vue-tsc --noEmit -p web/tsconfig.json"
}

Consider adding pre-commit hooks (lefthook, husky + lint-staged) to catch issues before they reach CI.

Language Quick Reference

When the project's language differs from Stars (JS/TS/Vue), use these mappings:

LanguageLinterFormatterType System
JavaScript/TypeScriptESLintPrettier / BiomeTypeScript
PythonRuffRuffmypy / pyright
RustClippyrustfmt
Gogolangci-lintgofmt / gofumpt
JavaCheckstyle / PMDSpotless
RubyRuboCopRuboCopSorbet / RBS
Kotlindetektktlint
SwiftSwiftLintswift-format

Never

  • Never add a tool that the project doesn't already use without asking — introducing a new linter/formatter is a team decision
  • Never change prettier formatting options without verifying the change across the full codebase (formatting wars are expensive)
  • Never override a tool's default without a documented code convention that justifies it
  • Never configure ESLint rules that conflict with Prettier rules (use eslint-config-prettier to disable style rules ESLint handles)
  • Never add a rule that produces noise — warnings that are always ignored reduce trust in the tool
  • Never skip documenting why a rule exists — future maintainers need to know if the convention still applies

References

What ships with it: 27 files

18.4 KB alongside SKILL.md

Keep looking

Skills are one crate of 327,069. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.