{"id":30288602,"url":"https://github.com/daleonpz/raiz","last_synced_at":"2025-08-16T22:38:33.926Z","repository":{"id":309568406,"uuid":"1019715078","full_name":"daleonpz/raiz","owner":"daleonpz","description":"Simply CLI Requirements management tool","archived":false,"fork":false,"pushed_at":"2025-08-09T20:09:40.000Z","size":73,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-12T16:57:23.872Z","etag":null,"topics":["embedded","embedded-systems","python","requirements-management","software","software-engineering","systems-engineering"],"latest_commit_sha":null,"homepage":"","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/daleonpz.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2025-07-14T18:54:00.000Z","updated_at":"2025-08-09T20:09:43.000Z","dependencies_parsed_at":"2025-08-12T16:57:32.303Z","dependency_job_id":"72efa108-fdd7-4743-a2bf-b4bea37f3d16","html_url":"https://github.com/daleonpz/raiz","commit_stats":null,"previous_names":["daleonpz/raiz"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/daleonpz/raiz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daleonpz%2Fraiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daleonpz%2Fraiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daleonpz%2Fraiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daleonpz%2Fraiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daleonpz","download_url":"https://codeload.github.com/daleonpz/raiz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daleonpz%2Fraiz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270781213,"owners_count":24643808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"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":["embedded","embedded-systems","python","requirements-management","software","software-engineering","systems-engineering"],"created_at":"2025-08-16T22:38:33.321Z","updated_at":"2025-08-16T22:38:33.918Z","avatar_url":"https://github.com/daleonpz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧰 Raiz - Simple CLI Requirements Management Tool\n\nA CLI tool to manage, track, and trace software requirements with automated test case linking, traceability reporting, and seamless integration with Robot Framework.\n\n\u003e Built for developers and teams working with embedded systems, Zephyr RTOS, or other projects where traceability and coverage are crucial.\n\nYou can try Raiz using the provided [example](example/).\n\n## 📚 Table of Contents\n\n* [🚀 Features](#features)\n* [📦 Installation](#installation)\n* [✍️ Requirements Format (YAML)](#requirements-format-yaml)\n* [🧪 Robot Framework Integration](#robot-framework-integration)\n* [🧾 CLI Usage](#cli-usage)\n  * [Add a Requirement](#add-a-requirement)\n  * [Remove a Requirement](#remove-a-requirement)\n  * [Trace Requirements Coverage](#trace-requirements-coverage)\n  * [List Requirements](#list-requirements)\n  * [Update Requirement](#update-requirement)\n  * [Sync Requirements](#sync-requirements)\n* [📁 Reports and Temp Files](#reports-and-temp-files)\n* [🧪 Testing](#testing)\n* [🏗️ Roadmap](#roadmap)\n* [📄 License](#license)\n* [🤝 Contributing](#contributing)\n\n## 🚀 Features\n\n* 📄 **Define and manage software requirements** (Functional, Non-functional, Constraints)\n* 🔗 **Link test cases** (from Robot Framework) to specific requirements using tags (e.g., `REQ-001`)\n* ✅ **Trace test coverage** — which requirements are tested, which are missing\n* 🗃️ **SQLite-backed DB** for performance and reliability\n* 🧪 **Robot Framework integration** using `output.xml`\n* 📦 Installable via `pip`\n* 📊 **Traceability reporting**: Console, JSON\n* 🧹 Automatic renumbering of requirements\n* 🧰 Modular and extensible codebase\n\n\n## 📦 Installation\n\n```bash\npip install raiz\n```\n\n## ✍️ Requirements Format (YAML)\n\nAll requirements are stored in a single `requirements.yaml` file and look like:\n\n```yaml\n- id: REQ-001\n  description: \"The system shall support BLE communication.\"\n  type: functional\n  domain: ble\n  linked_tests: []\n```\n\nIDs are renumbered automatically.\n\n## 🧪 Robot Framework Integration\n\nTests should be tagged with requirement IDs:\n\n```robot\n*** Test Cases ***\nTest BLE Connection\n    [Tags]    REQ-001\n    Do Something\n```\n\nAfter executing tests (which generates `output.xml`), you can trace coverage.\n\n## 🧾 CLI Usage\n\nRun **raiz** from your repository\n\n```bash\ncd my_repo/\nraiz \u003ccommand\u003e [options]\n```\n\n### Add a Requirement\n\n```bash\nraiz add\n```\n\nPrompts for description, type, domain.\n\n### Remove a Requirement\n\n```bash\nraiz rm \u003creq_number\u003e\nraiz rm 3\n```\n\nDeletes requirement `REQ-003` and renumbers all remaining ones.\n\n### Trace Requirements Coverage\n\n```bash\nraiz trace --fmt json --output trace_report\n```\n\n* `--format`: `console`, `json`\n* `--robot-output`: location of the Robot Framework output file\n* `--output`: output of the report file. The extension is added automatically\n* `--detail`: generates a more detailed trace report\n\n```json\n{\n    \"timestamp\": \"2025-08-08T19:16:46.837013\",\n    \"coverage\": {\n        \"total_requirements\": 2,\n        \"tested_requirements\": 2,\n        \"pass_rate\": 75.0,\n        \"coverage_rate\": 100.0\n    },\n    \"report\": {\n        \"REQ-001\": {\n            \"uuid\": \"c567c0d4-fe18-4d9b-8a1a-2e6b128ed89f\",\n            \"description\": \"Library should have add function\",\n            \"type\": \"functional\",\n            \"domain\": \"math\",\n            \"linked_tests\": [\n                \"Add Integers\",\n                \"Fail Add Integers\"\n            ],\n            \"test_results\": [\n                [\n                    \"test_math.robot\",\n                    \"Add Integers\",\n                    \"PASS\"\n                ],\n                [\n                    \"test_math.robot\",\n                    \"Fail Add Integers\",\n                    \"FAIL\"\n                ]\n            ]\n        },\n        \"REQ-XXX\": {\n           ...\n        }\n    },\n    \"detailed_report\": {\n        \"domains\": {\n            \"math\": {\n                \"total_requirements\": 2,\n                \"tested_requirements\": 2,\n                \"pass_rate\": 75.0,\n                \"coverage_rate\": 100.0\n            }\n        },\n        \"types\": {\n            \"functional\": {\n                \"total_requirements\": 2,\n                \"tested_requirements\": 2,\n                \"pass_rate\": 75.0,\n                \"coverage_rate\": 100.0\n            }\n        }\n    }\n}\n```\n\nOptions valid only for `--fmt console`\n\n* `--domain`: Filter report by specific domain\n* `--type`: Filter report by specific requirement type\n\n```bash\nraiz trace --fmt console --domain ble\nraiz trace --fmt console --type functional\n```\n\n\u003cimg width=\"746\" height=\"285\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bf577a2a-1036-456f-a677-01a20cec6ee4\" /\u003e\n\n\n### Show Requirements\n\n```bash\nraiz show all       # Show all saved requirements\nraiz show domains   # Show all unique domains found across the saved requirements\nraiz show types     # Show all unique requirement types found across the saved requirements\n```\n\n\u003cimg width=\"745\" height=\"111\" alt=\"image\" src=\"https://github.com/user-attachments/assets/a37afe18-2d23-45bb-8d51-ee0c4582cd22\" /\u003e\n\n\n### Update Requirement\n\n```bash\nraiz update \u003creq_number\u003e\nraiz update 3\n```\n\nPrompts to update description/type/domain\n\nOr directly update the `type` for requirement REQ-003\n\n```bash\nraiz update 3 --field type -value performance\n```\n\n### Sync Requirements\n\nRequirements are stored in a temporary SQLite database. To generate a YAML file with all requirements and commit your changes, use: \n\n```bash\nraiz sync to-yaml\ngit add requirements.yaml\n```\n\nIf you have a `requirements.yaml` file and want to load it into the SQLite database, use:\n\n```bash\nraiz sync from-yaml\n```\n\n## Reports and Temp Files\n\n* `.req_cache/` contains temporal files required to manage requirements\n* `traceability.json` default output\n\n## 🧪 Testing\n\n```bash\nrobot tests/system\n```\n\n## 🏗️ Roadmap\n\n* [x] Report in YAML format\n* [x] Multiple output formats (Console/JSON)\n* [ ] Support to [Requirements Interchange Format - ReqIF](https://de.wikipedia.org/wiki/Requirements_Interchange_Format)\n* [ ] Support for the Zephyr RTOS testing framework.\n* [ ] Improve documentation and create wiki.\n\n## 📄 License\n\nApache License 2.0\n\n## 🤝 Contributing\n\nPull requests welcome! Please run the linter (ruff) and tests before submitting.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaleonpz%2Fraiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaleonpz%2Fraiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaleonpz%2Fraiz/lists"}