# technical-documentation > Write comprehensive technical documentation for software projects - Author: Yves Lepère - Repository: YvesThenElse/TeamForge - Version: 20260107110434 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/YvesThenElse/TeamForge - Web: https://mule.run/skillshub/@@YvesThenElse/TeamForge~technical-documentation:20260107110434 --- --- name: technical-documentation description: Write comprehensive technical documentation for software projects allowed-tools: Read, Write, Edit, Grep, Glob category: Documentation tags: - documentation - technical-writing - readme - api-docs --- # Technical Documentation Skill This skill helps you create comprehensive technical documentation. ## Documentation Types ### README.md ```markdown # Project Name Brief description of what the project does. ## Features - Feature 1 - Feature 2 - Feature 3 ## Installation \`\`\`bash npm install package-name \`\`\` ## Quick Start \`\`\`javascript const package = require('package-name'); package.doSomething(); \`\`\` ## Configuration | Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | string | - | Your API key | | timeout | number | 5000 | Request timeout in ms | ## Examples ### Basic Usage \`\`\`javascript // Code example \`\`\` ### Advanced Usage \`\`\`javascript // More complex example \`\`\` ## API Reference See [API.md](./API.md) for complete API documentation. ## Contributing See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines. ## License MIT ``` ### API Documentation ```markdown # API Reference ## Authentication All API requests require an API key: \`\`\` Authorization: Bearer YOUR_API_KEY \`\`\` ## Endpoints ### GET /api/users Retrieves all users. **Parameters** | Name | Type | Required | Description | |------|------|----------|-------------| | page | integer | No | Page number (default: 1) | | limit | integer | No | Items per page (default: 20) | **Response** \`\`\`json { "users": [ { "id": 1, "name": "John Doe", "email": "john@example.com" } ], "total": 100, "page": 1 } \`\`\` **Status Codes** - `200 OK` - Success - `401 Unauthorized` - Invalid API key - `500 Internal Server Error` - Server error ### POST /api/users Creates a new user. **Request Body** \`\`\`json { "name": "John Doe", "email": "john@example.com", "password": "secure_password" } \`\`\` **Validation Rules** - `name`: Required, 2-100 characters - `email`: Required, valid email format - `password`: Required, minimum 8 characters ``` ### Architecture Decision Records (ADR) ```markdown # ADR-001: Use PostgreSQL for Database ## Status Accepted ## Context We need to choose a database for our application. We need: - ACID compliance - Complex queries support - Good performance - Strong ecosystem ## Decision We will use PostgreSQL as our primary database. ## Consequences **Positive:** - Strong ACID compliance - Rich feature set (JSON support, full-text search) - Excellent performance - Large community and ecosystem - Good tooling **Negative:** - Requires more setup than SQLite - Vertical scaling limits - Learning curve for advanced features ## Alternatives Considered - **MySQL**: Good but PostgreSQL has better feature set - **MongoDB**: NoSQL not needed for our use case - **SQLite**: Too limited for production use ``` ## Code Documentation ### Function/Method Documentation **JavaScript (JSDoc)** ```javascript /** * Calculates the sum of two numbers * * @param {number} a - The first number * @param {number} b - The second number * @returns {number} The sum of a and b * @throws {TypeError} If parameters are not numbers * * @example * add(2, 3); // returns 5 */ function add(a, b) { if (typeof a !== 'number' || typeof b !== 'number') { throw new TypeError('Parameters must be numbers'); } return a + b; } ``` **Python (Docstrings)** ```python def calculate_average(numbers): """ Calculate the average of a list of numbers. Args: numbers (list[float]): List of numbers to average Returns: float: The arithmetic mean of the numbers Raises: ValueError: If the list is empty TypeError: If list contains non-numeric values Examples: >>> calculate_average([1, 2, 3, 4, 5]) 3.0 >>> calculate_average([10.5, 20.5, 30.0]) 20.333333333333332 """ if not numbers: raise ValueError("Cannot calculate average of empty list") return sum(numbers) / len(numbers) ``` **Java (Javadoc)** ```java /** * Represents a user in the system. * *
This class encapsulates user information including * authentication details and personal information.
* * @author John Doe * @version 1.0 * @since 2024-01-01 */ public class User { /** * Gets the user by their unique identifier. * * @param id the unique identifier of the user * @return the User object if found * @throws UserNotFoundException if no user exists with given ID * @see UserRepository#findById(Long) */ public User getUserById(Long id) throws UserNotFoundException { // Implementation } } ``` **C# (XML Documentation)** ```csharp ///
/// var order = new Order { ProductId = 1, Quantity = 5 };
/// await ProcessOrderAsync(order);
///
///