Claude-skill-registry agentic-jumpstart-code-quality
Code quality guidelines for Jarvy CLI - Rust formatting, Clippy linting, error handling patterns, documentation standards, and Conventional Commits.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/agentic-jumpstart-code-quality" ~/.claude/skills/majiayu000-claude-skill-registry-agentic-jumpstart-code-quality && rm -rf "$T"
manifest:
skills/data/agentic-jumpstart-code-quality/SKILL.mdsource content
Code Quality Guidelines
This skill defines code quality standards for the Jarvy CLI project.
Build and Validation Commands
Run these before every commit:
cargo fmt --all # Format code cargo clippy --all-features -- -D warnings # Lint (must pass) cargo check --verbose # Type check cargo test --verbose -- --show-output # Run tests
Rust Style Guidelines
Edition and Idioms
- Use Rust 2024 edition idioms
- Prefer stdlib over new crates
- Use derive macros (clap, serde, thiserror)
Naming Conventions
// Functions and variables: snake_case fn install_package(package_name: &str) -> Result<(), InstallError> // Types and traits: PascalCase struct ToolConfig { } enum InstallError { } // Constants: SCREAMING_SNAKE_CASE const MAX_RETRY_ATTEMPTS: u32 = 3; // Modules: snake_case mod package_manager;
Platform-Specific Code
#[cfg(target_os = "macos")] fn install_macos() -> Result<(), InstallError> { } #[cfg(target_os = "linux")] fn install_linux() -> Result<(), InstallError> { } #[cfg(target_os = "windows")] fn install_windows() -> Result<(), InstallError> { }
Lazy Statics
Use
OnceLock for lazy initialization:
use std::sync::OnceLock; use std::sync::RwLock; static REGISTRY: OnceLock<RwLock<HashMap<String, HandlerFn>>> = OnceLock::new(); fn get_registry() -> &'static RwLock<HashMap<String, HandlerFn>> { REGISTRY.get_or_init(|| RwLock::new(HashMap::new())) }
Clippy Compliance
Code must pass
cargo clippy --all-features -- -D warnings.
Common Fixes
// Use if-let for single pattern if let Ok(v) = result { process(v); } // Use ? operator let value = operation()?; // Use is_empty() if items.is_empty() { } // Avoid needless borrows function(&string) // not &string.clone()
Error Handling
thiserror Pattern
#[derive(thiserror::Error, Debug)] pub enum InstallError { #[error("unsupported platform")] Unsupported, #[error("prerequisite missing: {0}")] Prereq(&'static str), #[error("command failed: {cmd} (code: {code:?})\n{stderr}")] CommandFailed { cmd: String, code: Option<i32>, stderr: String }, #[error(transparent)] Io(#[from] std::io::Error), }
Error Propagation
pub fn ensure(min_hint: &str) -> Result<(), InstallError> { let config = load_config()?; if !is_installed(&config)? { install()?; } Ok(()) }
Exit Codes
pub const SUCCESS: i32 = 0; pub const CONFIG_ERROR: i32 = 2; pub const PREREQ_MISSING: i32 = 3; pub const PERMISSION_REQUIRED: i32 = 5;
Testing Standards
Unit Tests
#[cfg(test)] mod tests { use super::*; #[test] fn test_parse_version() { let result = parse_version("2.40"); assert!(result.is_ok()); } }
Test Environment Variables
- Disable interactive promptsJARVY_TEST_MODE=1
- Skip external commandsJARVY_FAST_TEST
Documentation Standards
Module Documentation
//! Tool registry for managing package installer handlers. //! //! This module provides a global registry that maps tool names //! to their installation handler functions.
Function Documentation
/// Ensures a tool is installed at the specified minimum version. /// /// # Arguments /// /// * `min_hint` - Minimum version string (e.g., "2.40") /// /// # Returns /// /// Returns `Ok(())` if installed or successfully installed. pub fn ensure(min_hint: &str) -> Result<(), InstallError> { }
Commit Message Format
Use Conventional Commits:
<type>(<scope>): <description> [optional body]
Types
- New featurefeat:
- Bug fixfix:
- Documentationdocs:
- Maintenancechore:
- Code restructuringrefactor:
- Teststest:
Examples
feat(tools): add Node.js version manager support fix(config): handle missing jarvy.toml gracefully docs: update README with installation instructions chore(deps): update clap to 4.5 refactor(registry): simplify handler lookup test(cli): add integration tests for setup
Scope Guidelines
- Tool implementationstools
- Configuration parsingconfig
- Command-line interfacecli
- Tool registryregistry
- Analyticstelemetry
- Dependenciesdeps
Pre-Commit Checklist
-
- formattedcargo fmt --all -
- no warningscargo clippy --all-features -- -D warnings -
- compilescargo check --verbose -
- tests passcargo test --verbose -- --show-output - Commit message follows Conventional Commits
- New public APIs documented
- Platform-specific code uses
#[cfg]