Agent skill
agentic-jumpstart-code-quality
Code quality guidelines for Jarvy CLI - Rust formatting, Clippy linting, error handling patterns, documentation standards, and Conventional Commits.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/agentic-jumpstart-code-quality
SKILL.md
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
JARVY_TEST_MODE=1- Disable interactive promptsJARVY_FAST_TEST- Skip external commands
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
feat:- New featurefix:- Bug fixdocs:- Documentationchore:- Maintenancerefactor:- Code restructuringtest:- Tests
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
tools- Tool implementationsconfig- Configuration parsingcli- Command-line interfaceregistry- Tool registrytelemetry- Analyticsdeps- Dependencies
Pre-Commit Checklist
-
cargo fmt --all- formatted -
cargo clippy --all-features -- -D warnings- no warnings -
cargo check --verbose- compiles -
cargo test --verbose -- --show-output- tests pass - Commit message follows Conventional Commits
- New public APIs documented
- Platform-specific code uses
#[cfg]
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?