synapse-sdk 2026.1.1b3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of synapse-sdk might be problematic. Click here for more details.
- synapse_sdk-2026.1.1b3/.claude/commands/compare-branch.md +14 -0
- synapse_sdk-2026.1.1b3/.claude/commands/review-pr.md +137 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.analyze.md +188 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.checklist.md +298 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.clarify.md +185 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.constitution.md +86 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.implement.md +139 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.plan.md +93 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.specify.md +266 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.tasks.md +141 -0
- synapse_sdk-2026.1.1b3/.claude/commands/speckit.taskstoissues.md +32 -0
- synapse_sdk-2026.1.1b3/.claude/commands/update-pr-desc.md +20 -0
- synapse_sdk-2026.1.1b3/.claude/commands/update-pr-title.md +32 -0
- synapse_sdk-2026.1.1b3/.github/workflows/lint.yml +9 -0
- synapse_sdk-2026.1.1b3/.github/workflows/pypi-publish.yml +55 -0
- synapse_sdk-2026.1.1b3/.github/workflows/test.yml +36 -0
- synapse_sdk-2026.1.1b3/.gitignore +62 -0
- synapse_sdk-2026.1.1b3/.pre-commit-config.yaml +7 -0
- synapse_sdk-2026.1.1b3/.serena/.gitignore +1 -0
- synapse_sdk-2026.1.1b3/.serena/memories/project_overview.md +39 -0
- synapse_sdk-2026.1.1b3/.serena/memories/style_conventions.md +36 -0
- synapse_sdk-2026.1.1b3/.serena/memories/suggested_commands.md +45 -0
- synapse_sdk-2026.1.1b3/.serena/memories/task_completion.md +25 -0
- synapse_sdk-2026.1.1b3/.serena/project.yml +84 -0
- synapse_sdk-2026.1.1b3/.specify/memory/constitution.md +201 -0
- synapse_sdk-2026.1.1b3/.specify/scripts/bash/check-prerequisites.sh +166 -0
- synapse_sdk-2026.1.1b3/.specify/scripts/bash/common.sh +155 -0
- synapse_sdk-2026.1.1b3/.specify/scripts/bash/create-new-feature.sh +305 -0
- synapse_sdk-2026.1.1b3/.specify/scripts/bash/setup-plan.sh +60 -0
- synapse_sdk-2026.1.1b3/.specify/scripts/bash/update-agent-context.sh +766 -0
- synapse_sdk-2026.1.1b3/.specify/templates/agent-file-template.md +28 -0
- synapse_sdk-2026.1.1b3/.specify/templates/checklist-template.md +40 -0
- synapse_sdk-2026.1.1b3/.specify/templates/plan-template.md +110 -0
- synapse_sdk-2026.1.1b3/.specify/templates/spec-template.md +115 -0
- synapse_sdk-2026.1.1b3/.specify/templates/tasks-template.md +251 -0
- synapse_sdk-2026.1.1b3/AGENT.md +122 -0
- synapse_sdk-2026.1.1b3/CLAUDE.md +1 -0
- synapse_sdk-2026.1.1b3/LICENSE +201 -0
- synapse_sdk-2026.1.1b3/Makefile +60 -0
- synapse_sdk-2026.1.1b3/PKG-INFO +715 -0
- synapse_sdk-2026.1.1b3/README.md +468 -0
- synapse_sdk-2026.1.1b3/dev-api/.gitignore +1 -0
- synapse_sdk-2026.1.1b3/dev-api/README.md +57 -0
- synapse_sdk-2026.1.1b3/dev-api/app/__init__.py +1 -0
- synapse_sdk-2026.1.1b3/dev-api/app/config.py +29 -0
- synapse_sdk-2026.1.1b3/dev-api/app/database.py +27 -0
- synapse_sdk-2026.1.1b3/dev-api/app/main.py +51 -0
- synapse_sdk-2026.1.1b3/dev-api/app/models/__init__.py +8 -0
- synapse_sdk-2026.1.1b3/dev-api/app/models/base.py +9 -0
- synapse_sdk-2026.1.1b3/dev-api/app/models/checkpoint.py +42 -0
- synapse_sdk-2026.1.1b3/dev-api/app/models/log.py +33 -0
- synapse_sdk-2026.1.1b3/dev-api/app/models/pipeline.py +70 -0
- synapse_sdk-2026.1.1b3/dev-api/app/routers/__init__.py +5 -0
- synapse_sdk-2026.1.1b3/dev-api/app/routers/checkpoints.py +72 -0
- synapse_sdk-2026.1.1b3/dev-api/app/routers/logs.py +66 -0
- synapse_sdk-2026.1.1b3/dev-api/app/routers/pipelines.py +117 -0
- synapse_sdk-2026.1.1b3/dev-api/app/routers/runs.py +217 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/__init__.py +24 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/checkpoint.py +36 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/log.py +44 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/pipeline.py +46 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/progress.py +41 -0
- synapse_sdk-2026.1.1b3/dev-api/app/schemas/run.py +60 -0
- synapse_sdk-2026.1.1b3/dev-api/app/services/__init__.py +1 -0
- synapse_sdk-2026.1.1b3/dev-api/data/.gitkeep +0 -0
- synapse_sdk-2026.1.1b3/dev-api/data/pipeline.db +0 -0
- synapse_sdk-2026.1.1b3/dev-api/pyproject.toml +41 -0
- synapse_sdk-2026.1.1b3/dev-api/tests/__init__.py +1 -0
- synapse_sdk-2026.1.1b3/dev-api/uv.lock +684 -0
- synapse_sdk-2026.1.1b3/docs/.gitignore +20 -0
- synapse_sdk-2026.1.1b3/docs/README.md +41 -0
- synapse_sdk-2026.1.1b3/docs/blog/2019-05-28-first-blog-post.md +12 -0
- synapse_sdk-2026.1.1b3/docs/blog/2019-05-29-long-blog-post.md +44 -0
- synapse_sdk-2026.1.1b3/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- synapse_sdk-2026.1.1b3/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- synapse_sdk-2026.1.1b3/docs/blog/2021-08-26-welcome/index.md +29 -0
- synapse_sdk-2026.1.1b3/docs/blog/authors.yml +25 -0
- synapse_sdk-2026.1.1b3/docs/blog/tags.yml +19 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/agent.md +257 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/annotation-mixin.md +378 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/backend.md +420 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/base.md +257 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/core-mixin.md +477 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/data-collection-mixin.md +422 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/hitl-mixin.md +554 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/index.md +391 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/integration-mixin.md +571 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/ml-mixin.md +578 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/clients/ray.md +358 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/index.md +52 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/plugins/categories.md +43 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/plugins/models.md +114 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/plugins/utils.md +484 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/sidebar.json +224 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/cli/index.md +13 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/cli/main.md +33 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/agent/async_ray.md +224 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/agent/container.md +92 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/agent/index.md +48 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/agent/plugin.md +93 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/agent/ray.md +233 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/annotation.md +191 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/core.md +61 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/data_collection.md +224 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/hitl.md +87 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/index.md +73 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/integration.md +349 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/ml.md +126 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/backend/models.md +148 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/base.md +44 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/exceptions.md +5 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/clients/index.md +5 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/exceptions.md +13 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/index.md +24 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/loggers.md +171 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/action.md +120 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/export/action.md +174 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/export/context.md +56 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/export/index.md +48 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/index.md +23 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/inference/action.md +265 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/inference/context.md +73 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/inference/deployment.md +261 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/inference/index.md +55 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/inference/serve.md +142 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/train/action.md +220 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/train/context.md +55 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/train/index.md +45 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/upload/action.md +134 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/upload/context.md +57 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/actions/upload/index.md +41 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/config.md +48 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/context/env.md +107 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/context/index.md +119 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/decorators.md +49 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/discovery.md +268 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/enums.md +61 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/errors.md +81 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/index.md +46 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/local.md +46 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/ray/base.md +32 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/ray/index.md +5 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/ray/job.md +135 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/executors/ray/task.md +63 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/index.md +28 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/index.md +10 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/base.md +152 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/context.md +81 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/index.md +41 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/orchestrator.md +52 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/registry.md +113 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/utils/index.md +12 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/utils/logging.md +81 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/utils/timing.md +80 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/pipelines/steps/utils/validation.md +62 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/runner.md +66 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/upload.md +271 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/plugins/utils.md +151 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/shared/index.md +5 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/types.md +39 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/archive.md +240 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/checksum.md +129 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/download.md +182 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/index.md +7 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/io.md +118 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/file/requirements.md +28 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/index.md +7 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/network.md +155 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/config.md +123 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/errors.md +63 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/index.md +285 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/base.md +7 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/gcs.md +151 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/http.md +227 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/index.md +14 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/local.md +135 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/s3.md +153 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/providers/sftp.md +162 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/storage/registry.md +63 -0
- synapse_sdk-2026.1.1b3/docs/docs/api/reference/synapse_sdk/utils/websocket.md +70 -0
- synapse_sdk-2026.1.1b3/docs/docs/categories.md +0 -0
- synapse_sdk-2026.1.1b3/docs/docs/cli-usage.md +255 -0
- synapse_sdk-2026.1.1b3/docs/docs/concepts/index.md +38 -0
- synapse_sdk-2026.1.1b3/docs/docs/configuration.md +83 -0
- synapse_sdk-2026.1.1b3/docs/docs/contributing.md +305 -0
- synapse_sdk-2026.1.1b3/docs/docs/examples/index.md +29 -0
- synapse_sdk-2026.1.1b3/docs/docs/faq.md +179 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/converters/index.md +455 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/index.md +41 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/pipelines/index.md +141 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/pipelines/step-orchestration.md +585 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/utils/bulk-upload.md +463 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/utils/file.md +415 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/utils/network.md +257 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/utils/storage.md +328 -0
- synapse_sdk-2026.1.1b3/docs/docs/features/utils/types.md +51 -0
- synapse_sdk-2026.1.1b3/docs/docs/installation.md +96 -0
- synapse_sdk-2026.1.1b3/docs/docs/introduction.md +47 -0
- synapse_sdk-2026.1.1b3/docs/docs/migration.md +160 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/neural-net-plugins/gradio-playground.md +373 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +861 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/defining-actions.md +318 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/export-plugins.md +1092 -0
- synapse_sdk-2026.1.1b3/docs/docs/plugins/plugins.md +852 -0
- synapse_sdk-2026.1.1b3/docs/docs/quickstart.md +74 -0
- synapse_sdk-2026.1.1b3/docs/docs/troubleshooting.md +465 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/_category_.json +8 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/congratulations.md +23 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/create-a-document.md +57 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/create-a-page.md +43 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-extras/_category_.json +7 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
- synapse_sdk-2026.1.1b3/docs/docs/tutorial-extras/translate-your-site.md +88 -0
- synapse_sdk-2026.1.1b3/docs/docusaurus.config.ts +148 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/code.json +325 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +257 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +358 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/utils.md +217 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +255 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +305 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +32 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/pipelines/index.md +141 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/pipelines/step-orchestration.md +585 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +257 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +328 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +96 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/migration.md +160 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/gradio-playground.md +373 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +862 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/defining-actions.md +318 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +74 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +465 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
- synapse_sdk-2026.1.1b3/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
- synapse_sdk-2026.1.1b3/docs/package-lock.json +18784 -0
- synapse_sdk-2026.1.1b3/docs/package.json +48 -0
- synapse_sdk-2026.1.1b3/docs/pnpm-lock.yaml +12305 -0
- synapse_sdk-2026.1.1b3/docs/sidebars.ts +125 -0
- synapse_sdk-2026.1.1b3/docs/src/components/HomepageFeatures/index.tsx +71 -0
- synapse_sdk-2026.1.1b3/docs/src/components/HomepageFeatures/styles.module.css +11 -0
- synapse_sdk-2026.1.1b3/docs/src/css/custom.css +30 -0
- synapse_sdk-2026.1.1b3/docs/src/pages/index.module.css +23 -0
- synapse_sdk-2026.1.1b3/docs/src/pages/index.tsx +21 -0
- synapse_sdk-2026.1.1b3/docs/src/pages/markdown-page.md +7 -0
- synapse_sdk-2026.1.1b3/docs/static/.nojekyll +0 -0
- synapse_sdk-2026.1.1b3/docs/static/img/docusaurus-social-card.jpg +0 -0
- synapse_sdk-2026.1.1b3/docs/static/img/docusaurus.png +0 -0
- synapse_sdk-2026.1.1b3/docs/static/img/favicon.ico +0 -0
- synapse_sdk-2026.1.1b3/docs/static/img/logo.png +0 -0
- synapse_sdk-2026.1.1b3/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
- synapse_sdk-2026.1.1b3/docs/static/img/undraw_docusaurus_react.svg +170 -0
- synapse_sdk-2026.1.1b3/docs/static/img/undraw_docusaurus_tree.svg +40 -0
- synapse_sdk-2026.1.1b3/docs/tsconfig.json +8 -0
- synapse_sdk-2026.1.1b3/examples/run_yolo_training_pipeline.py +108 -0
- synapse_sdk-2026.1.1b3/pydoc-markdown.yml +27 -0
- synapse_sdk-2026.1.1b3/pyproject.toml +141 -0
- synapse_sdk-2026.1.1b3/scripts/fix_mdx.py +81 -0
- synapse_sdk-2026.1.1b3/setup.cfg +4 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/__init__.py +24 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/__init__.py +12 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/agent/__init__.py +25 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/agent/config.py +104 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/agent/select.py +197 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/auth.py +104 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/main.py +1025 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/__init__.py +58 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/create.py +566 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/job.py +196 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/publish.py +322 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/run.py +131 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/cli/plugin/test.py +200 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/README.md +239 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/__init__.py +5 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/_template.py +266 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/agent/__init__.py +106 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/agent/async_ray.py +289 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/agent/container.py +83 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/agent/plugin.py +101 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/agent/ray.py +311 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/__init__.py +160 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/annotation.py +171 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/core.py +101 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/data_collection.py +292 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/hitl.py +87 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/integration.py +391 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/ml.py +141 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/backend/models.py +247 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/base.py +572 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/exceptions.py +36 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/pipeline/__init__.py +5 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/pipeline/client.py +636 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/protocols.py +178 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/utils.py +88 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/clients/validation.py +58 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/enums.py +76 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/exceptions.py +203 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/__init__.py +74 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/_base.py +119 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/_context.py +53 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/ultralytics/__init__.py +78 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/ultralytics/_callbacks.py +126 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/integrations/ultralytics/_patches.py +124 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/loggers.py +497 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/MCP.md +69 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/__init__.py +48 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/__main__.py +6 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/config.py +349 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/prompts/__init__.py +4 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/resources/__init__.py +4 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/server.py +1352 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/mcp/tools/__init__.py +6 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/__init__.py +137 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/action.py +229 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/__init__.py +82 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/dataset/__init__.py +37 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/dataset/action.py +471 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/export/__init__.py +55 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/export/action.py +183 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/export/context.py +59 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/inference/__init__.py +84 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/inference/action.py +285 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/inference/context.py +81 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/inference/deployment.py +322 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/inference/serve.py +252 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/train/__init__.py +54 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/train/action.py +326 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/train/context.py +57 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/upload/__init__.py +49 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/upload/action.py +165 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/actions/upload/context.py +61 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/config.py +98 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/context/__init__.py +109 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/context/env.py +113 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/__init__.py +113 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/converters/__init__.py +76 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/converters/base.py +347 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/converters/yolo/__init__.py +9 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/converters/yolo/from_dm.py +468 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/converters/yolo/to_dm.py +381 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/formats/__init__.py +82 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/formats/dm.py +351 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/datasets/formats/yolo.py +240 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/decorators.py +83 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/discovery.py +790 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/ACTION_DEV_GUIDE.md +933 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/ARCHITECTURE.md +1225 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/LOGGING_SYSTEM.md +683 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/OVERVIEW.md +531 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/PIPELINE_GUIDE.md +145 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/README.md +513 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/docs/STEP.md +656 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/enums.py +81 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/errors.py +92 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/__init__.py +43 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/local.py +99 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/__init__.py +18 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/base.py +282 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/job.py +298 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/jobs_api.py +511 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/packaging.py +137 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/pipeline.py +792 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/executors/ray/task.py +257 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/models/__init__.py +26 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/models/logger.py +173 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/models/pipeline.py +25 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/pipelines/__init__.py +81 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/pipelines/action_pipeline.py +417 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/pipelines/context.py +107 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/pipelines/display.py +311 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/runner.py +114 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/schemas/__init__.py +19 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/schemas/results.py +152 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/__init__.py +63 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/base.py +128 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/context.py +90 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/orchestrator.py +128 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/registry.py +103 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/utils/__init__.py +20 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/utils/logging.py +85 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/utils/timing.py +71 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/steps/utils/validation.py +68 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/__init__.py +50 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/.gitignore.j2 +26 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/.synapseignore.j2 +11 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/README.md.j2 +26 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/plugin/__init__.py.j2 +1 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/pyproject.toml.j2 +14 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/base/requirements.txt.j2 +1 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/custom/plugin/main.py.j2 +18 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/data_validation/plugin/validate.py.j2 +32 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/export/plugin/export.py.j2 +36 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/neural_net/plugin/inference.py.j2 +36 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/neural_net/plugin/train.py.j2 +33 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/post_annotation/plugin/post_annotate.py.j2 +32 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/pre_annotation/plugin/pre_annotate.py.j2 +32 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/smart_tool/plugin/auto_label.py.j2 +44 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/templates/upload/plugin/upload.py.j2 +35 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/testing/__init__.py +25 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/testing/sample_actions.py +98 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/types.py +206 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/upload.py +620 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/plugins/utils.py +338 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/shared/__init__.py +25 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/__init__.py +1 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/auth.py +74 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/__init__.py +58 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/archive.py +449 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/checksum.py +167 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/download.py +286 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/io.py +129 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/file/requirements.py +36 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/network.py +168 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/__init__.py +238 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/config.py +188 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/errors.py +52 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/__init__.py +13 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/base.py +76 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/gcs.py +168 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/http.py +250 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/local.py +126 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/s3.py +177 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/providers/sftp.py +208 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/storage/registry.py +125 -0
- synapse_sdk-2026.1.1b3/synapse_sdk/utils/websocket.py +99 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/PKG-INFO +715 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/SOURCES.txt +496 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/dependency_links.txt +1 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/entry_points.txt +2 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/requires.txt +38 -0
- synapse_sdk-2026.1.1b3/synapse_sdk.egg-info/top_level.txt +1 -0
- synapse_sdk-2026.1.1b3/tests/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/clients/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/clients/conftest.py +256 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_async_base_client.py +545 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_base_client.py +648 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_exceptions.py +404 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_protocols.py +201 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_utils.py +238 -0
- synapse_sdk-2026.1.1b3/tests/clients/test_validation.py +197 -0
- synapse_sdk-2026.1.1b3/tests/integration/plugins/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/integration/plugins/steps/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/integration/plugins/steps/test_category_integration.py +128 -0
- synapse_sdk-2026.1.1b3/tests/integration/plugins/steps/test_logging_integration.py +163 -0
- synapse_sdk-2026.1.1b3/tests/integration/test_pipeline_execution.py +117 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/test_context.py +186 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/test_imports.py +55 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/test_orchestrator.py +125 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/utils/__init__.py +0 -0
- synapse_sdk-2026.1.1b3/tests/plugins/steps/utils/test_imports.py +57 -0
- synapse_sdk-2026.1.1b3/tests/unit/test_loggers_deprecation.py +104 -0
- synapse_sdk-2026.1.1b3/tests/unit/test_loggers_level.py +104 -0
- synapse_sdk-2026.1.1b3/tests/unit/test_loggers_logging_module.py +71 -0
- synapse_sdk-2026.1.1b3/tests/unit/test_loggers_step.py +127 -0
- synapse_sdk-2026.1.1b3/tests/unit/test_models_import.py +90 -0
- synapse_sdk-2026.1.1b3/uv.lock +3761 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: compare-branches
|
|
3
|
+
description: Compare changes between branches
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Please compare the changes between the current branch and main using GitHub MCP.
|
|
7
|
+
|
|
8
|
+
Analyze:
|
|
9
|
+
1. File changes and their impact
|
|
10
|
+
2. Code quality improvements or regressions
|
|
11
|
+
3. Potential conflicts or issues
|
|
12
|
+
4. Testing implications
|
|
13
|
+
|
|
14
|
+
Branch to compare: $ARGUMENTS (default: main if not specified)
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-pr
|
|
3
|
+
description: Comprehensive PR review using GitHub MCP with P1-P4 Code Review Rules
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Please perform a comprehensive review of PR using the GitHub MCP server.
|
|
7
|
+
|
|
8
|
+
**Arguments:**
|
|
9
|
+
- First argument: PR number (required)
|
|
10
|
+
- Second argument: Language for review comments - "en" for English, "ko" for Korean (optional, defaults to "en")
|
|
11
|
+
|
|
12
|
+
**Usage Examples:**
|
|
13
|
+
- `/review-pr 123` - Review PR #123 with English comments
|
|
14
|
+
- `/review-pr 123 en` - Review PR #123 with English comments
|
|
15
|
+
- `/review-pr 123 ko` - Review PR #123 with Korean comments
|
|
16
|
+
|
|
17
|
+
**Parse Arguments:**
|
|
18
|
+
Extract PR number from first argument and language preference from second argument (if provided). If second argument is not "ko", default to English ("en").
|
|
19
|
+
|
|
20
|
+
**IMPORTANT Review Decision Logic:**
|
|
21
|
+
1. **Track all P1, P2, P3 violations found during review**
|
|
22
|
+
2. **If ANY P1, P2, or P3 violations are found** → Use `--request-changes`
|
|
23
|
+
3. **If ONLY P4 violations or no violations found** → Use `--approve`
|
|
24
|
+
4. **Never use `--comment` as the main review action** - always choose between approve or request-changes
|
|
25
|
+
|
|
26
|
+
**Review Process:**
|
|
27
|
+
1. Read and load P1-P4 Code Review Rules from the following files:
|
|
28
|
+
- P1_rules.md (Critical - Security and Stability)
|
|
29
|
+
- P2_rules.md (High Priority - Core functionality and architecture)
|
|
30
|
+
- P3_rules.md (Medium Priority - Best practices and maintainability)
|
|
31
|
+
- P4_rules.md (Low Priority - Code style and formatting)
|
|
32
|
+
2. Fetch PR details and file changes
|
|
33
|
+
3. Apply P1-P4 Code Review Rules systematically against the changes
|
|
34
|
+
4. Analyze code quality, security, and performance
|
|
35
|
+
5. Check for test coverage and documentation
|
|
36
|
+
6. Look for potential bugs or issues
|
|
37
|
+
7. Provide specific, actionable feedback with priority levels
|
|
38
|
+
8. Create review comments directly on the PR for each issue found
|
|
39
|
+
|
|
40
|
+
**P1-P4 Code Review Rules Application:**
|
|
41
|
+
|
|
42
|
+
IMPORTANT: Before starting the review, read the complete rule sets from these files:
|
|
43
|
+
- `P1_rules.md`
|
|
44
|
+
- `P2_rules.md`
|
|
45
|
+
- `P3_rules.md`
|
|
46
|
+
- `P4_rules.md`
|
|
47
|
+
|
|
48
|
+
Apply ALL rules from these files during the review process. The rules cover:
|
|
49
|
+
|
|
50
|
+
**P1 Rules (Critical - MUST FIX):**
|
|
51
|
+
- Security and database integrity issues
|
|
52
|
+
- Critical Django/DRF patterns
|
|
53
|
+
- System stability concerns
|
|
54
|
+
|
|
55
|
+
**P2 Rules (High Priority):**
|
|
56
|
+
- Core Django/DRF best practices
|
|
57
|
+
- Architecture and design patterns
|
|
58
|
+
- Performance considerations
|
|
59
|
+
|
|
60
|
+
**P3 Rules (Medium Priority):**
|
|
61
|
+
- Code maintainability
|
|
62
|
+
- Best practices and conventions
|
|
63
|
+
- Safety and error handling
|
|
64
|
+
|
|
65
|
+
**P4 Rules (Low Priority - Style):**
|
|
66
|
+
- Code formatting and style
|
|
67
|
+
- Naming conventions
|
|
68
|
+
- Consistency standards
|
|
69
|
+
|
|
70
|
+
**Review Output Format:**
|
|
71
|
+
For each violation found:
|
|
72
|
+
1. **Report to user** with this format:
|
|
73
|
+
- **Rule Category:** P1/P2/P3/P4
|
|
74
|
+
- **Specific Rule:** Quote the exact rule from the files
|
|
75
|
+
- **Location:** File and line number
|
|
76
|
+
- **Issue:** What violates the rule
|
|
77
|
+
- **Recommendation:** How to fix it based on the rule guidance
|
|
78
|
+
- **Impact:** Why this matters (reference rule explanation)
|
|
79
|
+
|
|
80
|
+
2. **Create PR review comment** using GitHub CLI:
|
|
81
|
+
- Use `gh pr review {PR_NUMBER} --comment-body "comment text"` for general review comments
|
|
82
|
+
- Use `gh pr comment {PR_NUMBER} --body "comment text"` for specific line comments when applicable
|
|
83
|
+
- Format comments with clear priority indicators: [P1], [P2], [P3], [P4]
|
|
84
|
+
- Include rule reference and actionable guidance in each comment
|
|
85
|
+
- **IMPORTANT:** Write all comments in the selected language (English or Korean)
|
|
86
|
+
|
|
87
|
+
**Review Actions:**
|
|
88
|
+
1. **Submit overall review** with summary using: `gh pr review {PR_NUMBER} --approve/--request-changes --body "overall review summary"`
|
|
89
|
+
2. **Add individual comments** for each rule violation found
|
|
90
|
+
3. **Use appropriate review status:**
|
|
91
|
+
- `--request-changes` if any P1, P2, or P3 violations are found
|
|
92
|
+
- `--approve` if only P4 violations or no issues found
|
|
93
|
+
- `--comment` for informational feedback only (no rule violations)
|
|
94
|
+
4. **Language Requirements:**
|
|
95
|
+
- Write ALL review comments and summary in the selected language
|
|
96
|
+
- Use appropriate technical terminology for the chosen language
|
|
97
|
+
- Maintain professional tone in both languages
|
|
98
|
+
|
|
99
|
+
**Focus Areas:**
|
|
100
|
+
- **Priority 1 (P1):** Critical security and stability issues (MUST FIX) → REQUEST CHANGES
|
|
101
|
+
- **Priority 2 (P2):** Core functionality and architecture (SHOULD FIX) → REQUEST CHANGES
|
|
102
|
+
- **Priority 3 (P3):** Best practices and maintainability (SHOULD FIX) → REQUEST CHANGES
|
|
103
|
+
- **Priority 4 (P4):** Code style and formatting (OPTIONAL) → APPROVE WITH COMMENTS
|
|
104
|
+
- Test coverage and documentation completeness
|
|
105
|
+
- Breaking changes and backward compatibility
|
|
106
|
+
|
|
107
|
+
**GitHub CLI Commands to Use:**
|
|
108
|
+
- `gh pr view {PR_NUMBER} --json title,body,state,author,files,commits`
|
|
109
|
+
- `gh pr diff {PR_NUMBER}`
|
|
110
|
+
- `gh pr review {PR_NUMBER} --comment-body "review summary"`
|
|
111
|
+
- `gh pr comment {PR_NUMBER} --body "specific comment"`
|
|
112
|
+
|
|
113
|
+
**Language-Specific Comment Templates:**
|
|
114
|
+
|
|
115
|
+
**English Template:**
|
|
116
|
+
```
|
|
117
|
+
[P{LEVEL}] **{TITLE}**
|
|
118
|
+
|
|
119
|
+
{DESCRIPTION}
|
|
120
|
+
|
|
121
|
+
**Location:** {FILE}:{LINE}
|
|
122
|
+
**Issue:** {ISSUE_DESCRIPTION}
|
|
123
|
+
**Recommendation:** {RECOMMENDATION}
|
|
124
|
+
**Rule Reference:** {RULE_QUOTE}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Korean Template:**
|
|
128
|
+
```
|
|
129
|
+
[P{LEVEL}] **{TITLE}**
|
|
130
|
+
|
|
131
|
+
{DESCRIPTION}
|
|
132
|
+
|
|
133
|
+
**위치:** {FILE}:{LINE}
|
|
134
|
+
**문제점:** {ISSUE_DESCRIPTION}
|
|
135
|
+
**권장사항:** {RECOMMENDATION}
|
|
136
|
+
**규칙 참조:** {RULE_QUOTE}
|
|
137
|
+
```
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 작업 생성 후 spec.md, plan.md, tasks.md 전반에 걸쳐 비파괴적 교차 산출물 일관성 및 품질 분석을 수행합니다.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## 언어 설정
|
|
6
|
+
|
|
7
|
+
모든 출력과 사용자와의 대화는 **한국어**로 진행합니다.
|
|
8
|
+
|
|
9
|
+
## 사용자 입력
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
$ARGUMENTS
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
입력이 비어있지 않다면 진행하기 전에 **반드시** 사용자 입력을 고려해야 합니다.
|
|
16
|
+
|
|
17
|
+
## 목표
|
|
18
|
+
|
|
19
|
+
구현 전에 세 가지 핵심 산출물(`spec.md`, `plan.md`, `tasks.md`) 전반에 걸쳐 불일치, 중복, 모호성, 미명세 항목을 식별합니다. 이 명령은 `/speckit.tasks`가 완전한 `tasks.md`를 성공적으로 생성한 후에만 실행해야 합니다.
|
|
20
|
+
|
|
21
|
+
## 운영 제약사항
|
|
22
|
+
|
|
23
|
+
**엄격한 읽기 전용**: 파일을 수정하지 **마세요**. 구조화된 분석 보고서를 출력합니다. 선택적 수정 계획 제공(사용자가 후속 편집 명령을 수동으로 호출하기 전에 명시적으로 승인해야 함).
|
|
24
|
+
|
|
25
|
+
**헌법 권한**: 프로젝트 헌법(`.specify/memory/constitution.md`)은 이 분석 범위 내에서 **협상 불가**입니다. 헌법 충돌은 자동으로 CRITICAL이며 명세서, 계획 또는 작업의 조정이 필요합니다—원칙의 희석, 재해석 또는 무시가 아닙니다. 원칙 자체를 변경해야 하는 경우 `/speckit.analyze` 외부의 별도 명시적 헌법 업데이트에서 발생해야 합니다.
|
|
26
|
+
|
|
27
|
+
## 실행 단계
|
|
28
|
+
|
|
29
|
+
### 1. 분석 컨텍스트 초기화
|
|
30
|
+
|
|
31
|
+
저장소 루트에서 `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks`를 한 번 실행하고 JSON에서 FEATURE_DIR과 AVAILABLE_DOCS를 파싱합니다. 절대 경로 도출:
|
|
32
|
+
|
|
33
|
+
- SPEC = FEATURE_DIR/spec.md
|
|
34
|
+
- PLAN = FEATURE_DIR/plan.md
|
|
35
|
+
- TASKS = FEATURE_DIR/tasks.md
|
|
36
|
+
|
|
37
|
+
필수 파일이 없으면 오류 메시지와 함께 중단(사용자에게 누락된 전제조건 명령을 실행하도록 안내).
|
|
38
|
+
"I'm Groot"와 같이 인수에 작은따옴표가 있는 경우 이스케이프 구문 사용: 예: 'I'\''m Groot' (또는 가능하면 큰따옴표: "I'm Groot").
|
|
39
|
+
|
|
40
|
+
### 2. 산출물 로드(점진적 공개)
|
|
41
|
+
|
|
42
|
+
각 산출물에서 최소한 필요한 컨텍스트만 로드:
|
|
43
|
+
|
|
44
|
+
**spec.md에서:**
|
|
45
|
+
|
|
46
|
+
- 개요/컨텍스트
|
|
47
|
+
- 기능 요구사항
|
|
48
|
+
- 비기능 요구사항
|
|
49
|
+
- 사용자 스토리
|
|
50
|
+
- 엣지 케이스(있는 경우)
|
|
51
|
+
|
|
52
|
+
**plan.md에서:**
|
|
53
|
+
|
|
54
|
+
- 아키텍처/스택 선택
|
|
55
|
+
- 데이터 모델 참조
|
|
56
|
+
- 단계
|
|
57
|
+
- 기술적 제약사항
|
|
58
|
+
|
|
59
|
+
**tasks.md에서:**
|
|
60
|
+
|
|
61
|
+
- 작업 ID
|
|
62
|
+
- 설명
|
|
63
|
+
- 단계 그룹화
|
|
64
|
+
- 병렬 마커 [P]
|
|
65
|
+
- 참조된 파일 경로
|
|
66
|
+
|
|
67
|
+
**헌법에서:**
|
|
68
|
+
|
|
69
|
+
- 원칙 검증을 위해 `.specify/memory/constitution.md` 로드
|
|
70
|
+
|
|
71
|
+
### 3. 시맨틱 모델 구축
|
|
72
|
+
|
|
73
|
+
내부 표현 생성(출력에 원시 산출물 포함하지 않음):
|
|
74
|
+
|
|
75
|
+
- **요구사항 인벤토리**: 안정적인 키가 있는 각 기능 + 비기능 요구사항(명령형 구문에 기반한 슬러그 도출; 예: "사용자가 파일을 업로드할 수 있음" → `user-can-upload-file`)
|
|
76
|
+
- **사용자 스토리/동작 인벤토리**: 인수 기준이 있는 개별 사용자 동작
|
|
77
|
+
- **작업 범위 매핑**: 각 작업을 하나 이상의 요구사항 또는 스토리에 매핑(키워드/ID 또는 핵심 구문과 같은 명시적 참조 패턴에 의한 추론)
|
|
78
|
+
- **헌법 규칙 세트**: 원칙 이름과 MUST/SHOULD 규범적 진술 추출
|
|
79
|
+
|
|
80
|
+
### 4. 감지 패스(토큰 효율적 분석)
|
|
81
|
+
|
|
82
|
+
고신호 발견에 집중. 총 50개 발견으로 제한; 나머지는 오버플로우 요약에서 집계.
|
|
83
|
+
|
|
84
|
+
#### A. 중복 감지
|
|
85
|
+
|
|
86
|
+
- 거의 중복된 요구사항 식별
|
|
87
|
+
- 통합을 위해 낮은 품질의 표현 표시
|
|
88
|
+
|
|
89
|
+
#### B. 모호성 감지
|
|
90
|
+
|
|
91
|
+
- 측정 가능한 기준이 없는 모호한 형용사(빠른, 확장 가능한, 안전한, 직관적인, 견고한) 플래그
|
|
92
|
+
- 해결되지 않은 플레이스홀더(TODO, TKTK, ???, `<placeholder>` 등) 플래그
|
|
93
|
+
|
|
94
|
+
#### C. 미명세
|
|
95
|
+
|
|
96
|
+
- 동사가 있지만 객체나 측정 가능한 결과가 없는 요구사항
|
|
97
|
+
- 인수 기준 정렬이 누락된 사용자 스토리
|
|
98
|
+
- 명세서/계획에 정의되지 않은 파일이나 컴포넌트를 참조하는 작업
|
|
99
|
+
|
|
100
|
+
#### D. 헌법 정렬
|
|
101
|
+
|
|
102
|
+
- MUST 원칙과 충돌하는 요구사항 또는 계획 요소
|
|
103
|
+
- 헌법에서 요구하는 섹션이나 품질 게이트 누락
|
|
104
|
+
|
|
105
|
+
#### E. 범위 갭
|
|
106
|
+
|
|
107
|
+
- 연관된 작업이 0개인 요구사항
|
|
108
|
+
- 매핑된 요구사항/스토리가 없는 작업
|
|
109
|
+
- 작업에 반영되지 않은 비기능 요구사항(예: 성능, 보안)
|
|
110
|
+
|
|
111
|
+
#### F. 불일치
|
|
112
|
+
|
|
113
|
+
- 용어 드리프트(동일한 개념이 파일에 따라 다르게 명명됨)
|
|
114
|
+
- 계획에서 참조되지만 명세서에 없는(또는 그 반대) 데이터 엔티티
|
|
115
|
+
- 작업 순서 모순(예: 의존성 노트 없이 기반 설정 작업 전 통합 작업)
|
|
116
|
+
- 충돌하는 요구사항(예: 하나는 Next.js를 요구하고 다른 하나는 Vue를 지정)
|
|
117
|
+
|
|
118
|
+
### 5. 심각도 할당
|
|
119
|
+
|
|
120
|
+
이 휴리스틱을 사용하여 발견 우선순위 지정:
|
|
121
|
+
|
|
122
|
+
- **CRITICAL**: 헌법 MUST 위반, 핵심 명세서 산출물 누락, 또는 기본 기능을 차단하는 범위가 0인 요구사항
|
|
123
|
+
- **HIGH**: 중복 또는 충돌하는 요구사항, 모호한 보안/성능 속성, 테스트 불가능한 인수 기준
|
|
124
|
+
- **MEDIUM**: 용어 드리프트, 누락된 비기능 작업 범위, 미명세 엣지 케이스
|
|
125
|
+
- **LOW**: 스타일/표현 개선, 실행 순서에 영향을 주지 않는 사소한 중복
|
|
126
|
+
|
|
127
|
+
### 6. 간결한 분석 보고서 생성
|
|
128
|
+
|
|
129
|
+
다음 구조로 마크다운 보고서 출력(파일 쓰기 없음):
|
|
130
|
+
|
|
131
|
+
## 명세서 분석 보고서
|
|
132
|
+
|
|
133
|
+
| ID | 카테고리 | 심각도 | 위치 | 요약 | 권장사항 |
|
|
134
|
+
|----|----------|--------|------|------|----------|
|
|
135
|
+
| A1 | 중복 | HIGH | spec.md:L120-134 | 두 개의 유사한 요구사항 ... | 표현 병합; 더 명확한 버전 유지 |
|
|
136
|
+
|
|
137
|
+
(발견당 한 행 추가; 카테고리 이니셜이 접두사로 붙은 안정적인 ID 생성.)
|
|
138
|
+
|
|
139
|
+
**범위 요약 테이블:**
|
|
140
|
+
|
|
141
|
+
| 요구사항 키 | 작업 있음? | 작업 ID | 참고사항 |
|
|
142
|
+
|-------------|-----------|---------|----------|
|
|
143
|
+
|
|
144
|
+
**헌법 정렬 문제:** (있는 경우)
|
|
145
|
+
|
|
146
|
+
**매핑되지 않은 작업:** (있는 경우)
|
|
147
|
+
|
|
148
|
+
**지표:**
|
|
149
|
+
|
|
150
|
+
- 총 요구사항
|
|
151
|
+
- 총 작업
|
|
152
|
+
- 범위 % (≥1 작업이 있는 요구사항)
|
|
153
|
+
- 모호성 수
|
|
154
|
+
- 중복 수
|
|
155
|
+
- Critical 문제 수
|
|
156
|
+
|
|
157
|
+
### 7. 다음 조치 제공
|
|
158
|
+
|
|
159
|
+
보고서 끝에 간결한 다음 조치 블록 출력:
|
|
160
|
+
|
|
161
|
+
- CRITICAL 문제가 있으면: `/speckit.implement` 전에 해결 권장
|
|
162
|
+
- LOW/MEDIUM만 있으면: 사용자가 진행할 수 있지만 개선 제안 제공
|
|
163
|
+
- 명시적 명령 제안 제공: 예: "정제와 함께 /speckit.specify 실행", "아키텍처 조정을 위해 /speckit.plan 실행", "'performance-metrics'에 대한 범위 추가를 위해 tasks.md 수동 편집"
|
|
164
|
+
|
|
165
|
+
### 8. 수정 제공
|
|
166
|
+
|
|
167
|
+
사용자에게 질문: "상위 N개 문제에 대한 구체적인 수정 편집을 제안해 드릴까요?" (자동으로 적용하지 마세요.)
|
|
168
|
+
|
|
169
|
+
## 운영 원칙
|
|
170
|
+
|
|
171
|
+
### 컨텍스트 효율성
|
|
172
|
+
|
|
173
|
+
- **최소한의 고신호 토큰**: 철저한 문서화가 아닌 실행 가능한 발견에 집중
|
|
174
|
+
- **점진적 공개**: 산출물을 점진적으로 로드; 모든 내용을 분석에 덤프하지 않음
|
|
175
|
+
- **토큰 효율적 출력**: 발견 테이블을 50행으로 제한; 오버플로우 요약
|
|
176
|
+
- **결정론적 결과**: 변경 없이 재실행하면 일관된 ID와 수를 생성해야 함
|
|
177
|
+
|
|
178
|
+
### 분석 가이드라인
|
|
179
|
+
|
|
180
|
+
- **파일 수정 안 함** (이것은 읽기 전용 분석)
|
|
181
|
+
- **누락된 섹션을 환각하지 않음** (없으면 정확하게 보고)
|
|
182
|
+
- **헌법 위반 우선순위 지정** (이것들은 항상 CRITICAL)
|
|
183
|
+
- **철저한 규칙보다 예시 사용** (일반적인 패턴이 아닌 구체적인 인스턴스 인용)
|
|
184
|
+
- **문제 없음을 우아하게 보고** (범위 통계와 함께 성공 보고서 출력)
|
|
185
|
+
|
|
186
|
+
## 컨텍스트
|
|
187
|
+
|
|
188
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 사용자 요구사항을 기반으로 현재 기능에 대한 사용자 정의 체크리스트를 생성합니다.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## 체크리스트 목적: "영어로 된 요구사항의 단위 테스트"
|
|
6
|
+
|
|
7
|
+
**핵심 개념**: 체크리스트는 **요구사항 작성에 대한 단위 테스트**입니다 - 주어진 도메인에서 요구사항의 품질, 명확성, 완성도를 검증합니다.
|
|
8
|
+
|
|
9
|
+
**검증/테스트용이 아님**:
|
|
10
|
+
|
|
11
|
+
- ❌ "버튼이 올바르게 클릭되는지 확인" 아님
|
|
12
|
+
- ❌ "오류 처리가 작동하는지 테스트" 아님
|
|
13
|
+
- ❌ "API가 200을 반환하는지 확인" 아님
|
|
14
|
+
- ❌ 코드/구현이 명세서와 일치하는지 확인하는 것 아님
|
|
15
|
+
|
|
16
|
+
**요구사항 품질 검증용**:
|
|
17
|
+
|
|
18
|
+
- ✅ "모든 카드 유형에 대해 시각적 계층 요구사항이 정의되어 있나요?" (완성도)
|
|
19
|
+
- ✅ "'눈에 띄는 표시'가 구체적인 크기/위치로 정량화되어 있나요?" (명확성)
|
|
20
|
+
- ✅ "모든 인터랙티브 요소에 대해 호버 상태 요구사항이 일관되게 정의되어 있나요?" (일관성)
|
|
21
|
+
- ✅ "키보드 탐색에 대한 접근성 요구사항이 정의되어 있나요?" (범위)
|
|
22
|
+
- ✅ "로고 이미지 로드 실패 시 어떻게 되는지 명세서에 정의되어 있나요?" (엣지 케이스)
|
|
23
|
+
|
|
24
|
+
**비유**: 명세서가 영어로 작성된 코드라면, 체크리스트는 그 단위 테스트 스위트입니다. 구현이 작동하는지가 아니라 요구사항이 잘 작성되었는지, 완전한지, 명확한지, 구현 준비가 되었는지를 테스트하는 것입니다.
|
|
25
|
+
|
|
26
|
+
## 언어 설정
|
|
27
|
+
|
|
28
|
+
모든 출력과 사용자와의 대화는 **한국어**로 진행합니다.
|
|
29
|
+
|
|
30
|
+
## 사용자 입력
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
$ARGUMENTS
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
입력이 비어있지 않다면 진행하기 전에 **반드시** 사용자 입력을 고려해야 합니다.
|
|
37
|
+
|
|
38
|
+
## 실행 단계
|
|
39
|
+
|
|
40
|
+
1. **설정**: 저장소 루트에서 `.specify/scripts/bash/check-prerequisites.sh --json`을 실행하고 JSON에서 FEATURE_DIR과 AVAILABLE_DOCS 목록을 파싱합니다.
|
|
41
|
+
- 모든 파일 경로는 절대 경로여야 합니다.
|
|
42
|
+
- "I'm Groot"와 같이 인수에 작은따옴표가 있는 경우 이스케이프 구문 사용: 예: 'I'\''m Groot' (또는 가능하면 큰따옴표: "I'm Groot").
|
|
43
|
+
|
|
44
|
+
2. **의도 명확화 (동적)**: 최대 3개의 초기 컨텍스트 명확화 질문을 도출합니다 (미리 정해진 카탈로그 없음). 반드시:
|
|
45
|
+
- 사용자의 표현 + spec/plan/tasks에서 추출된 신호로부터 생성
|
|
46
|
+
- 체크리스트 내용을 실질적으로 변경하는 정보에 대해서만 질문
|
|
47
|
+
- `$ARGUMENTS`에서 이미 명확한 경우 개별적으로 건너뛰기
|
|
48
|
+
- 넓이보다 정확성 선호
|
|
49
|
+
|
|
50
|
+
생성 알고리즘:
|
|
51
|
+
1. 신호 추출: 기능 도메인 키워드 (예: auth, latency, UX, API), 리스크 지표 ("critical", "must", "compliance"), 이해관계자 힌트 ("QA", "review", "security team"), 명시적 산출물 ("a11y", "rollback", "contracts").
|
|
52
|
+
2. 신호를 관련성 순으로 순위 매긴 후보 포커스 영역으로 클러스터링 (최대 4개).
|
|
53
|
+
3. 명시적이지 않은 경우 가능한 대상 및 시점 식별 (작성자, 리뷰어, QA, 릴리스).
|
|
54
|
+
4. 누락된 차원 감지: 범위 폭, 깊이/엄격성, 리스크 강조, 제외 경계, 측정 가능한 인수 기준.
|
|
55
|
+
5. 다음 아키타입에서 선택한 질문 작성:
|
|
56
|
+
- 범위 정제 (예: "이것이 X, Y와의 통합 터치포인트를 포함해야 하나요, 아니면 로컬 모듈 정확성에 한정해야 하나요?")
|
|
57
|
+
- 리스크 우선순위 (예: "이 잠재적 리스크 영역 중 어느 것이 필수 게이팅 체크를 받아야 하나요?")
|
|
58
|
+
- 깊이 조정 (예: "이것이 가벼운 사전 커밋 정상성 목록인가요, 아니면 공식 릴리스 게이트인가요?")
|
|
59
|
+
- 대상 프레이밍 (예: "이것이 작성자만 사용하나요, 아니면 PR 리뷰 중 동료도 사용하나요?")
|
|
60
|
+
- 경계 제외 (예: "이번 라운드에서 성능 튜닝 항목을 명시적으로 제외해야 하나요?")
|
|
61
|
+
- 시나리오 클래스 갭 (예: "복구 흐름이 감지되지 않음—롤백/부분 실패 경로가 범위에 포함되나요?")
|
|
62
|
+
|
|
63
|
+
질문 포맷팅 규칙:
|
|
64
|
+
- 옵션을 제시하는 경우 열이 있는 간결한 테이블 생성: 옵션 | 후보 | 중요한 이유
|
|
65
|
+
- 최대 A–E 옵션으로 제한; 자유 형식 답변이 더 명확하면 테이블 생략
|
|
66
|
+
- 사용자가 이미 말한 것을 다시 말하게 하지 않음
|
|
67
|
+
- 추측성 카테고리 피하기 (환각 없음). 불확실하면 명시적으로 질문: "X가 범위에 포함되는지 확인해 주세요."
|
|
68
|
+
|
|
69
|
+
상호작용이 불가능할 때 기본값:
|
|
70
|
+
- 깊이: 표준
|
|
71
|
+
- 대상: 코드 관련이면 리뷰어 (PR); 그렇지 않으면 작성자
|
|
72
|
+
- 포커스: 상위 2개 관련성 클러스터
|
|
73
|
+
|
|
74
|
+
질문 출력 (Q1/Q2/Q3 레이블). 답변 후: 2개 이상의 시나리오 클래스 (대안 / 예외 / 복구 / 비기능 도메인)가 불명확하면 각각 한 줄 정당화와 함께 최대 2개의 추가 후속 질문 (Q4/Q5)을 할 수 있음 (예: "해결되지 않은 복구 경로 리스크"). 총 5개 질문을 초과하지 않음. 사용자가 더 이상 원하지 않는다고 명시적으로 거절하면 에스컬레이션 건너뛰기.
|
|
75
|
+
|
|
76
|
+
3. **사용자 요청 이해**: `$ARGUMENTS` + 명확화 답변 결합:
|
|
77
|
+
- 체크리스트 테마 도출 (예: security, review, deploy, ux)
|
|
78
|
+
- 사용자가 언급한 명시적 필수 항목 통합
|
|
79
|
+
- 포커스 선택을 카테고리 스캐폴딩에 매핑
|
|
80
|
+
- spec/plan/tasks에서 누락된 컨텍스트 추론 (환각하지 않음)
|
|
81
|
+
|
|
82
|
+
4. **기능 컨텍스트 로드**: FEATURE_DIR에서 읽기:
|
|
83
|
+
- spec.md: 기능 요구사항과 범위
|
|
84
|
+
- plan.md (있는 경우): 기술 세부사항, 의존성
|
|
85
|
+
- tasks.md (있는 경우): 구현 작업
|
|
86
|
+
|
|
87
|
+
**컨텍스트 로딩 전략**:
|
|
88
|
+
- 활성 포커스 영역과 관련된 필요한 부분만 로드 (전체 파일 덤프 피하기)
|
|
89
|
+
- 긴 섹션을 간결한 시나리오/요구사항 불릿으로 요약 선호
|
|
90
|
+
- 점진적 공개 사용: 갭이 감지된 경우에만 후속 검색 추가
|
|
91
|
+
- 소스 문서가 크면 원시 텍스트 임베딩 대신 중간 요약 항목 생성
|
|
92
|
+
|
|
93
|
+
5. **체크리스트 생성** - "요구사항에 대한 단위 테스트" 생성:
|
|
94
|
+
- `FEATURE_DIR/checklists/` 디렉토리가 없으면 생성
|
|
95
|
+
- 고유한 체크리스트 파일명 생성:
|
|
96
|
+
- 도메인에 기반한 짧고 설명적인 이름 사용 (예: `ux.md`, `api.md`, `security.md`)
|
|
97
|
+
- 형식: `[domain].md`
|
|
98
|
+
- 파일이 존재하면 기존 파일에 추가
|
|
99
|
+
- CHK001부터 순차적으로 항목 번호 지정
|
|
100
|
+
- 각 `/speckit.checklist` 실행은 새 파일 생성 (기존 체크리스트 덮어쓰지 않음)
|
|
101
|
+
|
|
102
|
+
**핵심 원칙 - 구현이 아닌 요구사항 테스트**:
|
|
103
|
+
모든 체크리스트 항목은 요구사항 자체를 다음에 대해 평가해야 함:
|
|
104
|
+
- **완성도**: 필요한 모든 요구사항이 존재하는가?
|
|
105
|
+
- **명확성**: 요구사항이 모호하지 않고 구체적인가?
|
|
106
|
+
- **일관성**: 요구사항이 서로 일치하는가?
|
|
107
|
+
- **측정 가능성**: 요구사항을 객관적으로 검증할 수 있는가?
|
|
108
|
+
- **범위**: 모든 시나리오/엣지 케이스가 다뤄졌는가?
|
|
109
|
+
|
|
110
|
+
**카테고리 구조** - 요구사항 품질 차원별 그룹화:
|
|
111
|
+
- **요구사항 완성도** (필요한 모든 요구사항이 문서화되었는가?)
|
|
112
|
+
- **요구사항 명확성** (요구사항이 구체적이고 모호하지 않은가?)
|
|
113
|
+
- **요구사항 일관성** (요구사항이 충돌 없이 일치하는가?)
|
|
114
|
+
- **인수 기준 품질** (성공 기준이 측정 가능한가?)
|
|
115
|
+
- **시나리오 범위** (모든 흐름/케이스가 다뤄졌는가?)
|
|
116
|
+
- **엣지 케이스 범위** (경계 조건이 정의되었는가?)
|
|
117
|
+
- **비기능 요구사항** (성능, 보안, 접근성 등 - 명시되었는가?)
|
|
118
|
+
- **의존성 및 가정** (문서화되고 검증되었는가?)
|
|
119
|
+
- **모호성 및 충돌** (명확화가 필요한 것은?)
|
|
120
|
+
|
|
121
|
+
**체크리스트 항목 작성 방법 - "영어로 된 단위 테스트"**:
|
|
122
|
+
|
|
123
|
+
❌ **잘못됨** (구현 테스트):
|
|
124
|
+
- "랜딩 페이지가 3개의 에피소드 카드를 표시하는지 확인"
|
|
125
|
+
- "데스크톱에서 호버 상태가 작동하는지 테스트"
|
|
126
|
+
- "로고 클릭이 홈으로 이동하는지 확인"
|
|
127
|
+
|
|
128
|
+
✅ **올바름** (요구사항 품질 테스트):
|
|
129
|
+
- "추천 에피소드의 정확한 개수와 레이아웃이 명시되어 있나요?" [완성도]
|
|
130
|
+
- "'눈에 띄는 표시'가 구체적인 크기/위치로 정량화되어 있나요?" [명확성]
|
|
131
|
+
- "모든 인터랙티브 요소에 대해 호버 상태 요구사항이 일관되게 정의되어 있나요?" [일관성]
|
|
132
|
+
- "모든 인터랙티브 UI에 대해 키보드 탐색 요구사항이 정의되어 있나요?" [범위]
|
|
133
|
+
- "로고 이미지 로드 실패 시 폴백 동작이 명시되어 있나요?" [엣지 케이스]
|
|
134
|
+
- "비동기 에피소드 데이터에 대한 로딩 상태가 정의되어 있나요?" [완성도]
|
|
135
|
+
- "경쟁하는 UI 요소에 대한 시각적 계층이 명세서에 정의되어 있나요?" [명확성]
|
|
136
|
+
|
|
137
|
+
**항목 구조**:
|
|
138
|
+
각 항목은 다음 패턴을 따라야 함:
|
|
139
|
+
- 요구사항 품질에 대해 묻는 질문 형식
|
|
140
|
+
- 명세서/계획에 작성된 것 (또는 작성되지 않은 것)에 집중
|
|
141
|
+
- 대괄호에 품질 차원 포함 [완성도/명확성/일관성/등]
|
|
142
|
+
- 기존 요구사항 확인 시 명세서 섹션 참조 `[Spec §X.Y]`
|
|
143
|
+
- 누락된 요구사항 확인 시 `[Gap]` 마커 사용
|
|
144
|
+
|
|
145
|
+
**품질 차원별 예시**:
|
|
146
|
+
|
|
147
|
+
완성도:
|
|
148
|
+
- "모든 API 실패 모드에 대해 오류 처리 요구사항이 정의되어 있나요? [Gap]"
|
|
149
|
+
- "모든 인터랙티브 요소에 대해 접근성 요구사항이 명시되어 있나요? [완성도]"
|
|
150
|
+
- "반응형 레이아웃에 대한 모바일 브레이크포인트 요구사항이 정의되어 있나요? [Gap]"
|
|
151
|
+
|
|
152
|
+
명확성:
|
|
153
|
+
- "'빠른 로딩'이 구체적인 타이밍 임계값으로 정량화되어 있나요? [명확성, Spec §NFR-2]"
|
|
154
|
+
- "'관련 에피소드' 선택 기준이 명시적으로 정의되어 있나요? [명확성, Spec §FR-5]"
|
|
155
|
+
- "'눈에 띄는'이 측정 가능한 시각적 속성으로 정의되어 있나요? [모호성, Spec §FR-4]"
|
|
156
|
+
|
|
157
|
+
일관성:
|
|
158
|
+
- "모든 페이지에 걸쳐 탐색 요구사항이 일치하나요? [일관성, Spec §FR-10]"
|
|
159
|
+
- "랜딩 페이지와 상세 페이지 간 카드 컴포넌트 요구사항이 일관되나요? [일관성]"
|
|
160
|
+
|
|
161
|
+
범위:
|
|
162
|
+
- "제로 상태 시나리오 (에피소드 없음)에 대한 요구사항이 정의되어 있나요? [범위, 엣지 케이스]"
|
|
163
|
+
- "동시 사용자 상호작용 시나리오가 다뤄졌나요? [범위, Gap]"
|
|
164
|
+
- "부분 데이터 로딩 실패에 대한 요구사항이 명시되어 있나요? [범위, 예외 흐름]"
|
|
165
|
+
|
|
166
|
+
측정 가능성:
|
|
167
|
+
- "시각적 계층 요구사항이 측정/테스트 가능한가요? [인수 기준, Spec §FR-1]"
|
|
168
|
+
- "'균형 잡힌 시각적 가중치'를 객관적으로 검증할 수 있나요? [측정 가능성, Spec §FR-2]"
|
|
169
|
+
|
|
170
|
+
**시나리오 분류 및 범위** (요구사항 품질 포커스):
|
|
171
|
+
- 다음에 대한 요구사항이 있는지 확인: 주요, 대안, 예외/오류, 복구, 비기능 시나리오
|
|
172
|
+
- 각 시나리오 클래스에 대해 질문: "[시나리오 유형] 요구사항이 완전하고 명확하고 일관되나요?"
|
|
173
|
+
- 시나리오 클래스가 누락된 경우: "[시나리오 유형] 요구사항이 의도적으로 제외되었나요 아니면 누락되었나요? [Gap]"
|
|
174
|
+
- 상태 변경이 발생하면 복원력/롤백 포함: "마이그레이션 실패에 대한 롤백 요구사항이 정의되어 있나요? [Gap]"
|
|
175
|
+
|
|
176
|
+
**추적성 요구사항**:
|
|
177
|
+
- 최소: 항목의 ≥80%가 최소 하나의 추적성 참조를 포함해야 함
|
|
178
|
+
- 각 항목은 명세서 섹션 `[Spec §X.Y]`을 참조하거나 마커 사용: `[Gap]`, `[모호성]`, `[충돌]`, `[가정]`
|
|
179
|
+
- ID 시스템이 없는 경우: "요구사항 및 인수 기준 ID 체계가 수립되어 있나요? [추적성]"
|
|
180
|
+
|
|
181
|
+
**문제 표면화 및 해결** (요구사항 품질 문제):
|
|
182
|
+
요구사항 자체에 대해 질문:
|
|
183
|
+
- 모호성: "'빠른'이라는 용어가 구체적인 지표로 정량화되어 있나요? [모호성, Spec §NFR-1]"
|
|
184
|
+
- 충돌: "§FR-10과 §FR-10a 사이에 탐색 요구사항이 충돌하나요? [충돌]"
|
|
185
|
+
- 가정: "'항상 사용 가능한 팟캐스트 API' 가정이 검증되었나요? [가정]"
|
|
186
|
+
- 의존성: "외부 팟캐스트 API 요구사항이 문서화되어 있나요? [의존성, Gap]"
|
|
187
|
+
- 누락된 정의: "'시각적 계층'이 측정 가능한 기준으로 정의되어 있나요? [Gap]"
|
|
188
|
+
|
|
189
|
+
**내용 통합**:
|
|
190
|
+
- 소프트 캡: 원시 후보 항목 > 40개이면 리스크/영향도로 우선순위 지정
|
|
191
|
+
- 같은 요구사항 측면을 확인하는 거의 중복된 것 병합
|
|
192
|
+
- 저영향 엣지 케이스 >5개이면 하나의 항목 생성: "요구사항에서 엣지 케이스 X, Y, Z가 다뤄졌나요? [범위]"
|
|
193
|
+
|
|
194
|
+
**🚫 절대 금지** - 이것들은 요구사항 테스트가 아닌 구현 테스트가 됨:
|
|
195
|
+
- ❌ "확인", "테스트", "검증", "체크" + 구현 동작으로 시작하는 모든 항목
|
|
196
|
+
- ❌ 코드 실행, 사용자 동작, 시스템 동작에 대한 참조
|
|
197
|
+
- ❌ "올바르게 표시됨", "제대로 작동함", "예상대로 기능함"
|
|
198
|
+
- ❌ "클릭", "탐색", "렌더링", "로드", "실행"
|
|
199
|
+
- ❌ 테스트 케이스, 테스트 계획, QA 절차
|
|
200
|
+
- ❌ 구현 세부사항 (프레임워크, API, 알고리즘)
|
|
201
|
+
|
|
202
|
+
**✅ 필수 패턴** - 요구사항 품질을 테스트:
|
|
203
|
+
- ✅ "[시나리오]에 대해 [요구사항 유형]이 정의/명시/문서화되어 있나요?"
|
|
204
|
+
- ✅ "[모호한 용어]가 구체적인 기준으로 정량화/명확화되어 있나요?"
|
|
205
|
+
- ✅ "[섹션 A]와 [섹션 B] 사이에 요구사항이 일관되나요?"
|
|
206
|
+
- ✅ "[요구사항]을 객관적으로 측정/검증할 수 있나요?"
|
|
207
|
+
- ✅ "요구사항에서 [엣지 케이스/시나리오]가 다뤄졌나요?"
|
|
208
|
+
- ✅ "명세서에 [누락된 측면]이 정의되어 있나요?"
|
|
209
|
+
|
|
210
|
+
6. **구조 참조**: `.specify/templates/checklist-template.md`의 표준 템플릿을 따라 제목, 메타 섹션, 카테고리 제목, ID 포맷팅을 사용하여 체크리스트 생성. 템플릿을 사용할 수 없으면 다음 사용: H1 제목, purpose/created 메타 라인, `##` 카테고리 섹션에 CHK001부터 시작하는 전역 증가 ID로 `- [ ] CHK### <요구사항 항목>` 라인 포함.
|
|
211
|
+
|
|
212
|
+
7. **보고**: 생성된 체크리스트의 전체 경로, 항목 수 출력하고 각 실행이 새 파일을 생성한다는 것을 사용자에게 상기시키기. 요약:
|
|
213
|
+
- 선택된 포커스 영역
|
|
214
|
+
- 깊이 수준
|
|
215
|
+
- 대상자/시점
|
|
216
|
+
- 통합된 명시적 사용자 지정 필수 항목
|
|
217
|
+
|
|
218
|
+
**중요**: 각 `/speckit.checklist` 명령 호출은 파일이 이미 존재하지 않는 한 짧고 설명적인 이름으로 체크리스트 파일을 생성합니다. 이를 통해:
|
|
219
|
+
|
|
220
|
+
- 다른 유형의 여러 체크리스트 (예: `ux.md`, `test.md`, `security.md`)
|
|
221
|
+
- 체크리스트 목적을 나타내는 간단하고 기억하기 쉬운 파일명
|
|
222
|
+
- `checklists/` 폴더에서 쉬운 식별 및 탐색
|
|
223
|
+
|
|
224
|
+
혼란을 피하려면 설명적인 유형을 사용하고 완료되면 구식 체크리스트를 정리하세요.
|
|
225
|
+
|
|
226
|
+
## 체크리스트 유형 예시 및 샘플 항목
|
|
227
|
+
|
|
228
|
+
**UX 요구사항 품질:** `ux.md`
|
|
229
|
+
|
|
230
|
+
샘플 항목 (구현이 아닌 요구사항 테스트):
|
|
231
|
+
|
|
232
|
+
- "시각적 계층 요구사항이 측정 가능한 기준으로 정의되어 있나요? [명확성, Spec §FR-1]"
|
|
233
|
+
- "UI 요소의 개수와 위치가 명시적으로 지정되어 있나요? [완성도, Spec §FR-1]"
|
|
234
|
+
- "상호작용 상태 요구사항 (호버, 포커스, 활성)이 일관되게 정의되어 있나요? [일관성]"
|
|
235
|
+
- "모든 인터랙티브 요소에 대해 접근성 요구사항이 명시되어 있나요? [범위, Gap]"
|
|
236
|
+
- "이미지 로드 실패 시 폴백 동작이 정의되어 있나요? [엣지 케이스, Gap]"
|
|
237
|
+
- "'눈에 띄는 표시'를 객관적으로 측정할 수 있나요? [측정 가능성, Spec §FR-4]"
|
|
238
|
+
|
|
239
|
+
**API 요구사항 품질:** `api.md`
|
|
240
|
+
|
|
241
|
+
샘플 항목:
|
|
242
|
+
|
|
243
|
+
- "모든 실패 시나리오에 대해 오류 응답 형식이 명시되어 있나요? [완성도]"
|
|
244
|
+
- "속도 제한 요구사항이 구체적인 임계값으로 정량화되어 있나요? [명확성]"
|
|
245
|
+
- "모든 엔드포인트에 대해 인증 요구사항이 일관되나요? [일관성]"
|
|
246
|
+
- "외부 의존성에 대한 재시도/타임아웃 요구사항이 정의되어 있나요? [범위, Gap]"
|
|
247
|
+
- "버전 관리 전략이 요구사항에 문서화되어 있나요? [Gap]"
|
|
248
|
+
|
|
249
|
+
**성능 요구사항 품질:** `performance.md`
|
|
250
|
+
|
|
251
|
+
샘플 항목:
|
|
252
|
+
|
|
253
|
+
- "성능 요구사항이 구체적인 지표로 정량화되어 있나요? [명확성]"
|
|
254
|
+
- "모든 중요한 사용자 여정에 대해 성능 목표가 정의되어 있나요? [범위]"
|
|
255
|
+
- "다른 부하 조건에서의 성능 요구사항이 명시되어 있나요? [완성도]"
|
|
256
|
+
- "성능 요구사항을 객관적으로 측정할 수 있나요? [측정 가능성]"
|
|
257
|
+
- "고부하 시나리오에 대한 저하 요구사항이 정의되어 있나요? [엣지 케이스, Gap]"
|
|
258
|
+
|
|
259
|
+
**보안 요구사항 품질:** `security.md`
|
|
260
|
+
|
|
261
|
+
샘플 항목:
|
|
262
|
+
|
|
263
|
+
- "모든 보호된 리소스에 대해 인증 요구사항이 명시되어 있나요? [범위]"
|
|
264
|
+
- "민감한 정보에 대한 데이터 보호 요구사항이 정의되어 있나요? [완성도]"
|
|
265
|
+
- "위협 모델이 문서화되고 요구사항이 그에 맞춰져 있나요? [추적성]"
|
|
266
|
+
- "보안 요구사항이 컴플라이언스 의무와 일치하나요? [일관성]"
|
|
267
|
+
- "보안 실패/침해 대응 요구사항이 정의되어 있나요? [Gap, 예외 흐름]"
|
|
268
|
+
|
|
269
|
+
## 반면교사: 하지 말아야 할 것
|
|
270
|
+
|
|
271
|
+
**❌ 잘못됨 - 구현을 테스트함, 요구사항이 아님:**
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
- [ ] CHK001 - 랜딩 페이지가 3개의 에피소드 카드를 표시하는지 확인 [Spec §FR-001]
|
|
275
|
+
- [ ] CHK002 - 데스크톱에서 호버 상태가 올바르게 작동하는지 테스트 [Spec §FR-003]
|
|
276
|
+
- [ ] CHK003 - 로고 클릭이 홈 페이지로 이동하는지 확인 [Spec §FR-010]
|
|
277
|
+
- [ ] CHK004 - 관련 에피소드 섹션이 3-5개 항목을 표시하는지 확인 [Spec §FR-005]
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
**✅ 올바름 - 요구사항 품질을 테스트함:**
|
|
281
|
+
|
|
282
|
+
```markdown
|
|
283
|
+
- [ ] CHK001 - 추천 에피소드의 개수와 레이아웃이 명시적으로 지정되어 있나요? [완성도, Spec §FR-001]
|
|
284
|
+
- [ ] CHK002 - 모든 인터랙티브 요소에 대해 호버 상태 요구사항이 일관되게 정의되어 있나요? [일관성, Spec §FR-003]
|
|
285
|
+
- [ ] CHK003 - 모든 클릭 가능한 브랜드 요소에 대해 탐색 요구사항이 명확한가요? [명확성, Spec §FR-010]
|
|
286
|
+
- [ ] CHK004 - 관련 에피소드 선택 기준이 문서화되어 있나요? [Gap, Spec §FR-005]
|
|
287
|
+
- [ ] CHK005 - 비동기 에피소드 데이터에 대한 로딩 상태 요구사항이 정의되어 있나요? [Gap]
|
|
288
|
+
- [ ] CHK006 - "시각적 계층" 요구사항을 객관적으로 측정할 수 있나요? [측정 가능성, Spec §FR-001]
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**주요 차이점:**
|
|
292
|
+
|
|
293
|
+
- 잘못됨: 시스템이 올바르게 작동하는지 테스트
|
|
294
|
+
- 올바름: 요구사항이 올바르게 작성되었는지 테스트
|
|
295
|
+
- 잘못됨: 동작 검증
|
|
296
|
+
- 올바름: 요구사항 품질 검증
|
|
297
|
+
- 잘못됨: "X를 하나요?"
|
|
298
|
+
- 올바름: "X가 명확히 명시되어 있나요?"
|