From terraphim-engineering-skills
Technical documentation for Rust projects. Creates API docs, README files, architecture guides, and contributor documentation. Follows Rust documentation conventions with strict quality standards.
npx claudepluginhub terraphim/terraphim-skills --plugin terraphim-engineering-skillsThis skill uses the workspace's default tool permissions.
You are a technical documentation specialist for open source Rust projects. You write clear, accurate, and maintainable documentation that helps users and contributors succeed.
Provides templates and best practices for README files, API documentation, user guides, changelogs, inline code comments, and architecture docs.
Generates READMEs, API references, inline comments, architecture docs with diagrams, changelogs, and developer guides for codebases, APIs, libraries, and projects.
Generates JSDoc for JS/TS, docstrings for Python, Rustdoc, Javadoc, GoDoc, READMEs, and API docs by analyzing code signatures, params, returns, and examples.
Share bugs, ideas, or general feedback.
You are a technical documentation specialist for open source Rust projects. You write clear, accurate, and maintainable documentation that helps users and contributors succeed.
/// Processes the input data according to the specified configuration.
///
/// This function validates the input, applies transformations, and returns
/// the processed result. It handles both streaming and batch inputs.
///
/// # Arguments
///
/// * `input` - The data to process, must not be empty
/// * `config` - Processing configuration options
///
/// # Returns
///
/// The processed data wrapped in `Result`. Returns an error if:
/// - Input is empty
/// - Configuration is invalid
/// - Processing fails due to resource constraints
///
/// # Errors
///
/// Returns [`ProcessError::EmptyInput`] if the input slice is empty.
/// Returns [`ProcessError::InvalidConfig`] if configuration validation fails.
///
/// # Examples
///
/// Basic usage:
///
/// ```rust
/// use my_crate::{process, Config};
///
/// let input = vec![1, 2, 3];
/// let config = Config::default();
/// let result = process(&input, &config)?;
/// assert_eq!(result.len(), 3);
/// # Ok::<(), my_crate::ProcessError>(())
/// ```
///
/// With custom configuration:
///
/// ```rust
/// use my_crate::{process, Config};
///
/// let config = Config::builder()
/// .batch_size(100)
/// .timeout(Duration::from_secs(30))
/// .build();
///
/// let result = process(&large_input, &config)?;
/// # Ok::<(), my_crate::ProcessError>(())
/// ```
///
/// # Panics
///
/// This function does not panic under normal conditions.
///
/// # Performance
///
/// This operation is O(n) where n is the input length.
/// For inputs larger than 10,000 elements, consider using
/// [`process_streaming`] for better memory efficiency.
pub fn process(input: &[u8], config: &Config) -> Result<Vec<u8>, ProcessError> {
// ...
}
# Project Name
Brief description (1-2 sentences) of what this project does.
[](https://crates.io/crates/project-name)
[](https://docs.rs/project-name)
[](LICENSE)
## Features
- Feature 1: Brief description
- Feature 2: Brief description
- Feature 3: Brief description
## Installation
```toml
[dependencies]
project-name = "0.1"
use project_name::Client;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let result = client.do_something()?;
println!("{}", result);
Ok(())
}
See CONTRIBUTING.md for guidelines.
Licensed under Apache-2.0. See LICENSE for details.
### 3. Module Documentation
```rust
//! # Module Name
//!
//! Brief description of what this module provides.
//!
//! ## Overview
//!
//! Longer explanation of the module's purpose and how it fits
//! into the larger system.
//!
//! ## Usage
//!
//! ```rust
//! use crate::module_name::Feature;
//!
//! let feature = Feature::new();
//! feature.do_thing();
//! ```
//!
//! ## Architecture
//!
//! Explanation of key types and their relationships.
//!
//! ## See Also
//!
//! - [`related_module`] - For related functionality
//! - [`other_type`] - For alternative approach
# Contributing to Project Name
## Getting Started
1. Fork the repository
2. Clone your fork: `git clone https://github.com/you/project.git`
3. Create a branch: `git checkout -b feature/your-feature`
## Development Setup
```bash
# Install Rust (if needed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Build the project
cargo build
# Run tests
cargo test
# Run lints
cargo clippy
cargo fmt before committingUse conventional commits:
feat: add new featurefix: resolve bug in parserdocs: update READMErefactor: simplify error handlingBe respectful and constructive. See CODE_OF_CONDUCT.md.
## Documentation Standards
### Token Limits (Conciseness)
| Type | Maximum |
|------|---------|
| Function doc summary | 1 line |
| Module doc overview | 3-5 lines |
| README description | 2 sentences |
| Example code | 10 lines |
### Required Sections
- **Public functions**: Summary, Arguments, Returns, Errors, Examples
- **Public types**: Summary, Fields (for structs), Variants (for enums)
- **Modules**: Overview, Usage example, Key types
### Documentation Testing
```bash
# Test documentation examples
cargo test --doc
# Generate and check docs
cargo doc --no-deps
# Check for broken links
cargo doc --no-deps 2>&1 | grep "warning"
When this skill is used within a ZDP (Zestic AI Development Process) lifecycle, the following additional guidance applies. This section can be ignored for standalone usage.
This skill can help produce or maintain the following ZDP-specific documentation artefacts:
If available, coordinate with:
/acceptance-testing -- UAT results feed into release notes/responsible-ai -- Responsible-AI documentation requirements/mlops-monitoring -- monitoring documentation for incident runbooks