SPDXVersion: SPDX-2.1 DataLicense: CC0-1.0 SPDXID: SPDXRef-DOCUMENT DocumentName: project DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-76d98736-3055-41df-a81d-010d5028b531 Creator: Person: Anonymous () Creator: Organization: Anonymous () Creator: Tool: reuse-6.1.0 Created: 2026-07-13T03:29:09Z CreatorComment: This document was created automatically using available reuse information consistent with REUSE. Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-70c4e49ae133c3567791a0f197a42af1 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b70310b85eab6c8790b273d11fd3a647 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8fd32224d080851f7b012a645e7ccf93 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a2aa65ddac52a0f4ad63030b7ea92328 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-be8f05ee6a431aa1f8f363d83f31b18a Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8bf08b10a7fc5feb8468b66211b170d4 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ae39448ad4229f8f72e4d91136911b90 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5d587f529e52bef6e824a8787cfa5908 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a0d14ed64c1ab935a52f1b5a0bcf7f3a Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c83df801fb369d2069dc4a947aeca814 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1caf0f063cabaaf283696ac1c76a590c Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5154e5261ee990ce68698f7950b0c98a Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2dc24d435530b511fda5ff52b78e61d7 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-40fe01f10e3dd07497c2faaad3e77456 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8effc75368a2206eec88283da89ce38a Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a897454f056f992c091e44fdc30e2c13 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9cce95baa99480013a87b78a44a07cc5 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8fc2b4363913a7d8200eaf5c1bb927ad Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b66fb6054c752ac4488be1e24cad7972 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-cd90371a9118b8210686491134d0a0df Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b127233efc892f45688cbc6abd900b09 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-986871ede40c8907a3532fab5c48f9a4 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a4093ef69cb5369c9afb09bbb812ea33 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7388e1de496e8155498f0658aca2fa1e Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b7f7b86ae8842404047c8143e1841adf Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-0f23cb8196758ad5e1faf77b137d47ca Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a2c3410e93a1e3a15cd0bb550b46358d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-be3a0b06c9645181945c188616b75d1f Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9bfdf4ff5d4bf45cc5877a57c54f2d76 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c25101c081ae60f915f745f36604eece Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b78d309c37ee0a117c5a3538c08754b5 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-095272a217d90187a6e6c047249ac5af Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-dc90f753213afb94c0e30a7075d855c7 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a6ad6254064dd0cd6461c0b29972d966 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f2fd4a294cfbf2518b6670b7166c8e60 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a0eca3597d576d945aa19a924c3569af Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-959408e6c0e51d1202cbba87e446216f Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-07d7206c26c2d69efd1abbbb3edc2a04 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-19c0a4b9ff8ca6518c273023ebf6d629 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-26a67271a5b22c614469882a56abfce5 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-70cecfb4a62db53b0ec811b44301f3f2 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-77b8d435ac0aabecf98f05cf835c6464 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-6b3ea9c1f704ca62da93335c57a196e3 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-005ef2afab74f11923b56f979213d1b5 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c51e4f7c958e3a523ccda498197ebb0c FileName: ./.editorconfig SPDXID: SPDXRef-70c4e49ae133c3567791a0f197a42af1 FileChecksum: SHA1: c018ef3aa9e572f2153491481b4663f52e30bc57 LicenseConcluded: NOASSERTION LicenseInfoInFile: WTFPL FileCopyrightText: Copyright 2021 林博仁(Buo-ren, Lin) FileName: ./.gitattributes SPDXID: SPDXRef-b70310b85eab6c8790b273d11fd3a647 FileChecksum: SHA1: 39a5ba58bd41a05355b04d1a900fca405e887ae4 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./.github/workflows/README.md SPDXID: SPDXRef-8fd32224d080851f7b012a645e7ccf93 FileChecksum: SHA1: 9d151e013d56ae3168718e6851b7aa96259d49f0 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./.github/workflows/check-potential-problems.yml SPDXID: SPDXRef-a2aa65ddac52a0f4ad63030b7ea92328 FileChecksum: SHA1: 08a5e2a52176b1c6520cb16c3c8dcb6ae3cb530d LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./.github/workflows/release.yml SPDXID: SPDXRef-be8f05ee6a431aa1f8f363d83f31b18a FileChecksum: SHA1: 56df8a84589740641c0840a92232f9078bf5f473 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./.gitignore SPDXID: SPDXRef-8bf08b10a7fc5feb8468b66211b170d4 FileChecksum: SHA1: 9abb1a3f3188d6f8f372d75a00e813fbdc02a3be LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2022 林博仁(Buo-ren, Lin) FileName: ./.gitlab-ci.yml SPDXID: SPDXRef-ae39448ad4229f8f72e4d91136911b90 FileChecksum: SHA1: f81152c4d1b2f53c77688939549215c9ee5cbbfe LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./.gitmodules SPDXID: SPDXRef-5d587f529e52bef6e824a8787cfa5908 FileChecksum: SHA1: 43e8a5b69882358dd2e499f9ea9c2e2d066b5c2e LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./.markdownlint.yml SPDXID: SPDXRef-a0d14ed64c1ab935a52f1b5a0bcf7f3a FileChecksum: SHA1: 22c9ea3e198ec2556d2157d9a49b3f21ee33d71b LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./.pre-commit-config.yaml SPDXID: SPDXRef-c83df801fb369d2069dc4a947aeca814 FileChecksum: SHA1: db6397097023fe6a16aa5e59754f5c51fa3491fc LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./.shellcheckrc SPDXID: SPDXRef-1caf0f063cabaaf283696ac1c76a590c FileChecksum: SHA1: 1a0742d66206611670ccf702f9886b54e4f39dfd LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: Copyright 2025 林博仁(Buo-ren Lin) FileName: ./.yamllint SPDXID: SPDXRef-5154e5261ee990ce68698f7950b0c98a FileChecksum: SHA1: 1e3b97f7ced33a56a979db4f0768416c21c27e12 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2021 林博仁(Buo-ren, Lin) FileName: ./AGENTS.md SPDXID: SPDXRef-2dc24d435530b511fda5ff52b78e61d7 FileChecksum: SHA1: 6bbd34cc3a50253d0be4eb76c7cf1c395e6ac5c0 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./README.md SPDXID: SPDXRef-40fe01f10e3dd07497c2faaad3e77456 FileChecksum: SHA1: 2ce5cd3750454d913e431afbabe2c3e29173d8bd LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./continuous-integration/create-gitlab-release.sh SPDXID: SPDXRef-8effc75368a2206eec88283da89ce38a FileChecksum: SHA1: 992317a1a170596314d4b7dc00b4386eaa5dc113 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./continuous-integration/do-static-analysis.install-system-deps.sh SPDXID: SPDXRef-a897454f056f992c091e44fdc30e2c13 FileChecksum: SHA1: a3616f24dfd523456000580962b2ee10cb8ac9c3 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./continuous-integration/do-static-analysis.sh SPDXID: SPDXRef-9cce95baa99480013a87b78a44a07cc5 FileChecksum: SHA1: be18c87c2eec1c3a689be3b8f054ce6f94b6b55f LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2025 林博仁(Buo-ren Lin) FileName: ./continuous-integration/generate-build-artifacts.install-system-deps.sh SPDXID: SPDXRef-8fc2b4363913a7d8200eaf5c1bb927ad FileChecksum: SHA1: d3fc826400922ca00e2b36eb4c46c032619f53b2 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./continuous-integration/generate-build-artifacts.sh SPDXID: SPDXRef-b66fb6054c752ac4488be1e24cad7972 FileChecksum: SHA1: ca5ca9f8cce074adbc88c67e333dcc37837d3a35 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2025 林博仁(Buo-ren Lin) FileName: ./continuous-integration/generate-release-description.sh SPDXID: SPDXRef-cd90371a9118b8210686491134d0a0df FileChecksum: SHA1: 040b023f72902c7a94fab4e5544c862a900ce920 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./continuous-integration/patch-github-actions-sudo-security-policy.sh SPDXID: SPDXRef-b127233efc892f45688cbc6abd900b09 FileChecksum: SHA1: 4ceed8f400a54eea2ac98bdbe8e17d3a04ccaa1c LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./continuous-integration/sudoers.d/90_allow_github_actions_default_envvars.sudoers SPDXID: SPDXRef-986871ede40c8907a3532fab5c48f9a4 FileChecksum: SHA1: ab8894fa020fceefab2cd598a796e9ffd6c32302 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./continuous-integration/sudoers.d/README.md SPDXID: SPDXRef-a4093ef69cb5369c9afb09bbb812ea33 FileChecksum: SHA1: bd347f52a5b7d9aa9c592e8f4bbd0d0503717358 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./continuous-integration/upload-gitlab-generic-packages.sh SPDXID: SPDXRef-7388e1de496e8155498f0658aca2fa1e FileChecksum: SHA1: 4c2ca71fa0a1c9afb646fc432828cf360a11cd5e LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2024 林博仁(Buo-ren Lin) FileName: ./dev-assets/README.md SPDXID: SPDXRef-b7f7b86ae8842404047c8143e1841adf FileChecksum: SHA1: ef30dd0668d95e48db6f7aefeb16b60582df6ee6 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./dev-assets/deploy-development-environment.sh SPDXID: SPDXRef-0f23cb8196758ad5e1faf77b137d47ca FileChecksum: SHA1: 70095e0ac39a4406275bb43998629874242474d6 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./functions.sh SPDXID: SPDXRef-a2c3410e93a1e3a15cd0bb550b46358d FileChecksum: SHA1: e7b4638a8e657bf8e54e1b1e45a2c8a4892f9243 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: Copyright 2025 林博仁(Buo-ren Lin) FileName: ./project-initializer.example.toml SPDXID: SPDXRef-be3a0b06c9645181945c188616b75d1f FileChecksum: SHA1: 3cc19dcd7fa5bc5fba7fa08909c1507e48b72987 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./pyproject.toml SPDXID: SPDXRef-9bfdf4ff5d4bf45cc5877a57c54f2d76 FileChecksum: SHA1: 079cf959e9d26ee91512a90fc6254ae7b7fd6bfa LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0 FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./specs.md SPDXID: SPDXRef-c25101c081ae60f915f745f36604eece FileChecksum: SHA1: a4cb1f91dd23d115a8bf7bb137d6ce5437a5b554 LicenseConcluded: NOASSERTION LicenseInfoInFile: CC-BY-SA-4.0+ FileCopyrightText: SPDX-FileCopyrightText: 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/__init__.py SPDXID: SPDXRef-b78d309c37ee0a117c5a3538c08754b5 FileChecksum: SHA1: 07afb26ae6e8fe0aece229ea8b412fa6d7e56b6a LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/automation.py SPDXID: SPDXRef-095272a217d90187a6e6c047249ac5af FileChecksum: SHA1: 37cc871307cb55de3f21221aea156b87896e36fe LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/cli.py SPDXID: SPDXRef-dc90f753213afb94c0e30a7075d855c7 FileChecksum: SHA1: c7f4482a6b1d7281b8391a600b7c7fc1298abfc7 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/config.py SPDXID: SPDXRef-a6ad6254064dd0cd6461c0b29972d966 FileChecksum: SHA1: b88c9395e443aa134192c8b4be3ae271b0520c7b LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/github_api.py SPDXID: SPDXRef-f2fd4a294cfbf2518b6670b7166c8e60 FileChecksum: SHA1: 247683969422d09e78f954c361c500f66f5f2404 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/gitlab_api.py SPDXID: SPDXRef-a0eca3597d576d945aa19a924c3569af FileChecksum: SHA1: 5aa78b50aac8d64d89a9febe2c7de43cc8e982bb LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/telegram_api.py SPDXID: SPDXRef-959408e6c0e51d1202cbba87e446216f FileChecksum: SHA1: 29f73f87862dd6242faa249ddc4f037f8bcae779 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./src/project_initializer/validation.py SPDXID: SPDXRef-07d7206c26c2d69efd1abbbb3edc2a04 FileChecksum: SHA1: 36682d84c612f70fa598e5038365f2d6e66d57fd LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_automation.py SPDXID: SPDXRef-19c0a4b9ff8ca6518c273023ebf6d629 FileChecksum: SHA1: 720d81c9b01915f5b2d37fd659b5af0b7435cae6 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_cli.py SPDXID: SPDXRef-26a67271a5b22c614469882a56abfce5 FileChecksum: SHA1: a6b32ee2a7c12acac3667c8f97bdaed798e77914 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_config.py SPDXID: SPDXRef-70cecfb4a62db53b0ec811b44301f3f2 FileChecksum: SHA1: 88c716c96415bede6d023af89180c038a2e3c965 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_github_api.py SPDXID: SPDXRef-77b8d435ac0aabecf98f05cf835c6464 FileChecksum: SHA1: e1ca5da5af95d9d6f469774cc3daac68123fe591 LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_gitlab_api.py SPDXID: SPDXRef-6b3ea9c1f704ca62da93335c57a196e3 FileChecksum: SHA1: 4fcf40836cc8b171942949d8d840adc04ae9390f LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_telegram_api.py SPDXID: SPDXRef-005ef2afab74f11923b56f979213d1b5 FileChecksum: SHA1: f2587e4fa6ae311f78591918f7d44f2b9bc0d7cb LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin) FileName: ./tests/test_validation.py SPDXID: SPDXRef-c51e4f7c958e3a523ccda498197ebb0c FileChecksum: SHA1: 7dfa4770914bcb66d156fe202f4f6b31cc61eccb LicenseConcluded: NOASSERTION LicenseInfoInFile: AGPL-3.0-or-later FileCopyrightText: Copyright 2026 林博仁(Buo-ren Lin)