sddflow 3.0.2__tar.gz → 3.4.2__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.
- sddflow-3.0.2/README.md → sddflow-3.4.2/PKG-INFO +107 -23
- sddflow-3.0.2/PKG-INFO → sddflow-3.4.2/README.md +71 -59
- {sddflow-3.0.2 → sddflow-3.4.2}/pyproject.toml +5 -5
- sddflow-3.4.2/sdd/__init__.py +1 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/__main__.py +6 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/config.py +53 -18
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/confluence.py +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/cr.py +7 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/dashboard.py +5 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/dashboard_static/page.html +3 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/dashboard_static/style.css +9 -1
- sddflow-3.4.2/sdd/commands/doctor.py +152 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/init.py +200 -121
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/jira.py +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/pr.py +1 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/review.py +23 -9
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/upgrade.py +515 -11
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/manifest.yml +2 -1
- {sddflow-3.0.2/sdd/packs/sdd-frontend-spa → sddflow-3.4.2/sdd/packs/sdd-backend-service}/FLOW-ROLES-GATES.md +1 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/QUICKSTART.md +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/README.md +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/manifest.yml +2 -1
- {sddflow-3.0.2/sdd/packs/sdd-mobile → sddflow-3.4.2/sdd/packs/sdd-frontend-spa}/FLOW-ROLES-GATES.md +1 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/QUICKSTART.md +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/README.md +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/manifest.yml +2 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/FLOW-ROLES-GATES.md +1 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/QUICKSTART.md +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/README.md +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.specify/manifest.yml +1 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/manifest.yml +2 -1
- {sddflow-3.0.2/sdd/packs/sdd-backend-service → sddflow-3.4.2/sdd/packs/sdd-mobile}/FLOW-ROLES-GATES.md +1 -1
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/QUICKSTART.md +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/README.md +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/manifest.yml +2 -1
- sddflow-3.4.2/sdd/packs/sdd-universal/FLOW-ROLES-GATES.md +198 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/QUICKSTART.md +2 -2
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/README.md +3 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/atlassian_auth.py +17 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/confluence_client.py +15 -3
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/jira_client.py +17 -4
- sddflow-3.4.2/sdd/utils/managed_files.py +297 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/status.py +127 -67
- sddflow-3.0.2/sdd/__init__.py +0 -1
- sddflow-3.0.2/sdd/packs/sdd-universal/FLOW-ROLES-GATES.md +0 -198
- {sddflow-3.0.2 → sddflow-3.4.2}/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/__init__.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/dashboard_static/app.js +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/dashboard_static/theme.js +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/feature.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/hooks.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/project_type.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/commands/token_log.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/address-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/analyze.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/ava.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/bug-assess.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/bug-fix.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/change.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/check-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/checklist.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/clarify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/jira-push.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/kai.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/leo.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/maya.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/morgan.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/orchestrate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/plan-adr.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/plan-arch.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/plan-design.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/plan-hld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/plan-lld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/pre-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/quinn.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/release.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/rex.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/riley.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/specify-brd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/specify-doc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/specify-srd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/specify-uc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/submit-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/taskstoissues.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.claude/commands/validate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/instructions/api.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/instructions/domain.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/instructions/java.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/instructions/tests.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/ava.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/change.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/clarify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/kai.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/leo.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/maya.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/release.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/rex.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/riley.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/prompts/validate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.github/workflows/quality-gate.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.gitlab-ci.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/integrations.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/memory/change-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/memory/roles.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/memory/summary-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/adr-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/analyze-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/api-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/arch-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/brd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/changeset-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/checklist-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/clarify-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/data-model-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/docker-config-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/feature-story-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/hld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/investigation-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/jira-export-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/k8s-manifest-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/lld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/openapi-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/plan-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/release-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/resilience-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/runbook-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/security-design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/srd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/token-usage-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/use-cases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.specify/templates/validate-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.vscode/extensions.json +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/CHANGE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/CLAUDE.local.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/HOW-TO-USE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/PROMPT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/azure-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/bitbucket-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-backend-service/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/address-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/analyze.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/ava.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-assess.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/bug-fix.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/change.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/check-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/checklist.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/clarify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/jira-push.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/kai.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/leo.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/maya.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/morgan.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/orchestrate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-adr.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-arch.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-design.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-hld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/plan-lld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/pre-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/quinn.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/release.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/rex.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/riley.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-brd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-doc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-srd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/specify-uc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/submit-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/taskstoissues.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.claude/commands/validate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/instructions/components.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/instructions/services.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/instructions/tests.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/ava.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/change.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/clarify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/kai.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/leo.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/maya.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/release.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/rex.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/riley.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/prompts/validate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.github/workflows/quality-gate.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.gitlab-ci.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/integrations.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/memory/change-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/memory/roles.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/memory/summary-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/adr-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/analyze-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/api-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/arch-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/brd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/changeset-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/checklist-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/clarify-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/component-library-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/component-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/data-model-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/docker-config-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/feature-story-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/hld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/investigation-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/jira-export-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/lld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/plan-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/release-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/resilience-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/runbook-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/security-design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/srd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/token-usage-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/use-cases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.specify/templates/validate-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.vscode/extensions.json +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/CHANGE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/CLAUDE.local.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/HOW-TO-USE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/PROMPT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/azure-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/bitbucket-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-frontend-spa/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/address-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/analyze.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/ava.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/bug-assess.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/bug-fix.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/change.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/check-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/checklist.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/clarify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/jira-push.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/kai.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/leo.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/maya.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/morgan.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/orchestrate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/plan-adr.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/plan-arch.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/plan-design.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/plan-hld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/plan-lld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/pre-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/quinn.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/release.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/rex.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/riley.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/specify-brd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/specify-doc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/specify-srd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/specify-uc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/submit-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/taskstoissues.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.claude/commands/validate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/instructions/backend-tests.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/instructions/components.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/instructions/domain.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/instructions/frontend-services.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/instructions/java.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/ava.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/change.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/clarify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/kai.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/leo.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/maya.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/release.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/rex.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/riley.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/prompts/validate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.github/workflows/quality-gate.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.gitlab-ci.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/integrations.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/memory/change-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/memory/roles.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/memory/summary-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/adr-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/analyze-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/api-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/arch-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/brd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/changeset-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/checklist-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/clarify-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/component-library-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/component-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/data-model-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/docker-config-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/feature-story-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/hld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/investigation-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/jira-export-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/lld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/openapi-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/plan-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/release-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/resilience-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/runbook-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/screen-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/security-design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/srd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/token-usage-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/use-cases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.specify/templates/validate-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.vscode/extensions.json +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/CHANGE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/CLAUDE.local.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/HOW-TO-USE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/PROMPT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/azure-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/bitbucket-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-fullstack/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/QUICKSTART.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/README.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-micro/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/address-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/analyze.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/ava.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/bug-assess.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/bug-fix.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/change.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/check-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/checklist.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/clarify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/jira-push.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/kai.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/leo.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/maya.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/morgan.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/orchestrate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/plan-adr.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/plan-arch.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/plan-design.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/plan-hld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/plan-lld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/pre-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/quinn.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/release.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/rex.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/riley.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/specify-brd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/specify-doc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/specify-srd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/specify-uc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/submit-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/taskstoissues.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.claude/commands/validate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/instructions/screens.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/instructions/services.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/instructions/tests.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/ava.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/change.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/clarify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/kai.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/leo.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/maya.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/release.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/rex.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/riley.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/prompts/validate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.github/workflows/quality-gate.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.gitlab-ci.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/integrations.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/memory/change-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/memory/roles.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/memory/summary-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/adr-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/analyze-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/api-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/arch-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/brd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/changeset-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/checklist-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/clarify-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/data-model-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/docker-config-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/feature-story-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/hld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/investigation-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/jira-export-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/lld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/plan-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/release-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/resilience-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/runbook-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/screen-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/security-design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/srd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/token-usage-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/use-cases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.specify/templates/validate-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.vscode/extensions.json +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/CHANGE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/CLAUDE.local.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/HOW-TO-USE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/PROMPT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/azure-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/bitbucket-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-mobile/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/address-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/analyze.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/ava.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/bug-assess.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/bug-fix.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/change.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/check-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/checklist.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/clarify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/create-context.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/implement.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/jira-push.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/kai.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/leo.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/maya.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/morgan.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/orchestrate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/plan-adr.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/plan-arch.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/plan-design.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/plan-hld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/plan-lld.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/pre-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/quinn.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/release.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/rex.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/riley.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/specify-brd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/specify-doc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/specify-srd.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/specify-uc.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/specify.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/start.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/submit-review.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/task.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/taskstoissues.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.claude/commands/validate.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.cursor/rules/sdd-framework.mdc +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/copilot-instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/instructions/domain.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/instructions/entrypoints.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/instructions/tests.instructions.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/address-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/analyze.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/ava.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/bug-assess.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/bug-fix.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/change.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/check-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/checklist.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/clarify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/create-context.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/implement.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/jira-push.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/kai.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/leo.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/maya.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/morgan.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/orchestrate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/plan-adr.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/plan-arch.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/plan-design.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/plan-hld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/plan-lld.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/pre-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/quinn.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/release.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/rex.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/riley.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/specify-brd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/specify-doc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/specify-srd.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/specify-uc.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/specify.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/submit-review.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/task.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/taskstoissues.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/prompts/validate.prompt.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.github/workflows/quality-gate.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.gitignore +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.gitlab-ci.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/contexts/CONTEXT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/integrations.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/memory/change-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/memory/constitution.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/memory/roles.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/memory/summary-rules.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/memory/token-pricing.yml.example +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/adr-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/analyze-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/api-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/arch-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/brd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/changeset-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/checklist-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/clarify-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/component-library-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/component-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/constitution-amendment-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/context-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/data-model-template-frontend.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/data-model-template-mobile.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/data-model-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/docker-config-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/feature-story-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/hld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/investigation-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/jira-export-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/k8s-manifest-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/lld-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/openapi-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/plan-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/qa-testcases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/release-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/resilience-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/runbook-template-frontend.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/runbook-template-mobile.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/runbook-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/screen-spec-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/security-design-template-frontend.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/security-design-template-mobile.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/security-design-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/srd-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/tasks-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/token-usage-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/use-cases-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/ux-flow-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.specify/templates/validate-template.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.vscode/extensions.json +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/.windsurfrules +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/CHANGE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/CLAUDE.local.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/CLAUDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/HOW-TO-USE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/PROMPT-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/SDLC-COMPLETE-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/WHY-SDD.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/azure-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/bitbucket-pipelines.yml +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/docs/SUMMARY-GUIDE.md +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/setup.ps1 +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/packs/sdd-universal/setup.sh +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/__init__.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/atomic_write.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/cf_to_md.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/claude_code_transcript.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/dashboard_comments.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/detect.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/git_host.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/integrations.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/manifest.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/md_to_cf.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/mermaid_render.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/project_type.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/scaffold.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/sdd_parser.py +0 -0
- {sddflow-3.0.2 → sddflow-3.4.2}/sdd/utils/validate.py +0 -0
|
@@ -1,10 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: sddflow
|
|
3
|
+
Version: 3.4.2
|
|
4
|
+
Summary: Spec-Driven Development CLI for AI coding agents — SDLC workflows with Jira/Confluence sync, multi-host PR automation, and live progress dashboards
|
|
5
|
+
Project-URL: Homepage, https://github.com/sunil1983us/sddflow
|
|
6
|
+
Project-URL: Repository, https://github.com/sunil1983us/sddflow
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/sunil1983us/sddflow/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/sunil1983us/sddflow/blob/main/CHANGELOG.md
|
|
9
|
+
Author-email: Sunil Kumar <sunil1983.us@gmail.com>
|
|
10
|
+
License: MIT
|
|
11
|
+
Keywords: ai,ai-agent,atlassian,claude,claude-code,code-review,confluence,jira,llm,pull-request,requirements,sdd,sdlc,spec-driven-development,specification
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
+
Classifier: Topic :: Software Development
|
|
24
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Requires-Dist: click>=8.0
|
|
28
|
+
Requires-Dist: keyring>=24.0
|
|
29
|
+
Requires-Dist: pyyaml>=6.0
|
|
30
|
+
Requires-Dist: questionary>=2.0
|
|
31
|
+
Requires-Dist: requests>=2.28
|
|
32
|
+
Requires-Dist: rich>=13.0
|
|
33
|
+
Provides-Extra: diagrams
|
|
34
|
+
Requires-Dist: mmdr>=0.3.0; extra == 'diagrams'
|
|
35
|
+
Description-Content-Type: text/markdown
|
|
36
|
+
|
|
1
37
|
# sddflow (Python) — SDD Framework CLI
|
|
2
38
|
|
|
3
39
|
[](https://pypi.org/project/sddflow/)
|
|
4
40
|
[](https://pypi.org/project/sddflow/)
|
|
5
41
|
[](https://pypistats.org/packages/sddflow)
|
|
6
42
|
[](../LICENSE)
|
|
7
|
-
[](https://github.com/sunil1983us/sddflow/actions/workflows/ci.yml)
|
|
8
44
|
|
|
9
45
|
Python CLI for the SDD (Spec-Driven Development) Framework.
|
|
10
46
|
Mirrors the Node.js CLI exactly and adds Jira + Confluence integration.
|
|
@@ -23,8 +59,8 @@ sdd init
|
|
|
23
59
|
For development / contributors:
|
|
24
60
|
|
|
25
61
|
```bash
|
|
26
|
-
git clone https://github.com/sunil1983us/
|
|
27
|
-
pip install -e ./
|
|
62
|
+
git clone https://github.com/sunil1983us/sddflow.git
|
|
63
|
+
pip install -e ./sddflow/cli-python
|
|
28
64
|
```
|
|
29
65
|
|
|
30
66
|
---
|
|
@@ -92,12 +128,46 @@ migration pending, it asks:
|
|
|
92
128
|
and jumps straight to latest — so an automated `sdd upgrade` never needs
|
|
93
129
|
N reruns to converge.
|
|
94
130
|
|
|
95
|
-
**
|
|
96
|
-
to
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
131
|
+
**On its own, this only touches `manifest.yml`'s `sdd_version` field.**
|
|
132
|
+
Fixes made to your pack's actual files (templates, prompts, commands,
|
|
133
|
+
instructions, setup scripts, and a few IDE-integration files) after your
|
|
134
|
+
project was scaffolded do **not** reach an existing project just by
|
|
135
|
+
running plain `sdd upgrade` or upgrading the `sddflow` package — those
|
|
136
|
+
files were copied into your project once, at `sdd init` time, and nothing
|
|
137
|
+
re-syncs them automatically on its own. Two flags exist for that:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
sdd upgrade --apply-files # recommended: every managed file, conflict-aware
|
|
141
|
+
sdd upgrade --sync-prompts # narrower: prompts + commands only, always overwrites
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**`--apply-files`** (recommended) covers everything `sdd doctor` checks —
|
|
145
|
+
`.specify/templates/`, `.claude/commands/`, `.github/prompts/`,
|
|
146
|
+
`.github/instructions/`, `.github/workflows/`, `.cursor/rules/`,
|
|
147
|
+
`.vscode/`, plus `setup.sh`/`setup.ps1` — and tells a safe pack update
|
|
148
|
+
apart from your own hand edits before touching anything:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sdd upgrade --apply-files # preview + confirm
|
|
152
|
+
sdd upgrade --apply-files --yes # skip the confirmation prompt
|
|
153
|
+
sdd upgrade --apply-files --pack sdd-backend-service # override pack detection
|
|
154
|
+
sdd upgrade --apply-files --force # also overwrite locally-modified files
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
New files and files that still match their last recorded baseline (i.e.
|
|
158
|
+
you never touched them, only the pack moved on) are applied automatically.
|
|
159
|
+
Files that were hand-edited, or that have no recorded baseline to tell an
|
|
160
|
+
update apart from an edit (any project scaffolded before this existed),
|
|
161
|
+
are left alone and listed — pass `--force` to overwrite those too. Every
|
|
162
|
+
file actually overwritten is backed up to
|
|
163
|
+
`.specify/.managed-files-backups/{timestamp}/` first, never silently
|
|
164
|
+
discarded, and a fresh baseline is written after every run so future
|
|
165
|
+
`sdd doctor`/`sdd upgrade --apply-files` calls keep getting more precise.
|
|
166
|
+
See `sdd doctor` below to check drift without changing anything first.
|
|
167
|
+
|
|
168
|
+
**`--sync-prompts`** is the older, narrower mechanism — `.github/prompts/`
|
|
169
|
+
and `.claude/commands/` only, and always overwrites anything that differs
|
|
170
|
+
(no baseline, no conflict detection) — kept for backward compatibility:
|
|
101
171
|
|
|
102
172
|
```bash
|
|
103
173
|
sdd upgrade --sync-prompts # preview + confirm, then re-copy
|
|
@@ -105,20 +175,34 @@ sdd upgrade --sync-prompts --yes # skip the confirmation prompt
|
|
|
105
175
|
sdd upgrade --sync-prompts --pack sdd-backend-service # override pack detection
|
|
106
176
|
```
|
|
107
177
|
|
|
108
|
-
|
|
109
|
-
`manifest.yml`'s `pack` field (written automatically by `sdd init`
|
|
110
|
-
every new project
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
178
|
+
For both flags, which pack to sync from is resolved, in order: `--pack`
|
|
179
|
+
flag → `manifest.yml`'s `pack` field (written automatically by `sdd init`
|
|
180
|
+
on every new project, and baked as a static default into every pack's own
|
|
181
|
+
`manifest.yml` template as of v3.3.0) → inferred from `project_type` →
|
|
182
|
+
`sdd-universal` as a last resort. If it had to guess, it says so and
|
|
183
|
+
tells you to pass `--pack` if the guess is wrong.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### `sdd doctor`
|
|
188
|
+
|
|
189
|
+
Read-only report of drift between your project's framework-managed files
|
|
190
|
+
and the pack content bundled with your currently installed `sddflow` CLI
|
|
191
|
+
— the same file set `sdd upgrade --apply-files` acts on, but this command
|
|
192
|
+
never changes anything.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
sdd doctor
|
|
196
|
+
sdd doctor --quiet # only show files that aren't up to date
|
|
197
|
+
sdd doctor --pack sdd-backend-service # check against a specific pack
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Each file is classified as up to date, needs update (pack content moved
|
|
201
|
+
on, you never touched it — safe to auto-apply), modified locally (a real
|
|
202
|
+
conflict), differs with no baseline recorded (can't tell an update apart
|
|
203
|
+
from a hand edit — the honest fallback for any project older than this
|
|
204
|
+
baseline mechanism), or missing. Exit code 0 if everything's clean, 1
|
|
205
|
+
otherwise (scriptable in CI).
|
|
122
206
|
|
|
123
207
|
---
|
|
124
208
|
|
|
@@ -1,46 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: sddflow
|
|
3
|
-
Version: 3.0.2
|
|
4
|
-
Summary: Spec-Driven Development CLI for AI coding agents — SDLC workflows with Jira/Confluence sync, multi-host PR automation, and live progress dashboards
|
|
5
|
-
Project-URL: Homepage, https://github.com/sunil1983us/universalguide
|
|
6
|
-
Project-URL: Repository, https://github.com/sunil1983us/universalguide
|
|
7
|
-
Project-URL: Bug Tracker, https://github.com/sunil1983us/universalguide/issues
|
|
8
|
-
Project-URL: Changelog, https://github.com/sunil1983us/universalguide/blob/main/CHANGELOG.md
|
|
9
|
-
Author-email: Sunil Kumar <sunil1983.us@gmail.com>
|
|
10
|
-
License: MIT
|
|
11
|
-
Keywords: ai,ai-agent,atlassian,claude,claude-code,code-review,confluence,jira,llm,pull-request,requirements,sdd,sdlc,spec-driven-development,specification
|
|
12
|
-
Classifier: Development Status :: 4 - Beta
|
|
13
|
-
Classifier: Environment :: Console
|
|
14
|
-
Classifier: Intended Audience :: Developers
|
|
15
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
-
Classifier: Operating System :: OS Independent
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
23
|
-
Classifier: Topic :: Software Development
|
|
24
|
-
Classifier: Topic :: Software Development :: Documentation
|
|
25
|
-
Classifier: Topic :: Utilities
|
|
26
|
-
Requires-Python: >=3.10
|
|
27
|
-
Requires-Dist: click>=8.0
|
|
28
|
-
Requires-Dist: keyring>=24.0
|
|
29
|
-
Requires-Dist: pyyaml>=6.0
|
|
30
|
-
Requires-Dist: questionary>=2.0
|
|
31
|
-
Requires-Dist: requests>=2.28
|
|
32
|
-
Requires-Dist: rich>=13.0
|
|
33
|
-
Provides-Extra: diagrams
|
|
34
|
-
Requires-Dist: mmdr>=0.3.0; extra == 'diagrams'
|
|
35
|
-
Description-Content-Type: text/markdown
|
|
36
|
-
|
|
37
1
|
# sddflow (Python) — SDD Framework CLI
|
|
38
2
|
|
|
39
3
|
[](https://pypi.org/project/sddflow/)
|
|
40
4
|
[](https://pypi.org/project/sddflow/)
|
|
41
5
|
[](https://pypistats.org/packages/sddflow)
|
|
42
6
|
[](../LICENSE)
|
|
43
|
-
[](https://github.com/sunil1983us/sddflow/actions/workflows/ci.yml)
|
|
44
8
|
|
|
45
9
|
Python CLI for the SDD (Spec-Driven Development) Framework.
|
|
46
10
|
Mirrors the Node.js CLI exactly and adds Jira + Confluence integration.
|
|
@@ -59,8 +23,8 @@ sdd init
|
|
|
59
23
|
For development / contributors:
|
|
60
24
|
|
|
61
25
|
```bash
|
|
62
|
-
git clone https://github.com/sunil1983us/
|
|
63
|
-
pip install -e ./
|
|
26
|
+
git clone https://github.com/sunil1983us/sddflow.git
|
|
27
|
+
pip install -e ./sddflow/cli-python
|
|
64
28
|
```
|
|
65
29
|
|
|
66
30
|
---
|
|
@@ -128,12 +92,46 @@ migration pending, it asks:
|
|
|
128
92
|
and jumps straight to latest — so an automated `sdd upgrade` never needs
|
|
129
93
|
N reruns to converge.
|
|
130
94
|
|
|
131
|
-
**
|
|
132
|
-
to
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
95
|
+
**On its own, this only touches `manifest.yml`'s `sdd_version` field.**
|
|
96
|
+
Fixes made to your pack's actual files (templates, prompts, commands,
|
|
97
|
+
instructions, setup scripts, and a few IDE-integration files) after your
|
|
98
|
+
project was scaffolded do **not** reach an existing project just by
|
|
99
|
+
running plain `sdd upgrade` or upgrading the `sddflow` package — those
|
|
100
|
+
files were copied into your project once, at `sdd init` time, and nothing
|
|
101
|
+
re-syncs them automatically on its own. Two flags exist for that:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
sdd upgrade --apply-files # recommended: every managed file, conflict-aware
|
|
105
|
+
sdd upgrade --sync-prompts # narrower: prompts + commands only, always overwrites
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**`--apply-files`** (recommended) covers everything `sdd doctor` checks —
|
|
109
|
+
`.specify/templates/`, `.claude/commands/`, `.github/prompts/`,
|
|
110
|
+
`.github/instructions/`, `.github/workflows/`, `.cursor/rules/`,
|
|
111
|
+
`.vscode/`, plus `setup.sh`/`setup.ps1` — and tells a safe pack update
|
|
112
|
+
apart from your own hand edits before touching anything:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
sdd upgrade --apply-files # preview + confirm
|
|
116
|
+
sdd upgrade --apply-files --yes # skip the confirmation prompt
|
|
117
|
+
sdd upgrade --apply-files --pack sdd-backend-service # override pack detection
|
|
118
|
+
sdd upgrade --apply-files --force # also overwrite locally-modified files
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
New files and files that still match their last recorded baseline (i.e.
|
|
122
|
+
you never touched them, only the pack moved on) are applied automatically.
|
|
123
|
+
Files that were hand-edited, or that have no recorded baseline to tell an
|
|
124
|
+
update apart from an edit (any project scaffolded before this existed),
|
|
125
|
+
are left alone and listed — pass `--force` to overwrite those too. Every
|
|
126
|
+
file actually overwritten is backed up to
|
|
127
|
+
`.specify/.managed-files-backups/{timestamp}/` first, never silently
|
|
128
|
+
discarded, and a fresh baseline is written after every run so future
|
|
129
|
+
`sdd doctor`/`sdd upgrade --apply-files` calls keep getting more precise.
|
|
130
|
+
See `sdd doctor` below to check drift without changing anything first.
|
|
131
|
+
|
|
132
|
+
**`--sync-prompts`** is the older, narrower mechanism — `.github/prompts/`
|
|
133
|
+
and `.claude/commands/` only, and always overwrites anything that differs
|
|
134
|
+
(no baseline, no conflict detection) — kept for backward compatibility:
|
|
137
135
|
|
|
138
136
|
```bash
|
|
139
137
|
sdd upgrade --sync-prompts # preview + confirm, then re-copy
|
|
@@ -141,20 +139,34 @@ sdd upgrade --sync-prompts --yes # skip the confirmation prompt
|
|
|
141
139
|
sdd upgrade --sync-prompts --pack sdd-backend-service # override pack detection
|
|
142
140
|
```
|
|
143
141
|
|
|
144
|
-
|
|
145
|
-
`manifest.yml`'s `pack` field (written automatically by `sdd init`
|
|
146
|
-
every new project
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
142
|
+
For both flags, which pack to sync from is resolved, in order: `--pack`
|
|
143
|
+
flag → `manifest.yml`'s `pack` field (written automatically by `sdd init`
|
|
144
|
+
on every new project, and baked as a static default into every pack's own
|
|
145
|
+
`manifest.yml` template as of v3.3.0) → inferred from `project_type` →
|
|
146
|
+
`sdd-universal` as a last resort. If it had to guess, it says so and
|
|
147
|
+
tells you to pass `--pack` if the guess is wrong.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### `sdd doctor`
|
|
152
|
+
|
|
153
|
+
Read-only report of drift between your project's framework-managed files
|
|
154
|
+
and the pack content bundled with your currently installed `sddflow` CLI
|
|
155
|
+
— the same file set `sdd upgrade --apply-files` acts on, but this command
|
|
156
|
+
never changes anything.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
sdd doctor
|
|
160
|
+
sdd doctor --quiet # only show files that aren't up to date
|
|
161
|
+
sdd doctor --pack sdd-backend-service # check against a specific pack
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Each file is classified as up to date, needs update (pack content moved
|
|
165
|
+
on, you never touched it — safe to auto-apply), modified locally (a real
|
|
166
|
+
conflict), differs with no baseline recorded (can't tell an update apart
|
|
167
|
+
from a hand edit — the honest fallback for any project older than this
|
|
168
|
+
baseline mechanism), or missing. Exit code 0 if everything's clean, 1
|
|
169
|
+
otherwise (scriptable in CI).
|
|
158
170
|
|
|
159
171
|
---
|
|
160
172
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sddflow"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.4.2"
|
|
8
8
|
description = "Spec-Driven Development CLI for AI coding agents — SDLC workflows with Jira/Confluence sync, multi-host PR automation, and live progress dashboards"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -56,10 +56,10 @@ diagrams = [
|
|
|
56
56
|
sdd = "sdd.__main__:cli"
|
|
57
57
|
|
|
58
58
|
[project.urls]
|
|
59
|
-
Homepage = "https://github.com/sunil1983us/
|
|
60
|
-
Repository = "https://github.com/sunil1983us/
|
|
61
|
-
"Bug Tracker" = "https://github.com/sunil1983us/
|
|
62
|
-
Changelog = "https://github.com/sunil1983us/
|
|
59
|
+
Homepage = "https://github.com/sunil1983us/sddflow"
|
|
60
|
+
Repository = "https://github.com/sunil1983us/sddflow"
|
|
61
|
+
"Bug Tracker" = "https://github.com/sunil1983us/sddflow/issues"
|
|
62
|
+
Changelog = "https://github.com/sunil1983us/sddflow/blob/main/CHANGELOG.md"
|
|
63
63
|
|
|
64
64
|
[tool.hatch.build.targets.wheel]
|
|
65
65
|
packages = ["sdd"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.4.2"
|
|
@@ -5,6 +5,7 @@ from sdd.commands.config import config_command
|
|
|
5
5
|
from sdd.commands.confluence import confluence_command
|
|
6
6
|
from sdd.commands.cr import cr_command
|
|
7
7
|
from sdd.commands.dashboard import dashboard_command
|
|
8
|
+
from sdd.commands.doctor import doctor_command
|
|
8
9
|
from sdd.commands.feature import feature_command
|
|
9
10
|
from sdd.commands.hooks import hooks_command
|
|
10
11
|
from sdd.commands.init import init_command
|
|
@@ -16,7 +17,10 @@ from sdd.commands.token_log import token_log_command
|
|
|
16
17
|
from sdd.commands.upgrade import upgrade_command
|
|
17
18
|
|
|
18
19
|
|
|
19
|
-
@click.group(
|
|
20
|
+
@click.group(
|
|
21
|
+
epilog="Found a bug or have a feature request? "
|
|
22
|
+
"https://github.com/sunil1983us/sddflow/issues"
|
|
23
|
+
)
|
|
20
24
|
@click.version_option(__version__, prog_name="sdd")
|
|
21
25
|
def cli():
|
|
22
26
|
"""SDD Framework CLI — Spec-Driven Development"""
|
|
@@ -35,6 +39,7 @@ cli.add_command(token_log_command, name="token-log")
|
|
|
35
39
|
cli.add_command(project_type_command, name="project-type")
|
|
36
40
|
cli.add_command(feature_command, name="feature")
|
|
37
41
|
cli.add_command(hooks_command, name="hooks")
|
|
42
|
+
cli.add_command(doctor_command, name="doctor")
|
|
38
43
|
|
|
39
44
|
|
|
40
45
|
if __name__ == "__main__":
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import json
|
|
3
4
|
import re
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
@@ -517,31 +518,65 @@ def config_test(profile):
|
|
|
517
518
|
console.print(f" [dim]Confluence profile: {cf_name}[/dim]")
|
|
518
519
|
console.print()
|
|
519
520
|
|
|
521
|
+
_probe_service(
|
|
522
|
+
"Jira",
|
|
523
|
+
lambda: JiraClient(
|
|
524
|
+
jira_session, jira_prof.base_url, deployment=jira_prof.deployment
|
|
525
|
+
).get_myself(),
|
|
526
|
+
("displayName", "emailAddress"),
|
|
527
|
+
)
|
|
528
|
+
_probe_service(
|
|
529
|
+
"Confluence",
|
|
530
|
+
lambda: ConfluenceClient(
|
|
531
|
+
cf_session, cf_prof.base_url, deployment=cf_prof.deployment
|
|
532
|
+
).get_myself(),
|
|
533
|
+
("displayName", "username"),
|
|
534
|
+
)
|
|
535
|
+
|
|
536
|
+
console.print()
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def _probe_service(label: str, get_myself_fn, name_keys: tuple[str, ...]) -> None:
|
|
540
|
+
"""Runs a get_myself()-style connectivity probe and prints one status
|
|
541
|
+
line -- never lets it crash the whole `sdd config test` command.
|
|
542
|
+
|
|
543
|
+
Three failure modes, told apart because each points at a different
|
|
544
|
+
fix:
|
|
545
|
+
- HTTPError: the server itself said no (4xx/5xx) -- its status code
|
|
546
|
+
and body are the most useful thing to show.
|
|
547
|
+
- JSONDecodeError (raised by response.json() on a 200-but-non-JSON
|
|
548
|
+
body -- caught as the bare stdlib class since older `requests`
|
|
549
|
+
versions raise that directly, and as InvalidJSONError to also
|
|
550
|
+
catch requests>=2.27's own subclass that wraps it): most commonly
|
|
551
|
+
means base_url points at an SSO/login redirect page or the wrong
|
|
552
|
+
path entirely, not the real API root -- a raw "Expecting value:
|
|
553
|
+
line 1 column 1" message (what this looks like uncaught) gives the
|
|
554
|
+
user no clue what actually went wrong.
|
|
555
|
+
- Any other RequestException (connection refused, DNS failure,
|
|
556
|
+
timeout, TLS error, malformed URL): whatever requests' own message
|
|
557
|
+
says is usually clear enough on its own.
|
|
558
|
+
"""
|
|
520
559
|
try:
|
|
521
|
-
me =
|
|
522
|
-
name = me.get(
|
|
560
|
+
me = get_myself_fn()
|
|
561
|
+
name = next((me.get(k) for k in name_keys if me.get(k)), "?")
|
|
523
562
|
console.print(
|
|
524
|
-
f" [green]✓[/green]
|
|
563
|
+
f" [green]✓[/green] {label:<10} — connected as [cyan]{name}[/cyan]"
|
|
525
564
|
)
|
|
526
|
-
except requests.HTTPError as e:
|
|
565
|
+
except requests.exceptions.HTTPError as e:
|
|
527
566
|
console.print(
|
|
528
|
-
f" [red]✗
|
|
567
|
+
f" [red]✗ {label:<10} — HTTP {e.response.status_code}: "
|
|
529
568
|
f"{e.response.text[:120]}[/red]"
|
|
530
569
|
)
|
|
531
|
-
|
|
532
|
-
try:
|
|
533
|
-
me = ConfluenceClient(cf_session, cf_prof.base_url).get_myself()
|
|
534
|
-
name = me.get("displayName") or me.get("username", "?")
|
|
535
|
-
console.print(
|
|
536
|
-
f" [green]✓[/green] Confluence — connected as [cyan]{name}[/cyan]"
|
|
537
|
-
)
|
|
538
|
-
except requests.HTTPError as e:
|
|
570
|
+
except (json.JSONDecodeError, requests.exceptions.InvalidJSONError):
|
|
539
571
|
console.print(
|
|
540
|
-
f" [red]✗
|
|
541
|
-
f"
|
|
572
|
+
f" [red]✗ {label:<10} — got a response, but it wasn't "
|
|
573
|
+
f"JSON.[/red]\n"
|
|
574
|
+
f" [dim]Check base_url points at the API root (not a "
|
|
575
|
+
f"login/SSO redirect page), and that the PAT/token is "
|
|
576
|
+
f"still valid.[/dim]"
|
|
542
577
|
)
|
|
543
|
-
|
|
544
|
-
|
|
578
|
+
except requests.exceptions.RequestException as e:
|
|
579
|
+
console.print(f" [red]✗ {label:<10} — {e}[/red]")
|
|
545
580
|
|
|
546
581
|
|
|
547
582
|
@config_command.command("fields")
|
|
@@ -577,7 +612,7 @@ def config_fields(profile, project):
|
|
|
577
612
|
)
|
|
578
613
|
raise SystemExit(1)
|
|
579
614
|
|
|
580
|
-
fields = JiraClient(session, prof.base_url).get_fields()
|
|
615
|
+
fields = JiraClient(session, prof.base_url, deployment=prof.deployment).get_fields()
|
|
581
616
|
custom = sorted(
|
|
582
617
|
[f for f in fields if f.get("custom")],
|
|
583
618
|
key=lambda f: f.get("name", ""),
|
|
@@ -342,7 +342,7 @@ def confluence_push(profile, feature, doc, summary, dry_run, force):
|
|
|
342
342
|
console.print(f" [red]✗ Auth error: {e}[/red]")
|
|
343
343
|
raise SystemExit(1)
|
|
344
344
|
|
|
345
|
-
client = ConfluenceClient(session, prof.base_url)
|
|
345
|
+
client = ConfluenceClient(session, prof.base_url, deployment=prof.deployment)
|
|
346
346
|
|
|
347
347
|
for key, md_path, title in available:
|
|
348
348
|
body, attachments, diagram_warnings = md_to_storage(
|
|
@@ -471,7 +471,7 @@ def confluence_draft(doc, profile, feature, dry_run, force):
|
|
|
471
471
|
console.print(f" [red]✗ Auth error: {e}[/red]")
|
|
472
472
|
raise SystemExit(1)
|
|
473
473
|
|
|
474
|
-
client = ConfluenceClient(session, prof.base_url)
|
|
474
|
+
client = ConfluenceClient(session, prof.base_url, deployment=prof.deployment)
|
|
475
475
|
body, attachments, diagram_warnings = md_to_storage(
|
|
476
476
|
doc_path.read_text(), cf_cfg.diagrams
|
|
477
477
|
)
|
|
@@ -577,7 +577,7 @@ def confluence_pull(doc, profile, feature, page_id):
|
|
|
577
577
|
console.print(f" [red]✗ Auth error: {e}[/red]")
|
|
578
578
|
raise SystemExit(1)
|
|
579
579
|
|
|
580
|
-
client = ConfluenceClient(session, prof.base_url)
|
|
580
|
+
client = ConfluenceClient(session, prof.base_url, deployment=prof.deployment)
|
|
581
581
|
|
|
582
582
|
console.print(f" Fetching page [cyan]{resolved_page_id}[/cyan] from Confluence...")
|
|
583
583
|
try:
|
|
@@ -122,7 +122,9 @@ def cr_submit(cr, profile, feature, reviewer, dry_run):
|
|
|
122
122
|
|
|
123
123
|
# ── Push CR record to Confluence ─────────────────────────────────────────
|
|
124
124
|
if cfg.confluence:
|
|
125
|
-
cf_client = ConfluenceClient(
|
|
125
|
+
cf_client = ConfluenceClient(
|
|
126
|
+
cf_session, cf_prof.base_url, deployment=cf_prof.deployment
|
|
127
|
+
)
|
|
126
128
|
body_html, attachments, diagram_warnings = md_to_storage(
|
|
127
129
|
cr_text, cfg.confluence.diagrams
|
|
128
130
|
)
|
|
@@ -159,7 +161,9 @@ def cr_submit(cr, profile, feature, reviewer, dry_run):
|
|
|
159
161
|
|
|
160
162
|
# ── Create / update Jira review task ─────────────────────────────────────
|
|
161
163
|
if cfg.jira:
|
|
162
|
-
jira_client = JiraClient(
|
|
164
|
+
jira_client = JiraClient(
|
|
165
|
+
jira_session, jira_prof.base_url, deployment=jira_prof.deployment
|
|
166
|
+
)
|
|
163
167
|
# feature_name included for the same reason page_title above is --
|
|
164
168
|
# cr_id alone (e.g. "CHG-001") is scoped per feature's own tasks.md
|
|
165
169
|
# counter, not globally unique across the project. Without it here,
|
|
@@ -288,7 +292,7 @@ def cr_check(cr, profile, feature):
|
|
|
288
292
|
proj = manifest.get("project") or {}
|
|
289
293
|
feature_name = feature or proj.get("feature", "")
|
|
290
294
|
|
|
291
|
-
client = JiraClient(session, prof.base_url)
|
|
295
|
+
client = JiraClient(session, prof.base_url, deployment=prof.deployment)
|
|
292
296
|
# Must match cr_submit's idempotency_label exactly (feature-qualified) --
|
|
293
297
|
# otherwise this would never find the ticket cr_submit actually created.
|
|
294
298
|
issue = client.find_by_label(
|
|
@@ -201,12 +201,14 @@ def _fetch_review_links(feature: str) -> dict:
|
|
|
201
201
|
try:
|
|
202
202
|
if cfg.jira:
|
|
203
203
|
prof, session = load_jira_session(cfg)
|
|
204
|
-
jira_client = JiraClient(session, prof.base_url)
|
|
204
|
+
jira_client = JiraClient(session, prof.base_url, deployment=prof.deployment)
|
|
205
205
|
else:
|
|
206
206
|
jira_client = None
|
|
207
207
|
if cfg.confluence:
|
|
208
208
|
cf_prof, cf_session = load_confluence_session(cfg)
|
|
209
|
-
cf_client = ConfluenceClient(
|
|
209
|
+
cf_client = ConfluenceClient(
|
|
210
|
+
cf_session, cf_prof.base_url, deployment=cf_prof.deployment
|
|
211
|
+
)
|
|
210
212
|
else:
|
|
211
213
|
cf_prof, cf_client = None, None
|
|
212
214
|
except Exception as e:
|
|
@@ -305,7 +307,7 @@ def _jira_client_for_comments():
|
|
|
305
307
|
return None
|
|
306
308
|
try:
|
|
307
309
|
prof, session = load_jira_session(cfg)
|
|
308
|
-
return JiraClient(session, prof.base_url), cfg
|
|
310
|
+
return JiraClient(session, prof.base_url, deployment=prof.deployment), cfg
|
|
309
311
|
except Exception:
|
|
310
312
|
return None
|
|
311
313
|
|
|
@@ -49,6 +49,9 @@ __SDD_DASHBOARD_CSS__
|
|
|
49
49
|
</div>
|
|
50
50
|
</details>
|
|
51
51
|
<div id="root"></div>
|
|
52
|
+
<footer class="dashboard-footer">
|
|
53
|
+
<a href="https://github.com/sunil1983us/sddflow/issues" target="_blank" rel="noopener">Report a bug / request a feature</a>
|
|
54
|
+
</footer>
|
|
52
55
|
|
|
53
56
|
<script>
|
|
54
57
|
__SDD_DASHBOARD_THEME_JS__
|
|
@@ -237,4 +237,12 @@
|
|
|
237
237
|
.pager {
|
|
238
238
|
display: flex; align-items: center; gap: .6rem; margin-top: .6rem;
|
|
239
239
|
padding-top: .6rem; border-top: 1px solid var(--border);
|
|
240
|
-
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/* Static -- lives in page.html outside #root, so it survives every 5s
|
|
243
|
+
poll's innerHTML rebuild without needing any JS of its own. */
|
|
244
|
+
.dashboard-footer {
|
|
245
|
+
text-align: center; padding: 1.5rem 1rem 2rem; font-size: .8rem;
|
|
246
|
+
}
|
|
247
|
+
.dashboard-footer a { color: var(--muted); text-decoration: none; }
|
|
248
|
+
.dashboard-footer a:hover { color: var(--accent); text-decoration: underline; }
|