home-manager/programs/agent-skills/skills/technical-documentation/SKILL.md
This skill should be used when the user asks to "write documentation", "create README", "API docs", "design document", "specification", "user guide", or needs documentation guidance. Provides comprehensive documentation patterns for developers, teams, and end-users in both English and Japanese.
npx skillsauth add takeokunn/nixos-configuration Technical DocumentationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
[]
Brief one-line description of what the project does.
<features>
- Feature 1
- Feature 2
- Feature 3
</features>
<quick_start>
```bash
npm install package-name
```
</quick_start>
<basic_usage>
```typescript
import { example } from "package-name";
const result = example();
console.log(result);
```
</basic_usage>
<documentation>
See [full documentation](link) for detailed guides.
</documentation>
<contributing>
Contributions welcome! See [CONTRIBUTING.md](link).
</contributing>
<license>
MIT
</license>
</example>
</pattern>
<pattern name="api_documentation">
<description>Comprehensive API reference documentation structure</description>
<example>
<note>API Reference</note>
<authentication>
All requests require an API key in the Authorization header:
```bash
Authorization: Bearer YOUR_API_KEY
```
</authentication>
<base_url>
```
https://api.example.com/v1
```
</base_url>
<endpoints>
<get_users>
Retrieve a list of users.
**Parameters:**
- `limit` (integer, optional): Number of results (default: 10)
- `offset` (integer, optional): Pagination offset (default: 0)
**Response:**
```json
{
"users": [
{ "id": 1, "name": "John Doe" },
{ "id": 2, "name": "Jane Smith" }
],
"total": 100
}
```
**Error Codes:**
- `401`: Unauthorized - Invalid API key
- `429`: Rate limit exceeded
</get_users>
</endpoints>
</example>
</pattern>
<pattern name="design_document_structure">
<description>Technical design document format for architectural decisions</description>
<example>
<note>Feature Name Design Document</note>
<summary>
**Problem:** Brief description of the problem being solved
**Solution:** High-level approach
**Scope:** What's included and what's not
</summary>
<background>
Context and motivation for this design.
</background>
<goals_and_non_goals>
**Goals:**
- Goal 1
- Goal 2
**Non-Goals:**
- What we're explicitly not doing
- Future considerations
</goals_and_non_goals>
<technical_design>
<architecture>
[Diagram or description of system architecture]
</architecture>
<data_flow>
1. User action
2. System processing
3. Response
</data_flow>
<components>
**Component A:** Responsible for X
**Component B:** Responsible for Y
</components>
</technical_design>
<alternatives_considered>
<alternative_1>
Pros: ...
Cons: ...
Decision: Not chosen because...
</alternative_1>
</alternatives_considered>
<security_considerations>
- Data encryption at rest and in transit
- Authentication and authorization
- Input validation
</security_considerations>
<testing_strategy>
- Unit tests for component logic
- Integration tests for API contracts
- E2E tests for critical user flows
</testing_strategy>
<rollout_plan>
1. Phase 1: Internal testing
2. Phase 2: Beta release (10% of users)
3. Phase 3: Full rollout
</rollout_plan>
</example>
</pattern>
<pattern name="user_guide_structure">
<description>End-user documentation with step-by-step instructions</description>
<example>
<note>User Guide</note>
<getting_started>
Welcome! This guide will help you get started with [Product Name].
</getting_started>
<core_concepts>
**Workspace:** A container for your projects
**Project:** A collection of related items
**Item:** The basic unit of work
</core_concepts>
<creating_your_first_project>
1. Click the "New Project" button
2. Enter a project name
3. Choose a template (optional)
4. Click "Create"
You'll see your new project in the sidebar.
</creating_your_first_project>
<troubleshooting>
<troubleshooting_login>
1. Check your email address is correct
2. Click "Forgot Password" to reset
3. Contact support if the issue persists
</troubleshooting_login>
<troubleshooting_data>
Ensure you have a stable internet connection. The app auto-saves every 30 seconds.
</troubleshooting_data>
</troubleshooting>
<glossary>
**Term:** Definition
**Another Term:** Another definition
</glossary>
</example>
</pattern>
</patterns>
<language_guidelines> <english> <style>Active voice, present tense</style> <tone>Professional but approachable</tone> <avoid>Unnecessarily complex words, idioms that don't translate</avoid> <example> <good_example>Good</good_example> Run this command to start the server.
<bad_example>Bad</bad_example>
The server can be started by running the following command.
</example>
</english>
<japanese>
<style>です・ます調 (polite form) for user docs, である調 for technical specs</style>
<tone>丁寧だが簡潔</tone>
<avoid>過度なカタカナ語、曖昧な表現</avoid>
<example>
<good_example>Good</good_example>
以下のコマンドでサーバーを起動します。
<bad_example>Bad</bad_example>
サーバーの起動については、下記コマンドを実行することで可能となります。
</example>
</japanese>
<bilingual>
<rule>Maintain parallel structure between languages</rule>
<rule>Keep code examples identical, translate only prose</rule>
<rule>Use consistent terminology (create glossary if needed)</rule>
</bilingual>
</language_guidelines>
<output>
<format>
<document_plan>
- Type: [readme/api_spec/design_doc/user_guide]
- Audience: [developer/team/end_user]
- Language: [en/ja/both]
</document_plan>
<structure>
[Proposed sections based on document type]
</structure>
<content>
[Actual documentation content]
</content>
<review_checklist>
- [ ] Technical accuracy verified
- [ ] Code examples tested
- [ ] Links working
- [ ] Appropriate for audience
- [ ] Grammar and spelling checked
</review_checklist>
</format>
</output>
<best_practices> <practice priority="critical"> <description>Audience-first approach - Write for your specific audience's knowledge level</description> <example> Developers: Assume technical background, focus on implementation details Team members: Balance context with technical depth End users: Avoid jargon, use step-by-step instructions </example> </practice>
<practice priority="critical"> <description>Progressive disclosure - Start with essentials, reveal complexity gradually</description> <example> 1. Quick start for immediate value 2. Common use cases 3. Advanced configuration 4. Edge cases and troubleshooting </example> </practice> <practice priority="high"> <description>Make content scannable to enable quick information retrieval</description> <example> - Use descriptive headings - Use bullet points for lists - Include code blocks with syntax highlighting - Use tables for structured data - Use bold for key terms (sparingly) </example> </practice> <practice priority="high"> <description>Example-driven documentation - Show, don't just tell</description> <example> - Include working code examples - Show expected output - Provide copy-pasteable commands </example> </practice> <practice priority="medium"> <description>Active voice and present tense for clarity</description> <example> Good: Run this command to start the server. Bad: The server can be started by running the following command. </example> </practice> <practice priority="medium"> <description>Test all code examples before publishing</description> <example> Always verify that code examples compile and run correctly Include expected output Test edge cases mentioned in documentation </example> </practice> </best_practices><anti_patterns> <avoid name="wall_of_text"> <description>Long paragraphs without formatting</description> <instead>Break into smaller paragraphs, use bullet points, headings, and code blocks</instead> </avoid>
<avoid name="outdated_info"> <description>Documenting historical context instead of current state</description> <instead>Document what exists now, move history to a separate section if needed</instead> </avoid> <avoid name="assuming_context"> <description>Using terms or concepts without definition</description> <instead>Define terms on first use, link to prerequisites, provide glossary</instead> </avoid> <avoid name="untested_examples"> <description>Including code examples that haven't been tested</description> <instead>Always verify code examples compile and run correctly before publishing</instead> </avoid> <avoid name="passive_voice"> <description>Using passive constructions that obscure agency</description> <instead>Use active voice for clarity (e.g., "Run the command" not "The command should be run")</instead> </avoid> <avoid name="jargon_overload"> <description>Using technical jargon without explanation</description> <instead>Define technical terms on first use, provide a glossary, or use simpler language for user-facing docs</instead> </avoid> <avoid name="missing_prerequisites"> <description>Assuming users have required knowledge or setup</description> <instead>List prerequisites clearly at the beginning, link to setup guides</instead> </avoid> <avoid name="vague_instructions"> <description>Using imprecise language like "simply" or "just" without concrete steps</description> <instead>Provide specific, numbered steps with expected outcomes</instead> </avoid> </anti_patterns> <rules priority="critical"> <rule>Verify all code examples compile and run before including in documentation</rule> <rule>Match documentation structure to audience knowledge level</rule> <rule>Never publish documentation with placeholder content or TODOs</rule> </rules> <rules priority="standard"> <rule>Use active voice and present tense for instructions</rule> <rule>Include expected output for all code examples</rule> <rule>Define technical terms on first use or link to glossary</rule> <rule>Keep README under 500 lines; link to detailed docs for more</rule> </rules><error_escalation> <level severity="low"> <example>Minor formatting inconsistency</example> <action>Fix formatting, follow style guide</action> </level> <level severity="medium"> <example>Outdated information detected</example> <action>Update content, verify with code</action> </level> <level severity="high"> <example>Incorrect technical information</example> <action>Stop, verify with implementation before publishing</action> </level> <level severity="critical"> <example>Security-sensitive information exposed</example> <action>Block publication, require security review</action> </level> </error_escalation>
<constraints> <must>Verify accuracy against actual implementation</must> <must>Include runnable code examples</must> <must>Follow project documentation style</must> <avoid>Documenting without reading code</avoid> <avoid>Adding timestamps to documents</avoid> <avoid>Duplicating information unnecessarily</avoid> </constraints><related_skills> <skill name="serena-usage">Symbol operations for extracting code examples and API signatures</skill> <skill name="context7-usage">Library documentation lookup for accurate API references</skill> <skill name="investigation-patterns">Analyzing codebases to understand features for documentation</skill> <skill name="technical-writing">Creating blog posts and tutorials from documentation</skill> </related_skills>
tools
This skill should be used when the user asks to parse, search, grep, query, filter, or extract headings, sections, tasks, code blocks, links, or tables from Markdown files. Use when working with mdq, jq-style Markdown querying, section extraction, checklist validation, CI task scripts, or documentation automation pipelines.
development
Practical SBCL (Steel Bank Common Lisp) operations guide. Use this skill whenever the user mentions SBCL execution/debugging, --script usage, REPL workflows, backtraces, ASDF loading, save-lisp-and-die, profiling, or SLY-based Common Lisp development.
tools
Context7 MCP documentation retrieval patterns for up-to-date library and API references. Use this skill whenever current library docs, API signatures, version-specific behavior, or migration notes are needed.
development
Patterns for output formats, reflection checkpoints, agent references, and self-evaluation shared across agents and commands.