diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 00000000..8a90f2c5 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,567 @@ +# ๐Ÿ—๏ธ Claude Code Workflow (CCW) - Architecture Overview + +This document provides a high-level overview of CCW's architecture, design principles, and system components. + +--- + +## ๐Ÿ“‹ Table of Contents + +- [Design Philosophy](#design-philosophy) +- [System Architecture](#system-architecture) +- [Core Components](#core-components) +- [Data Flow](#data-flow) +- [Multi-Agent System](#multi-agent-system) +- [CLI Tool Integration](#cli-tool-integration) +- [Session Management](#session-management) +- [Memory System](#memory-system) + +--- + +## ๐ŸŽฏ Design Philosophy + +CCW is built on several core design principles that differentiate it from traditional AI-assisted development tools: + +### 1. **Context-First Architecture** +- Pre-defined context gathering eliminates execution uncertainty +- Agents receive the correct information *before* implementation +- Context is loaded dynamically based on task requirements + +### 2. **JSON-First State Management** +- Task states live in `.task/IMPL-*.json` files as the single source of truth +- Markdown documents are read-only generated views +- Eliminates state drift and synchronization complexity +- Enables programmatic orchestration + +### 3. **Autonomous Multi-Phase Orchestration** +- Commands chain specialized sub-commands and agents +- Automates complex workflows with zero user intervention +- Each phase validates its output before proceeding + +### 4. **Multi-Model Strategy** +- Leverages unique strengths of different AI models +- Gemini for analysis and exploration +- Codex for implementation +- Qwen for architecture and planning + +### 5. **Hierarchical Memory System** +- 4-layer documentation system (CLAUDE.md files) +- Provides context at the appropriate level of abstraction +- Prevents information overload + +### 6. **Specialized Role-Based Agents** +- Suite of agents mirrors a real software team +- Each agent has specific responsibilities +- Agents collaborate to complete complex tasks + +--- + +## ๐Ÿ›๏ธ System Architecture + +```mermaid +graph TB + subgraph "User Interface Layer" + CLI[Slash Commands] + CHAT[Natural Language] + end + + subgraph "Orchestration Layer" + WF[Workflow Engine] + SM[Session Manager] + TM[Task Manager] + end + + subgraph "Agent Layer" + AG1[@code-developer] + AG2[@test-fix-agent] + AG3[@ui-design-agent] + AG4[@cli-execution-agent] + AG5[More Agents...] + end + + subgraph "Tool Layer" + GEMINI[Gemini CLI] + QWEN[Qwen CLI] + CODEX[Codex CLI] + BASH[Bash/System] + end + + subgraph "Data Layer" + JSON[Task JSON Files] + MEM[CLAUDE.md Memory] + STATE[Session State] + end + + CLI --> WF + CHAT --> WF + WF --> SM + WF --> TM + SM --> STATE + TM --> JSON + WF --> AG1 + WF --> AG2 + WF --> AG3 + WF --> AG4 + AG1 --> GEMINI + AG1 --> QWEN + AG1 --> CODEX + AG2 --> BASH + AG3 --> GEMINI + AG4 --> CODEX + GEMINI --> MEM + QWEN --> MEM + CODEX --> JSON +``` + +--- + +## ๐Ÿ”ง Core Components + +### 1. **Workflow Engine** + +The workflow engine orchestrates complex development processes through multiple phases: + +- **Planning Phase**: Analyzes requirements and generates implementation plans +- **Execution Phase**: Coordinates agents to implement tasks +- **Verification Phase**: Validates implementation quality +- **Testing Phase**: Generates and executes tests +- **Review Phase**: Performs code review and quality analysis + +**Key Features**: +- Multi-phase orchestration +- Automatic session management +- Context propagation between phases +- Quality gates at each phase transition + +### 2. **Session Manager** + +Manages isolated workflow contexts: + +``` +.workflow/ +โ”œโ”€โ”€ active/ # Active sessions +โ”‚ โ”œโ”€โ”€ WFS-user-auth/ # User authentication session +โ”‚ โ”œโ”€โ”€ WFS-payment/ # Payment integration session +โ”‚ โ””โ”€โ”€ WFS-dashboard/ # Dashboard redesign session +โ””โ”€โ”€ archives/ # Completed sessions + โ””โ”€โ”€ WFS-old-feature/ # Archived session +``` + +**Capabilities**: +- Directory-based session tracking +- Session state persistence +- Parallel session support +- Session archival and resumption + +### 3. **Task Manager** + +Handles hierarchical task structures: + +```json +{ + "id": "IMPL-1.2", + "title": "Implement JWT authentication", + "status": "pending", + "meta": { + "type": "feature", + "agent": "code-developer" + }, + "context": { + "requirements": ["JWT authentication", "OAuth2 support"], + "focus_paths": ["src/auth", "tests/auth"], + "acceptance": ["JWT validation works", "OAuth flow complete"] + }, + "flow_control": { + "pre_analysis": [...], + "implementation_approach": {...} + } +} +``` + +**Features**: +- JSON-first data model +- Hierarchical task decomposition (max 2 levels) +- Dynamic subtask creation +- Dependency tracking + +### 4. **Memory System** + +Four-layer hierarchical documentation: + +``` +CLAUDE.md (Project root - high-level overview) +โ”œโ”€โ”€ src/CLAUDE.md (Source layer - module summaries) +โ”‚ โ”œโ”€โ”€ auth/CLAUDE.md (Module layer - component details) +โ”‚ โ”‚ โ””โ”€โ”€ jwt/CLAUDE.md (Component layer - implementation details) +``` + +**Memory Commands**: +- `/memory:update-full` - Complete project rebuild +- `/memory:update-related` - Incremental updates for changed modules +- `/memory:load` - Quick context loading for specific tasks + +--- + +## ๐Ÿ”„ Data Flow + +### Typical Workflow Execution Flow + +```mermaid +sequenceDiagram + participant User + participant CLI + participant Workflow + participant Agent + participant Tool + participant Data + + User->>CLI: /workflow:plan "Feature description" + CLI->>Workflow: Initialize planning workflow + Workflow->>Data: Create session + Workflow->>Agent: @action-planning-agent + Agent->>Tool: gemini-wrapper analyze + Tool->>Data: Update CLAUDE.md + Agent->>Data: Generate IMPL-*.json + Workflow->>User: Plan complete + + User->>CLI: /workflow:execute + CLI->>Workflow: Start execution + Workflow->>Data: Load tasks from JSON + Workflow->>Agent: @code-developer + Agent->>Tool: Read context + Agent->>Tool: Implement code + Agent->>Data: Update task status + Workflow->>User: Execution complete +``` + +### Context Flow + +```mermaid +graph LR + A[User Request] --> B[Context Gathering] + B --> C[CLAUDE.md Memory] + B --> D[Task JSON] + B --> E[Session State] + C --> F[Agent Context] + D --> F + E --> F + F --> G[Tool Execution] + G --> H[Implementation] + H --> I[Update State] +``` + +--- + +## ๐Ÿค– Multi-Agent System + +### Agent Specialization + +CCW uses specialized agents for different types of tasks: + +| Agent | Responsibility | Tools Used | +|-------|---------------|------------| +| **@code-developer** | Code implementation | Gemini, Qwen, Codex, Bash | +| **@test-fix-agent** | Test generation and fixing | Codex, Bash | +| **@ui-design-agent** | UI design and prototyping | Gemini, Claude Vision | +| **@action-planning-agent** | Task planning and decomposition | Gemini | +| **@cli-execution-agent** | Autonomous CLI task handling | Codex, Gemini, Qwen | +| **@cli-explore-agent** | Codebase exploration | ripgrep, find | +| **@context-search-agent** | Context gathering | Grep, Glob | +| **@doc-generator** | Documentation generation | Gemini, Qwen | +| **@memory-bridge** | Memory system updates | Gemini, Qwen | +| **@universal-executor** | General task execution | All tools | + +### Agent Communication + +Agents communicate through: +1. **Shared Session State**: All agents can read/write session JSON +2. **Task JSON Files**: Tasks contain context for agent handoffs +3. **CLAUDE.md Memory**: Shared project knowledge base +4. **Flow Control**: Pre-analysis and implementation approach definitions + +--- + +## ๐Ÿ› ๏ธ CLI Tool Integration + +### Three CLI Tools + +CCW integrates three external AI tools, each optimized for specific tasks: + +#### 1. **Gemini CLI** - Deep Analysis +- **Strengths**: Pattern recognition, architecture understanding, comprehensive analysis +- **Use Cases**: + - Codebase exploration + - Architecture analysis + - Bug diagnosis + - Memory system updates + +#### 2. **Qwen CLI** - Architecture & Planning +- **Strengths**: System design, code generation, architectural planning +- **Use Cases**: + - Architecture design + - System planning + - Code generation + - Refactoring strategies + +#### 3. **Codex CLI** - Autonomous Development +- **Strengths**: Self-directed implementation, error fixing, test generation +- **Use Cases**: + - Feature implementation + - Bug fixes + - Test generation + - Autonomous development + +### Tool Selection Strategy + +CCW automatically selects the best tool based on task type: + +``` +Analysis Task โ†’ Gemini CLI +Planning Task โ†’ Qwen CLI +Implementation Task โ†’ Codex CLI +``` + +Users can override with `--tool` parameter: +```bash +/cli:analyze --tool codex "Analyze authentication flow" +``` + +--- + +## ๐Ÿ“ฆ Session Management + +### Session Lifecycle + +```mermaid +stateDiagram-v2 + [*] --> Creating: /workflow:session:start + Creating --> Active: Session initialized + Active --> Paused: User pauses + Paused --> Active: /workflow:session:resume + Active --> Completed: /workflow:session:complete + Completed --> Archived: Move to archives/ + Archived --> [*] +``` + +### Session Structure + +``` +.workflow/active/WFS-feature-name/ +โ”œโ”€โ”€ workflow-session.json # Session metadata +โ”œโ”€โ”€ .task/ # Task JSON files +โ”‚ โ”œโ”€โ”€ IMPL-1.json +โ”‚ โ”œโ”€โ”€ IMPL-1.1.json +โ”‚ โ””โ”€โ”€ IMPL-2.json +โ”œโ”€โ”€ .chat/ # Chat logs +โ”œโ”€โ”€ brainstorming/ # Brainstorm artifacts +โ”‚ โ”œโ”€โ”€ guidance-specification.md +โ”‚ โ””โ”€โ”€ system-architect/analysis.md +โ””โ”€โ”€ artifacts/ # Generated files + โ”œโ”€โ”€ IMPL_PLAN.md + โ””โ”€โ”€ verification-report.md +``` + +--- + +## ๐Ÿ’พ Memory System + +### Hierarchical CLAUDE.md Structure + +The memory system maintains project knowledge across four layers: + +#### **Layer 1: Project Root** +```markdown +# Project Overview +- High-level architecture +- Technology stack +- Key design decisions +- Entry points +``` + +#### **Layer 2: Source Directory** +```markdown +# Source Code Structure +- Module summaries +- Dependency relationships +- Common patterns +``` + +#### **Layer 3: Module Directory** +```markdown +# Module Details +- Component responsibilities +- API interfaces +- Internal structure +``` + +#### **Layer 4: Component Directory** +```markdown +# Component Implementation +- Function signatures +- Implementation details +- Usage examples +``` + +### Memory Update Strategies + +#### Full Update (`/memory:update-full`) +- Rebuilds entire project documentation +- Uses layer-based execution (Layer 3 โ†’ 1) +- Batch processing (4 modules/agent) +- Fallback mechanism (gemini โ†’ qwen โ†’ codex) + +#### Incremental Update (`/memory:update-related`) +- Updates only changed modules +- Analyzes git changes +- Efficient for daily development + +#### Quick Load (`/memory:load`) +- No file updates +- Task-specific context gathering +- Returns JSON context package +- Fast context injection + +--- + +## ๐Ÿ” Quality Assurance + +### Quality Gates + +CCW enforces quality at multiple levels: + +1. **Planning Phase**: + - Requirements coverage check + - Dependency validation + - Task specification quality assessment + +2. **Execution Phase**: + - Context validation before implementation + - Pattern consistency checks + - Test generation + +3. **Review Phase**: + - Code quality analysis + - Security review + - Architecture review + +### Verification Commands + +- `/workflow:action-plan-verify` - Validates plan quality before execution +- `/workflow:tdd-verify` - Verifies TDD cycle compliance +- `/workflow:review` - Post-implementation review + +--- + +## ๐Ÿš€ Performance Optimizations + +### 1. **Lazy Loading** +- Files created only when needed +- On-demand document generation +- Minimal upfront cost + +### 2. **Parallel Execution** +- Independent tasks run concurrently +- Multi-agent parallel brainstorming +- Batch processing for memory updates + +### 3. **Context Caching** +- CLAUDE.md acts as knowledge cache +- Reduces redundant analysis +- Faster context retrieval + +### 4. **Atomic Session Management** +- Ultra-fast session switching (<10ms) +- Simple file marker system +- No database overhead + +--- + +## ๐Ÿ“Š Scalability + +### Horizontal Scalability + +- **Multiple Sessions**: Run parallel workflows for different features +- **Team Collaboration**: Session-based isolation prevents conflicts +- **Incremental Updates**: Only update affected modules + +### Vertical Scalability + +- **Hierarchical Tasks**: Efficient task decomposition (max 2 levels) +- **Selective Context**: Load only relevant context for each task +- **Batch Processing**: Process multiple modules per agent invocation + +--- + +## ๐Ÿ”ฎ Extensibility + +### Adding New Agents + +Create agent definition in `.claude/agents/`: + +```markdown +# Agent Name + +## Role +Agent description + +## Tools Available +- Tool 1 +- Tool 2 + +## Prompt +Agent instructions... +``` + +### Adding New Commands + +Create command in `.claude/commands/`: + +```bash +#!/usr/bin/env bash +# Command implementation +``` + +### Custom Workflows + +Combine existing commands to create custom workflows: + +```bash +/workflow:brainstorm:auto-parallel "Topic" +/workflow:plan +/workflow:action-plan-verify +/workflow:execute +/workflow:review +``` + +--- + +## ๐ŸŽ“ Best Practices + +### For Users + +1. **Keep Memory Updated**: Run `/memory:update-related` after major changes +2. **Use Quality Gates**: Run `/workflow:action-plan-verify` before execution +3. **Session Management**: Complete sessions with `/workflow:session:complete` +4. **Tool Selection**: Let CCW auto-select tools unless you have specific needs + +### For Developers + +1. **Follow JSON-First**: Never modify markdown documents directly +2. **Agent Context**: Provide complete context in task JSON +3. **Error Handling**: Implement graceful fallbacks +4. **Testing**: Test agents independently before integration + +--- + +## ๐Ÿ“š Further Reading + +- [Getting Started Guide](GETTING_STARTED.md) - Quick start tutorial +- [Command Reference](COMMAND_REFERENCE.md) - All available commands +- [Command Specification](COMMAND_SPEC.md) - Detailed command specs +- [Workflow Diagrams](WORKFLOW_DIAGRAMS.md) - Visual workflow representations +- [Contributing Guide](CONTRIBUTING.md) - How to contribute +- [Examples](EXAMPLES.md) - Real-world use cases + +--- + +**Last Updated**: 2025-11-20 +**Version**: 5.8.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..9cef6da9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,712 @@ +# ๐Ÿค Contributing to Claude Code Workflow + +Thank you for your interest in contributing to Claude Code Workflow (CCW)! This document provides guidelines and instructions for contributing to the project. + +--- + +## ๐Ÿ“‹ Table of Contents + +- [Code of Conduct](#code-of-conduct) +- [Getting Started](#getting-started) +- [Development Setup](#development-setup) +- [How to Contribute](#how-to-contribute) +- [Coding Standards](#coding-standards) +- [Testing Guidelines](#testing-guidelines) +- [Documentation Guidelines](#documentation-guidelines) +- [Submitting Changes](#submitting-changes) +- [Release Process](#release-process) + +--- + +## ๐Ÿ“œ Code of Conduct + +### Our Pledge + +We are committed to providing a welcoming and inclusive environment for all contributors, regardless of: +- Experience level +- Background +- Identity +- Perspective + +### Our Standards + +**Positive behaviors**: +- Using welcoming and inclusive language +- Being respectful of differing viewpoints +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +**Unacceptable behaviors**: +- Trolling, insulting/derogatory comments, and personal attacks +- Public or private harassment +- Publishing others' private information without permission +- Other conduct which could reasonably be considered inappropriate + +--- + +## ๐Ÿš€ Getting Started + +### Prerequisites + +Before contributing, ensure you have: + +1. **Claude Code** - The latest version installed ([Installation Guide](INSTALL.md)) +2. **Git** - For version control +3. **Text Editor** - VS Code, Vim, or your preferred editor +4. **Basic Knowledge**: + - Bash scripting + - Markdown formatting + - JSON structure + - Git workflow + +### Understanding the Codebase + +Start by reading: +1. [README.md](README.md) - Project overview +2. [ARCHITECTURE.md](ARCHITECTURE.md) - System architecture +3. [GETTING_STARTED.md](GETTING_STARTED.md) - Basic usage +4. [COMMAND_SPEC.md](COMMAND_SPEC.md) - Command specifications + +--- + +## ๐Ÿ’ป Development Setup + +### 1. Fork and Clone + +```bash +# Fork the repository on GitHub +# Then clone your fork +git clone https://github.com/YOUR_USERNAME/Claude-Code-Workflow.git +cd Claude-Code-Workflow +``` + +### 2. Set Up Upstream Remote + +```bash +git remote add upstream https://github.com/catlog22/Claude-Code-Workflow.git +git fetch upstream +``` + +### 3. Create Development Branch + +```bash +# Update your main branch +git checkout main +git pull upstream main + +# Create feature branch +git checkout -b feature/your-feature-name +``` + +### 4. Install CCW for Testing + +```bash +# Install your development version +bash Install-Claude.sh + +# Or on Windows +powershell -ExecutionPolicy Bypass -File Install-Claude.ps1 +``` + +--- + +## ๐Ÿ› ๏ธ How to Contribute + +### Types of Contributions + +#### 1. **Bug Fixes** +- Report bugs via [GitHub Issues](https://github.com/catlog22/Claude-Code-Workflow/issues) +- Include reproduction steps +- Provide system information (OS, Claude Code version) +- Submit PR with fix + +#### 2. **New Features** +- Discuss in [GitHub Discussions](https://github.com/catlog22/Claude-Code-Workflow/discussions) +- Create feature proposal issue +- Get community feedback +- Implement after approval + +#### 3. **Documentation** +- Fix typos or clarify existing docs +- Add missing documentation +- Improve examples +- Translate to other languages + +#### 4. **New Commands** +- Follow command template structure +- Include comprehensive documentation +- Add tests for command execution +- Update COMMAND_REFERENCE.md + +#### 5. **New Agents** +- Define agent role clearly +- Specify tools required +- Provide usage examples +- Document in ARCHITECTURE.md + +--- + +## ๐Ÿ“ Coding Standards + +### General Principles + +Follow the project's core beliefs (from [CLAUDE.md](CLAUDE.md)): + +1. **Pursue good taste** - Eliminate edge cases for natural, elegant code +2. **Embrace extreme simplicity** - Avoid unnecessary complexity +3. **Be pragmatic** - Solve real-world problems +4. **Data structures first** - Focus on data design +5. **Never break backward compatibility** - Existing functionality is sacred +6. **Incremental progress** - Small changes that compile and pass tests +7. **Learn from existing code** - Study patterns before implementing +8. **Clear intent over clever code** - Be boring and obvious + +### Bash Script Standards + +```bash +#!/usr/bin/env bash +# Command: /workflow:example +# Description: Brief description of what this command does + +set -euo pipefail # Exit on error, undefined vars, pipe failures + +# Function definitions +function example_function() { + local param1="$1" + local param2="${2:-default}" + + # Implementation +} + +# Main execution +function main() { + # Validate inputs + # Execute logic + # Handle errors +} + +# Run main if executed directly +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + main "$@" +fi +``` + +### JSON Standards + +```json +{ + "id": "IMPL-1", + "title": "Task title", + "status": "pending", + "meta": { + "type": "feature", + "agent": "code-developer", + "priority": "high" + }, + "context": { + "requirements": ["Requirement 1", "Requirement 2"], + "focus_paths": ["src/module/"], + "acceptance": ["Criterion 1", "Criterion 2"] + } +} +``` + +**Rules**: +- Use 2-space indentation +- Always validate JSON syntax +- Include all required fields +- Use clear, descriptive values + +### Markdown Standards + +```markdown +# Main Title (H1) - One per document + +## Section Title (H2) + +### Subsection (H3) + +- Use bullet points for lists +- Use `code blocks` for commands +- Use **bold** for emphasis +- Use *italics* for technical terms + +```bash +# Code blocks with language specification +command --flag value +``` + +> Use blockquotes for important notes +``` + +### File Organization + +``` +.claude/ +โ”œโ”€โ”€ agents/ # Agent definitions +โ”‚ โ”œโ”€โ”€ agent-name.md +โ”œโ”€โ”€ commands/ # Slash commands +โ”‚ โ””โ”€โ”€ workflow/ +โ”‚ โ”œโ”€โ”€ workflow-plan.md +โ”œโ”€โ”€ skills/ # Agent skills +โ”‚ โ””โ”€โ”€ skill-name/ +โ”‚ โ”œโ”€โ”€ SKILL.md +โ””โ”€โ”€ workflows/ # Workflow docs + โ”œโ”€โ”€ workflow-architecture.md +``` + +--- + +## ๐Ÿงช Testing Guidelines + +### Manual Testing + +Before submitting PR: + +1. **Test the Happy Path** + ```bash + # Test basic functionality + /your:new:command "basic input" + ``` + +2. **Test Error Handling** + ```bash + # Test with invalid input + /your:new:command "" + /your:new:command --invalid-flag + ``` + +3. **Test Edge Cases** + ```bash + # Test with special characters + /your:new:command "input with 'quotes'" + + # Test with long input + /your:new:command "very long input string..." + ``` + +### Integration Testing + +Test how your changes interact with existing commands: + +```bash +# Example workflow test +/workflow:session:start "Test Feature" +/your:new:command "test input" +/workflow:status +/workflow:session:complete +``` + +### Testing Checklist + +- [ ] Command executes without errors +- [ ] Error messages are clear and helpful +- [ ] Session state is preserved correctly +- [ ] JSON files are created with correct structure +- [ ] Memory system updates work correctly +- [ ] Works on both Linux and Windows +- [ ] Documentation is accurate + +--- + +## ๐Ÿ“š Documentation Guidelines + +### Command Documentation + +Every new command must include: + +#### 1. **Inline Documentation** (in command file) + +```bash +#!/usr/bin/env bash +# Command: /workflow:example +# Description: One-line description +# Usage: /workflow:example [options] +# +# Options: +# --option1 Description of option1 +# --option2 Description of option2 +# +# Examples: +# /workflow:example "basic usage" +# /workflow:example --option1 value "advanced usage" +``` + +#### 2. **COMMAND_REFERENCE.md Entry** + +Add entry to the appropriate section: + +```markdown +| `/workflow:example` | Brief description of the command. | +``` + +#### 3. **COMMAND_SPEC.md Entry** + +Add detailed specification: + +```markdown +### `/workflow:example` + +**Purpose**: Detailed description of what this command does and when to use it. + +**Parameters**: +- `arg` (required): Description of argument +- `--option1` (optional): Description of option + +**Workflow**: +1. Step 1 +2. Step 2 +3. Step 3 + +**Output**: +- Creates: Files created +- Updates: Files updated +- Returns: Return value + +**Examples**: +```bash +/workflow:example "example input" +``` + +**Related Commands**: +- `/related:command1` - Description +- `/related:command2` - Description +``` + +### Agent Documentation + +Every new agent must include: + +```markdown +# Agent Name + +## Role +Clear description of agent's responsibility and purpose. + +## Specialization +What makes this agent unique and when to use it. + +## Tools Available +- Tool 1: Usage +- Tool 2: Usage +- Tool 3: Usage + +## Invocation +How the agent is typically invoked (manually or by workflow). + +## Context Requirements +What context the agent needs to function effectively. + +## Output +What the agent produces. + +## Examples +Real usage examples. + +## Prompt +The actual agent instructions... +``` + +--- + +## ๐Ÿ“ค Submitting Changes + +### Commit Message Guidelines + +Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification: + +``` +(): + + + +