con un clic
documentation
// Standards and workflows for creating and maintaining high-quality documentation
// Standards and workflows for creating and maintaining high-quality documentation
Comprehensive code review framework for evaluating code quality, security, performance, and maintainability
Manage Git worktrees for parallel development workflows without switching branches
Core Kilo agent configuration with comprehensive coding capabilities and workflow management
A systematic 4-phase debugging framework for reproducing, analyzing, fixing, and verifying bugs
Template for creating new skills - customize and rename for your use case
Enforce Red-Green-Refactor TDD workflow for writing tests before implementation
| name | documentation |
| version | 1.0.0 |
| description | Standards and workflows for creating and maintaining high-quality documentation |
Comprehensive guidelines for writing clear, maintainable, and useful documentation.
Use this skill when:
Purpose: Explain how code works to developers
/// Calculates the total price for a list of items.
///
/// # Arguments
///
/// * `items` - A slice of items to calculate the total for
///
/// # Returns
///
/// The total price as a floating-point number
///
/// # Examples
///
/// ```
/// let items = vec![
/// Item { name: "Widget", price: 10.0 },
/// Item { name: "Gadget", price: 20.0 },
/// ];
/// assert_eq!(calculate_total(&items), 30.0);
/// ```
///
/// # Panics
///
/// Panics if any item has a negative price.
pub fn calculate_total(items: &[Item]) -> f64 {
items.iter().map(|item| item.price).sum()
}
/// User entity representing a system user.
///
/// This struct stores basic user information and provides
/// methods for user management.
///
/// # Examples
///
/// ```
/// let user = User::new("john@example.com", "John Doe");
/// println!("User: {}", user.name);
/// ```
#[derive(Debug, Clone)]
pub struct User {
/// User's email address (unique identifier)
pub email: String,
/// User's display name
pub name: String,
/// Account creation timestamp
pub created_at: DateTime<Utc>,
}
// Module documentation
//! # My Crate
//!
//! `my_crate` is a collection of utilities for doing X, Y, and Z.
//!
//! ## Features
//!
//! - Feature A
//! - Feature B
//!
//! ## Quick Start
//!
//! ```rust
//! use my_crate::do_something;
//! do_something();
//! ```
/**
* Parses a configuration file and returns a validated config object.
*
* @param filePath - Path to the configuration file
* @param options - Optional parsing options
* @returns Promise resolving to the parsed configuration
* @throws {ConfigError} If the file cannot be read or parsed
*
* @example
* ```typescript
* const config = await parseConfig('./config.toml');
* console.log(config.database.url);
* ```
*/
export async function parseConfig(
filePath: string,
options?: ParseOptions
): Promise<Config> {
// Implementation
}
/**
* User role enum defining permission levels.
*/
export enum UserRole {
/** Can view content */
Viewer = 'viewer',
/** Can edit content */
Editor = 'editor',
/** Full access to all features */
Admin = 'admin',
}
/**
* Configuration options for the API client.
*
* @example
* ```typescript
* const options: ApiClientOptions = {
* baseUrl: 'https://api.example.com',
* timeout: 5000,
* retries: 3,
* };
* ```
*/
export interface ApiClientOptions {
/** Base URL for API requests */
baseUrl: string;
/** Request timeout in milliseconds */
timeout?: number;
/** Number of retry attempts for failed requests */
retries?: number;
}
Purpose: Quick start and project overview
# Project Name
Brief description of what the project does and who it's for.
## Features
- Feature 1
- Feature 2
- Feature 3
## Quick Start
### Prerequisites
- Requirement 1
- Requirement 2
### Installation
```bash
# Clone the repository
git clone https://github.com/user/project.git
# Install dependencies
cd project
npm install
# Build
npm run build
# Basic usage
npm start
# With options
npm start -- --option value
Explain configuration options here.
| Variable | Description | Default |
|---|---|---|
OPTION_1 | Description | default_value |
OPTION_2 | Description | default_value |
# Command
kilo process --input data.json --output result.json
# Output
Processing complete: 100 records processed
[More complex example]
[Link to API docs or brief API overview]
See CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see LICENSE for details.
### 3. API Documentation
**Purpose**: Document public APIs for consumers
#### REST API Documentation
```markdown
# API Reference
## Authentication
All API requests require authentication via Bearer token:
```http
Authorization: Bearer <your-token>
Retrieves a paginated list of users.
Request
GET /api/v1/users
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page | int | No | Page number (default: 1) |
limit | int | No | Items per page (default: 20, max: 100) |
search | string | No | Search query for filtering |
Response
{
"data": [
{
"id": "123",
"email": "user@example.com",
"name": "John Doe",
"created_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 100,
"total_pages": 5
}
}
Status Codes
| Code | Description |
|---|---|
| 200 | Success |
| 401 | Unauthorized - invalid or missing token |
| 403 | Forbidden - insufficient permissions |
| 500 | Internal server error |
Example
curl -H "Authorization: Bearer $TOKEN" \
"https://api.example.com/api/v1/users?page=1&limit=10"
Creates a new user.
Request
POST /api/v1/users
Content-Type: application/json
Body
{
"email": "newuser@example.com",
"name": "Jane Doe",
"role": "editor"
}
Response
{
"id": "124",
"email": "newuser@example.com",
"name": "Jane Doe",
"role": "editor",
"created_at": "2024-01-15T11:00:00Z"
}
Status Codes
| Code | Description |
|---|---|
| 201 | Created successfully |
| 400 | Bad request - invalid input |
| 401 | Unauthorized |
| 409 | Conflict - email already exists |
All error responses follow this format:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input",
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
}
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
### 4. Architecture Documentation
**Purpose**: Document design decisions and system architecture
#### Architecture Decision Records (ADRs)
```markdown
# ADR-001: Use SQLite for Local Storage
## Status
Accepted
## Context
We need a local storage solution for caching user data and settings.
Options considered:
- SQLite
- JSON files
- RocksDB
## Decision
We will use SQLite for the following reasons:
1. **ACID compliance**: Ensures data integrity
2. **Query capabilities**: Complex queries with SQL
3. **Performance**: Fast for our use case (< 10K records)
4. **Tooling**: Excellent Rust support via `rusqlite`
5. **Simplicity**: Single file, no server setup
## Consequences
### Positive
- Reliable data storage
- Easy to inspect with standard SQLite tools
- Good performance for read-heavy workloads
### Negative
- Not suitable for large-scale data (> 1M records)
- Requires schema migrations
### Neutral
- Adds SQLite as a dependency
- Need to handle database migrations
## Implementation
Database location: `~/.config/ktme/data.db`
Schema defined in `migrations/` directory.
# System Architecture
## Overview
┌─────────────────────────────────────────────────────────────┐ │ CLI Layer │ │ (command parsing, argument validation, output formatting) │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────┴──────────────────────────────────────┐ │ Application Layer │ │ (business logic, orchestration, AI integration) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ AI │ │ Git │ │ Doc │ │ Config │ │ │ │ Provider │ │ Handler │ │Generator │ │ Manager │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────┴──────────────────────────────────────┐ │ Infrastructure Layer │ │ (storage, external APIs, file system) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ SQLite │ │ HTTP │ │ File │ │ │ │ DB │ │ Client │ │ System │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘
## Components
### CLI Layer
- **Purpose**: Handle user input and output
- **Key Files**: `src/cli/`
- **Dependencies**: `clap`, `tracing`
### Application Layer
- **AI Provider**: Manages AI API calls (OpenAI, Claude)
- **Git Handler**: Analyzes git history and diffs
- **Doc Generator**: Creates documentation from templates
- **Config Manager**: Loads and validates configuration
### Infrastructure Layer
- **SQLite DB**: Persistent storage for services and mappings
- **HTTP Client**: API calls with retry logic
- **File System**: Reads/writes configuration and documents
## Data Flow
1. User runs CLI command
2. CLI layer validates arguments
3. Application layer executes business logic
4. Infrastructure layer persists/retrieves data
5. Results flow back to user
## Key Design Decisions
See ADRs:
- [ADR-001: Use SQLite for Local Storage](./adr/001-sqlite-storage.md)
- [ADR-002: Modular AI Provider System](./adr/002-ai-providers.md)
- [ADR-003: Async-First Architecture](./adr/003-async-architecture.md)
Purpose: Track changes between releases
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- Feature description with PR/issue reference (#123)
### Changed
- Change description (#124)
### Fixed
- Bug fix description (#125)
## [1.2.0] - 2024-01-15
### Added
- New AI provider: Google Gemini support (#100)
- Configuration validation command: `kilo config validate` (#102)
### Changed
- Improved error messages for API failures (#105)
- Updated dependencies to latest versions (#107)
### Fixed
- Fixed memory leak in long-running sessions (#110)
- Fixed race condition in parallel processing (#112)
### Security
- Updated OpenSSL to address CVE-2024-XXXX (#115)
## [1.1.0] - 2024-01-01
[Previous release notes...]
## [1.0.0] - 2023-12-15
### Added
- Initial release
- Core features: X, Y, Z
[Unreleased]: https://github.com/user/project/compare/v1.2.0...HEAD
[1.2.0]: https://github.com/user/project/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/user/project/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/user/project/releases/tag/v1.0.0
project/
├── README.md # Quick start and overview
├── CHANGELOG.md # Version history
├── CONTRIBUTING.md # Contribution guidelines
├── docs/
│ ├── index.md # Documentation home
│ ├── getting-started.md # Detailed setup guide
│ ├── api/ # API documentation
│ │ ├── endpoints.md
│ │ └── schemas.md
│ ├── guides/ # User guides
│ │ ├── basic-usage.md
│ │ └── advanced-usage.md
│ ├── architecture/ # Technical docs
│ │ ├── overview.md
│ │ └── adr/ # Architecture Decision Records
│ │ ├── 001-sqlite-storage.md
│ │ └── 002-ai-providers.md
│ └── reference/ # Reference material
│ ├── configuration.md
│ └── cli-commands.md
└── src/
└── lib.rs # Inline documentation (cargo doc)
# ❌ Bad: Verbose and unclear
In order to utilize this functionality for the purpose of achieving
your desired outcome, you must first ensure that you have properly
configured the system according to the specifications outlined in
the configuration section above.
# ✅ Good: Clear and direct
To use this feature, configure the system as described in Configuration.
# ❌ Bad: Abstract description
The function accepts various parameters and returns different types
based on the input.
# ✅ Good: Concrete examples
The function returns different types based on input:
```rust
parse("123") // Returns: Number(123)
parse("hello") // Returns: String("hello")
parse("true") // Returns: Boolean(true)
### Keep Code Examples Updated
```markdown
# ❌ Bad: Outdated example
```rust
let user = User::new("John"); // Old API
let user = User::new("John", "john@example.com"); // Current API
# ✅ Consistent structure for all endpoints
## Endpoint Name
Brief description.
### Request
[HTTP method and path]
### Parameters
[Table of parameters]
### Response
[Example response]
### Status Codes
[Table of status codes]
### Example
[curl command]
/// Examples in doc comments are tested by `cargo test`
///
/// ```
/// use mylib::Calculator;
///
/// let calc = Calculator::new();
/// assert_eq!(calc.add(2, 3), 5);
/// assert_eq!(calc.multiply(4, 5), 20);
/// ```
pub struct Calculator { }
# Rust
cargo doc --open
# TypeScript
npm run docs # With TypeDoc
# Generate OpenAPI spec
cargo run -- openapi-spec > openapi.json
❌ Don't:
✅ Do:
This skill integrates with Kilo's workflow:
file:line referencesUse with other skills: