{"id":51339657,"url":"https://github.com/semcod/sumd","last_synced_at":"2026-07-02T06:04:47.079Z","repository":{"id":352220566,"uuid":"1214337751","full_name":"semcod/sumd","owner":"semcod","description":"SUMD - Structured Unified Markdown Descriptor for AI-aware project documentation","archived":false,"fork":false,"pushed_at":"2026-06-29T07:41:19.000Z","size":10003,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T09:23:34.587Z","etag":null,"topics":["documentation","llm","markdown","project-descriptor","python","semcod","sumd"],"latest_commit_sha":null,"homepage":"https://semcod.github.io/sumd/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T12:43:13.000Z","updated_at":"2026-06-29T07:41:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/sumd","commit_stats":null,"previous_names":["oqlos/statement","semcod/sumd"],"tags_count":77,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/sumd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fsumd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fsumd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fsumd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fsumd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/sumd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fsumd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35035005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","llm","markdown","project-descriptor","python","semcod","sumd"],"created_at":"2026-07-02T06:04:46.135Z","updated_at":"2026-07-02T06:04:47.061Z","avatar_url":"https://github.com/semcod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SUMD\n\n## AI Cost Tracking\n\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-yellow) ![AI Model](https://img.shields.io/badge/AI%20Model-openrouter%2Fqwen%2Fqwen3-coder-next-lightgrey)\n\nThis project uses AI-generated code. Total cost: **$7.5000** with **97** AI commits.\n\nGenerated on 2026-06-29 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/models/openrouter/qwen/qwen3-coder-next)\n\n---\n\n**SUMD** (Structured Unified Markdown Descriptor) is a semantic project descriptor format in Markdown.  \nIt defines intent, structure, execution entry points, and the mental model of a system for both humans and LLMs.\n\n## What is SUMD?\n\nSUMD is a lightweight structured markdown format that serves as a **single source of truth** for project documentation — optimised for both human readability and LLM context injection.\n\nThink of it as a machine-readable README: a file an AI agent can parse, reason over, and act upon.\n\n### Purpose\n\n- **Project descriptor** — defines API, CLI, workflows, endpoints, and system architecture\n- **AI context feed** — structured for LLM consumption: inject `SUMD.md` into any prompt to give the model full project understanding\n- **Lightweight manifest** — bridges the gap between README, openapi spec, and configuration files\n- **Automation anchor** — drives `sumd scan`, `sumd lint`, `sumd scaffold`, CI pipelines\n\n### Use Cases\n\n- Generating structured documentation from source code\n- Single-file project context for ChatGPT, Claude, Gemini, or local LLMs\n- LLM agent memory and tool context (via MCP server)\n- Input for testql scenario scaffolding\n- API and CLI contract documentation\n- CI/CD workflow descriptions\n- Structural project manifest\n\n## Installation\n\n```bash\npip install sumd                  # stable\npip install sumd==0.3.45           # specific version\n```\n\n## Developer Workflow\n\n```bash\n# health check — verify environment\ntask doctor\n\n# run tests with coverage\ntask test\n\n# quality gate (CC + vallm + coverage)\ntask pyqual\n\n# build + publish (runs automatically when gates pass via pyqual pipeline)\ntask publish\n```\n\n## Usage\n\n### CLI Commands\n\n```bash\n# Shortcut: scan current directory (detects if workspace or single project)\nsumd .                          # equivalent to: sumd scan . --fix\nsumd /path/to/project           # scan a specific directory\n\n# Scan a workspace — auto-generate SUMD.md for every project found\nsumd scan .                     # skip projects that already have SUMD.md\nsumd scan . --fix               # overwrite existing SUMD.md\nsumd reload .                   # shorthand: scan + refresh app.doql.less + doql sync\nsumd scan . --fix --no-raw      # convert sources to structured Markdown instead of raw code blocks\nsumd scan . --fix --analyze     # also run analysis tools (code2llm, redup, vallm)\nsumd scan . --fix --analyze --tools code2llm,redup  # only selected tools\nsumd scan . --fix --depth 2     # limit recursive search depth (default: unlimited)\nsumd scan . --fix --no-generate-doql  # skip auto-generation of app.doql.less (enabled by default)\nsumd scan . --fix --doql-sync        # refresh app.doql.less metadata, then run `doql sync` for cache-aware rebuild\n\n# Section profiles — control how much is rendered in SUMD.md\nsumd scan . --fix --profile minimal  # core sections only (metadata, architecture, workflows, dependencies, deployment)\nsumd scan . --fix --profile light    # + interfaces, quality, configuration, environment, extras\nsumd scan . --fix --profile rich     # + code analysis, source snippets, call graph, API stubs, test contracts (default)\n\n# Generate SUMR.md (pre-refactoring analysis report for AI-aware refactorization)\nsumd scan . --profile refactor       # creates SUMR.md — use sumr alias below\nsumr .                               # shorthand: sumr \u003cpath\u003e ≡ sumd scan \u003cpath\u003e --fix --profile refactor\n\n# Lint / validate SUMD files\nsumd lint SUMD.md               # validate a single file\nsumd lint --workspace .         # validate all SUMD.md files in the workspace\nsumd lint --workspace . --json  # output JSON results\n\n# Generate project/map.toon.yaml (static code map — without code2llm)\nsumd map ./my-project             # write to project/map.toon.yaml\nsumd map ./my-project --force     # overwrite existing\nsumd map ./my-project --stdout    # print to stdout\n\n# Generate testql scenario scaffolds from OpenAPI spec\nsumd scaffold ./my-project                  # all scenarios (api + smoke)\nsumd scaffold ./my-project --type smoke     # only smoke tests\nsumd scaffold ./my-project --type crud      # per-resource CRUD scenarios\nsumd scaffold ./my-project --force          # overwrite existing files\n\n# Run analysis tools on a single project\nsumd analyze ./my-project                    # run all tools\nsumd analyze ./my-project --tools code2llm   # only code2llm\nsumd analyze ./my-project --force            # reinstall tools\n\n# DSL (Domain Specific Language) operations\nsumd dsl                                     # start interactive DSL shell\nsumd dsl -c \"scan('.')\"                      # execute single DSL command\nsumd dsl -s script.dsl                       # execute DSL script file\nsumd dsl -d /path/to/project                 # set working directory\n\n# CQRS ES (Command Query) operations\nsumd cqrs create_sumd_document ./SUMD.md --data '{\"project_name\":\"MyProject\"}'\nsumd cqrs add_section ./SUMD.md --data '{\"section_name\":\"Architecture\",\"content\":\"...\"}'\nsumd cqrs validate_sumd_document ./SUMD.md\n```\n\n### Section Profiles\n\nSUMD renders output in configurable **profiles** to trade off detail vs. token cost:\n\n| Profile | Sections | Use case |\n|---------|----------|----------|\n| `minimal` | Metadata, Architecture, Workflows, Dependencies, Deployment | Quick overview, CI badges |\n| `light` | + Interfaces, Quality, Configuration, Environment, Extras | Standard documentation |\n| `rich` | + Code Analysis, Source Snippets, Call Graph, API Stubs, Test Contracts | LLM context injection (default) |\n| `refactor` | Refactoring-focused analysis → generates `SUMR.md` | AI-aware pre-refactoring report |\n\n### Python API\n\n```python\nfrom sumd import parse, parse_file\nfrom sumd.parser import validate_sumd_file\n\n# Parse SUMD from string\ndocument = parse(content)\n\n# Parse SUMD from file\ndocument = parse_file(\"SUMD.md\")\n\n# Validate SUMD file (markdown structure + codeblock format)\nresult = validate_sumd_file(Path(\"SUMD.md\"))\n# result = {\"source\": \"SUMD.md\", \"markdown\": [...], \"codeblocks\": [...], \"ok\": True}\nif not result[\"ok\"]:\n    for issue in result[\"markdown\"] + result[\"codeblocks\"]:\n        print(issue)\n```\n\n## File Filtering\n\nSUMD respects standard ignore files to exclude unwanted files and directories from analysis:\n\n### Supported Ignore Files\n\n- **`.gitignore`** - Standard Git ignore patterns (automatically detected)\n- **`.sumdignore`** - SUMD-specific ignore patterns (overrides .gitignore)\n\n### Pattern Syntax\n\nSupports full gitignore pattern syntax:\n\n```gitignore\n# File patterns\n*.log\n*.tmp\ncoverage.xml\n\n# Directory patterns  \ntemp/\nbuild/\n__pycache__/\n\n# Negation (include despite other patterns)\n!important.log\n!src/temp/\n```\n\n### Behavior\n\n- Patterns are read from both `.gitignore` and `.sumdignore` files\n- `.sumdignore` patterns take precedence over `.gitignore` patterns\n- Improves performance by skipping ignored files during analysis\n- Works with all `sumd scan`, `sumd map`, and `sumd analyze` commands\n\n## CQRS ES Architecture\n\nSUMD now implements **Command Query Responsibility Segregation (CQRS)** with **Event Sourcing (ES)** for robust state management and audit trails:\n\n### Architecture Components\n\n- **Commands**: Write operations that modify system state\n- **Queries**: Read operations that retrieve system state\n- **Events**: Immutable records of state changes\n- **Aggregates**: Consistency boundaries for business logic\n- **Event Store**: Persistent storage for event history\n\n### Benefits\n\n- **Audit Trail**: Complete history of all changes\n- **Temporal Queries**: Reconstruct state at any point in time\n- **Scalability**: Separate read/write models\n- **Resilience**: Event replay for error recovery\n\n### CLI Integration\n\n```bash\n# Execute CQRS commands\nsumd cqrs create_sumd_document ./SUMD.md --data '{\"project_name\":\"MyProject\"}'\nsumd cqrs add_section ./SUMD.md --data '{\"section_name\":\"Architecture\",\"content\":\"...\"}'\n\n# Query system state\nsumd cqrs get_aggregate ./SUMD.md\nsumd cqrs get_events ./SUMD.md\n```\n\n### MCP Integration\n\nThe MCP server exposes CQRS ES tools:\n\n- `execute_command` - Execute write commands\n- `execute_query` - Execute read queries  \n- `get_events` - Retrieve event history\n- `get_aggregate` - Get current aggregate state\n\n## DSL (Domain Specific Language)\n\nSUMD provides a powerful DSL for interactive operations and scripting:\n\n### DSL Shell\n\n```bash\n# Start interactive shell\nsumd dsl\n\n# Execute single command\nsumd dsl -c \"scan('.') | validate('.')\"\n\n# Execute script file\nsumd dsl -s script.dsl\n```\n\n### DSL Features\n\n- **Arithmetic**: `1 + 2 * 3`\n- **Logic**: `x and y or not z`\n- **Comparison**: `x == 42`, `name contains \"test\"`\n- **Variables**: `x = 42`, `result = scan('.')`\n- **Functions**: `len(\"hello\")`, `exists(\"file.txt\")`\n- **Pipelines**: `scan('.') | validate('.') | export(\"json\")`\n- **File Operations**: `cat(\"file.txt\")`, `ls(\"*.md\")`, `edit(\"file.txt\", \"content\")`\n\n### Built-in Commands\n\n#### File Operations\n- `cat` - Display file contents\n- `ls` - List directory contents  \n- `edit` - Edit file content\n- `mkdir` - Create directory\n- `rm` - Remove file/directory\n\n#### SUMD Operations\n- `sumd_scan` - Scan and generate SUMD\n- `sumd_map` - Generate project map\n- `sumd_validate` - Validate SUMD document\n- `sumd_info` - Show document info\n\n#### Search Operations\n- `find` - Find files matching pattern\n- `grep` - Search text in files\n\n#### Utility Operations\n- `echo` - Display message\n- `pwd` - Print working directory\n- `cd` - Change directory\n- `help` - Show help\n\n#### Variables\n- `set` - Set variable\n- `get` - Get variable value\n- `unset` - Remove variable\n- `vars` - List all variables\n\n### DSL Examples\n\n```bash\n# Basic arithmetic\nresult = 1 + 2 * 3\n\n# File operations\nif exists(\"SUMD.md\"):\n    content = cat(\"SUMD.md\")\n    print(len(content))\n\n# SUMD workflow\nscan(\".\") | validate(\".\") | export(\"json\")\n\n# Variable usage\nproject = \"my-project\"\nfiles = ls(\"*.py\")\nprint(f\"Found {len(files)} Python files in {project}\")\n\n# Conditional logic\nif exists(\"pyproject.toml\"):\n    scan(\".\")\n    validate(\"SUMD.md\")\nelse:\n    print(\"No Python project found\")\n```\n\n### MCP DSL Integration\n\nThe MCP server provides DSL tools:\n\n- `execute_dsl` - Execute DSL expressions\n- `dsl_shell_info` - Get shell capabilities\n\n## What is Embedded in SUMD.md?\n\nSUMD auto-embeds the following sources from a project (when present):\n\n| Source | Contents | markpact kind |\n|--------|----------|---------------|\n| `pyproject.toml` | metadata, deps, entry points | _parsed_ |\n| `Taskfile.yml` | all tasks as raw YAML | `markpact:taskfile` |\n| `openapi.yaml` | full OpenAPI spec (endpoints as sections) | `markpact:openapi` |\n| `testql-scenarios/**` | all `.testql.toon.yaml` scenario files | `markpact:testql` |\n| `app.doql.less` (preferred) or `.css` | DOQL styling | `markpact:doql` |\n| `pyqual.yaml` | quality pipeline config | `markpact:pyqual` |\n| `goal.yaml` | project intent | _rendered_ |\n| `.env.example` | env variables list | _listed_ |\n| `Dockerfile` | containerisation | _listed_ |\n| `docker-compose.*.yml` | services | _listed_ |\n| `src/**/*.py` modules | module list | _listed_ |\n| `package.json` | Node.js deps (dependencies + devDependencies) | _listed_ |\n| `project/analysis.toon.yaml` | static code analysis (CC, pipelines) | `markpact:analysis` |\n| `project/project.toon.yaml` | project topology | `markpact:analysis` |\n| `project/evolution.toon.yaml` | commit evolution | `markpact:analysis` |\n| `project/map.toon.yaml` | module inventory, function signatures, CC metrics | `markpact:analysis` |\n| `project/duplication.toon.yaml` | code duplication report | `markpact:analysis` |\n| `project/validation.toon.yaml` | vallm validation results | `markpact:analysis` |\n| `project/calls.toon.yaml` | call graph with hub metrics | `markpact:analysis` |\n| `project/compact_flow.mmd` | compact call flow diagram | `markpact:analysis` |\n| `project/calls.mmd` | full call graph | `markpact:analysis` |\n| `project/flow.mmd` | execution flow | `markpact:analysis` |\n| `project/context.md` | architecture analysis (code2llm) | _inline markdown_ |\n| `project/README.md` | analysis readme | _inline markdown_ |\n| `project/prompt.txt` | code2llm prompt used | `markpact:analysis` |\n\n**Not embedded:** `*.png` (binary images), `index.html` (generated visualisation), `refactor-progress.txt`, `testql-scenarios/` inside project/.\n\n`project/map.toon.yaml` is generated by `sumd map` (built-in, no extra deps). Other `project/` files are generated by `sumd analyze` (invokes `code2llm`, `redup`, `vallm`).\n\n\n## Ecosystem Architecture\n\nSUMD is part of a four-layer system:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                     SUMD (opis)                             │\n│              Structured Unified Markdown Descriptor         │\n│         Project description, intent, architecture           │\n└─────────────────────────────────────────────────────────────┘\n                              ↓\n┌─────────────────────────────────────────────────────────────┐\n│                    DOQL (wykonanie)                         │\n│              Declarative Object Query Language              │\n│              Data manipulation and execution                │\n└─────────────────────────────────────────────────────────────┘\n                              ↓\n┌─────────────────────────────────────────────────────────────┐\n│                  Taskfile (runtime)                         │\n│              Task runner and workflow execution             │\n│              Automation and orchestration                   │\n└─────────────────────────────────────────────────────────────┘\n                              ↓\n┌─────────────────────────────────────────────────────────────┐\n│                   testql (weryfikacja)                      │\n│              Test generation and execution                  │\n│              API, GUI, hardware, shell, WebSocket tests     │\n└─────────────────────────────────────────────────────────────┘\n```\n\n- **SUMD → opis (description)**: Defines what the system is and how it should work\n- **DOQL → wykonanie (execution)**: Provides the language to manipulate and execute operations\n- **Taskfile → runtime**: Manages the actual execution of workflows and tasks\n- **testql → weryfikacja (verification)**: Generates and executes tests across multiple domains\n\n## DOQL Integration\n\nSUMD can refresh `app.doql.less` metadata and optionally trigger DOQL's cache-aware rebuild.\n\n### Generating DOQL from source\n\nFor a rich, reverse-engineered `app.doql.less` (entities, interfaces, dependencies extracted from actual code), run `doql adopt` **before** `sumd`:\n\n```bash\ndoql adopt . --format less --force   # generate/update app.doql.less from source\nsumd . --fix                         # consume it into SUMD.md\n```\n\n`sumd` alone generates only a minimal boilerplate. Use `doql` when you need a full declarative architecture extracted from the codebase.\n\n### `app.doql.less` refresh behaviour\n\nWhen `sumd scan . --fix` runs (or the shorthand `sumd .`):\n\n| State | Action |\n|-------|--------|\n| File missing | Generates boilerplate `app.doql.less` with `app { }`, default workflows, deploy and environment blocks |\n| File exists, `--fix` **not** set | Skips — existing content is preserved |\n| File exists, `--fix` **set** | **Only** the `app { name; version; }` block is updated from `pyproject.toml`. All user-defined entities, interfaces, workflows, deploy and environment blocks are **preserved**. |\n\nThis means `sumd . --fix` is safe to run repeatedly — it will not destroy your custom DOQL specification.\n\n### `doql sync` trigger\n\nAdd `--doql-sync` to run `doql sync` after SUMD generation:\n\n```bash\nsumd . --fix --doql-sync\n```\n\nFlow:\n1. SUMD refreshes `app.doql.less` metadata (name/version)\n2. DOQL reads the updated spec and compares it against `doql.lock`\n3. If nothing changed → `✅ No changes detected — everything up to date.`\n4. If sections changed → DOQL regenerates **only** the affected generators (API, web, documents, etc.)\n\nThis gives you a single command that keeps both documentation and generated code in sync, without unnecessary rebuilds.\n\n## testql Integration\n\ntestql is the testing framework in the SUMD ecosystem, providing automated test generation and execution for APIs, GUI, hardware, shell commands, and WebSockets.\n\n### testql Features\n\n#### Test Generation\n\ntestql automatically generates test scenarios from various sources:\n\n- **API Tests**: From OpenAPI/Swagger specifications, FastAPI/Flask/Django routes, Express.js endpoints\n- **GUI Tests**: From Playwright/Selenium configurations\n- **Hardware Tests**: From hardware peripheral configurations\n- **Shell Tests**: From CLI command definitions\n- **WebSocket Tests**: From WebSocket endpoint definitions\n- **Pytest Conversion**: Converts existing Python pytest tests to testql format\n- **OQL/CQL Scenarios**: Converts OQL/CQL scenario files to testql format\n\n#### Test Execution\n\ntestql executes test scenarios written in `.testql.toon.yaml` format with support for:\n\n- **API Commands**: `API[method, endpoint, expected_status]` with retry logic\n- **Assertions**: `ASSERT_STATUS`, `ASSERT_OK`, `ASSERT_CONTAINS`, `ASSERT_JSON`, `ASSERT_HEADERS`, `ASSERT_SCHEMA`, `ASSERT_COOKIES`\n- **GUI Commands**: `GUI_START`, `GUI_CLICK`, `GUI_INPUT`, `GUI_ASSERT_VISIBLE`, `GUI_ASSERT_TEXT`, `GUI_CAPTURE`, `GUI_STOP`\n- **Hardware Commands**: `ENCODER_ON`, `ENCODER_OFF`, `ENCODER_SCROLL`, `ENCODER_CLICK`, `ENCODER_FOCUS`, `ENCODER_STATUS`\n- **Shell Commands**: `SHELL`, `EXEC`, `RUN` with exit code and output assertions\n- **WebSocket Commands**: `WS_CONNECT`, `WS_SEND`, `WS_RECEIVE`, `WS_ASSERT_MSG`, `WS_CLOSE`\n- **Flow Control**: `WAIT`, `WAIT_FOR`, `LOG`, `PRINT`, `INCLUDE`\n\n#### Endpoint Detection\n\ntestql includes automatic endpoint detection from:\n\n- **Docker Compose**: Service port mappings and configurations\n- **Kubernetes Configs**: Service and deployment configurations\n- **.env Files**: Environment variables with URL, HOST, PORT patterns\n- **config.py Files**: Python configuration files with host/port/url assignments\n- **Framework Detectors**: FastAPI, Flask, Django, Express.js route discovery\n- **Specification Files**: OpenAPI/Swagger, GraphQL schemas\n\n#### Configuration\n\ntestql scenarios support configuration via `CONFIG` block:\n\n```yaml\nCONFIG[4]{key, value}:\n  base_url, ${api_url:-http://localhost:8100}\n  timeout_ms, 10000\n  retry_count, 3\n  retry_backoff_ms, 100\n```\n\n#### Reporting\n\ntestql generates HTML reports from test results:\n\n```bash\n# Generate report from pytest JSON output\npytest --json-report --json-report-file=test-results.json\ntestql report test-results.json -o report.html\n\n# Generate example report\ntestql report --example -o report.html\n```\n\n#### Integration with SUMD\n\nSUMD automatically embeds testql scenarios from `testql-scenarios/` directory into SUMD.md:\n\n```yaml markpact:testql path=testql-scenarios/generated-cli-tests.testql.toon.yaml\n# SCENARIO: CLI Command Tests\n# TYPE: cli\n# GENERATED: true\n\nCONFIG[2]{key, value}:\n  cli_command, python -msumd\n  timeout_ms, 10000\n\nLOG[3]{message}:\n  \"Test CLI help command\"\n  \"Test CLI version command\"\n  \"Test CLI main workflow\"\n```\n\n#### Workflow Integration\n\ntestql is integrated into SUMD workflows:\n\n```bash\n# Run pytest with testql report generation\ntask test:report\n\n# Generate testql scenario scaffolds from OpenAPI\nsumd scaffold ./my-project --type smoke\nsumd scaffold ./my-project --type crud\n```\n\n## Dokumentacja\n\n- **[CHANGELOG.md](./CHANGELOG.md)** — Historia zmian i wydania\n- **[TODO.md](./TODO.md)** — Aktualne zadania i planowane funkcje\n- **[docs/USAGE.md](./docs/USAGE.md)** — Szczegółowa dokumentacja użycia\n- **[docs/TESTQL_AUTOLOOP_ONBOARDING.md](./docs/TESTQL_AUTOLOOP_ONBOARDING.md)** — Onboarding dla TestQL + MCP + aider loops\n- **[SPEC.md](./SPEC.md)** — Specyfikacja formatu SUMD\n- **[SUMD.md](./SUMD.md)** — Dokumentacja projektu sumd (wygenerowana)\n- **[SUMR.md](./SUMR.md)** — Raport refaktoryzacji (wygenerowany)\n\n## License\n\nLicensed under Apache-2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fsumd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Fsumd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fsumd/lists"}