Coding Standards

SkillMonitoring & ops

Load perl-lsp coding standards for code-writing or code-review work in this repo. Use when implementing, fixing, reviewing, or validating code.

Use Coding Standards in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Coding Standards and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Coding Standards skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Coding StandardsStart free

What this skill tells your AI

The instructions your AI receives, as published by effortlessmetrics/perl-lsp in docs/reference/archive/old-infrastructure/skills/coding-standards/SKILL.md and read by Ahel’s review.

This skill is the full on-demand coding standards reference for agents. Hooks may inject a condensed summary automatically, but that Layer 0 context is not a replacement for the complete standards below.

Banned In Production Code

  • unwrap(), expect() → use ?, .ok_or_else(), or pattern matching
  • panic!(), todo!(), unimplemented!() → return Result/Option
  • dbg!() → use tracing::debug!
  • std::process::abort() → never
  • std::process::exit() → only in bin/ directories and lifecycle.rs
  • Exception: one #[allow(clippy::expect_used)] in crates/perl-lsp/src/util/uri.rs

Patterns

  • Regex init: Option<Regex> with .ok() for graceful degradation
  • Non-empty collections: fixed-size arrays [T; N] for compile-time guarantees
  • .first() over .get(0)
  • .push(char) not .push_str("x") for single chars
  • or_default() not or_insert_with(Vec::new)
  • No unnecessary .clone() on Copy types

Test Standards

  • Return Result<()> from tests, or use perl_tdd_support::must / must_some
  • Descriptive names: test_<what>_<scenario>_<expected>
  • LSP tests: RUST_TEST_THREADS=2 cargo test -p perl-lsp -- --test-threads=2

Commit Format

  • Conventional: type(scope): description
  • Types: fix, feat, test, docs, chore, perf, refactor
  • Scope: crate name, subsystem, or repo area being changed

Verification

Run cargo fmt --all && cargo clippy -p <crate> --tests -- -D warnings && cargo test -p <crate>

Escalate to nix develop -c just ci-gate for changes spanning 3+ crates.

Git Commit Hygiene

  • Only git add files you intentionally created or modified
  • Never use git add -A or git add .
  • Exclude from commits unless your task requires them:
    • Cargo.lock unless dependencies changed
    • .claude/ infrastructure files unless that is the task
    • docs/project/CURRENT_STATUS.md
    • scripts/.ignored-baseline
  • Before committing, run git diff --cached --name-only

Dual Indexing

file_index.references.entry(bare_name.to_string()).or_default().push(symbol_ref.clone());
file_index.references.entry(qualified).or_default().push(symbol_ref);

Signals

GitHub stars
26
Forks
7
Last commit
Sep 2026
Advanced
Item type
skill
Key
coding-standards-effortlessmetrics
Source
github.com/effortlessmetrics/perl-lsp