vstack 3.1.1__tar.gz → 3.3.0__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.
- {vstack-3.1.1 → vstack-3.3.0}/PKG-INFO +127 -3
- {vstack-3.1.1 → vstack-3.3.0}/README-pypi.md +126 -2
- {vstack-3.1.1 → vstack-3.3.0}/pyproject.toml +24 -15
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_migrations/README.md +3 -2
- vstack-3.3.0/src/vstack/_templates/agents/_partials/agent-skill-boundary.md +7 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/architect/config.yaml +2 -2
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/architect/template.md +20 -7
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/designer/config.yaml +3 -3
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/designer/template.md +24 -11
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/engineer/config.yaml +1 -1
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/engineer/template.md +14 -9
- vstack-3.3.0/src/vstack/_templates/agents/planner/config.yaml +28 -0
- vstack-3.3.0/src/vstack/_templates/agents/planner/template.md +128 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/config.yaml +2 -2
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/template.md +24 -11
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/release/artifacts/release-summary.md +1 -1
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/release/config.yaml +3 -3
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/release/template.md +26 -13
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/tester/config.yaml +2 -2
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/tester/template.md +23 -10
- vstack-3.3.0/src/vstack/_templates/hooks/log-retention-cleanup/hook.yaml +108 -0
- vstack-3.3.0/src/vstack/_templates/hooks/post-commit-security-scan/hook.yaml +73 -0
- vstack-3.3.0/src/vstack/_templates/hooks/post-edit-format/hook.yaml +70 -0
- vstack-3.3.0/src/vstack/_templates/hooks/post-edit-markdown-quality/hook.yaml +73 -0
- vstack-3.3.0/src/vstack/_templates/hooks/pre-tool-safety-gate/hook.yaml +93 -0
- vstack-3.3.0/src/vstack/_templates/hooks/session-audit/hook.yaml +248 -0
- vstack-3.3.0/src/vstack/_templates/project/.vstack/config.yaml +211 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/agents/generator.py +148 -53
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/protocol.py +5 -4
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/constants.py +12 -2
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/init.py +81 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/install.py +4 -3
- vstack-3.3.0/src/vstack/cli/interface.py +660 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/migrate.py +173 -20
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/service.py +36 -4
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/verify.py +3 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/constants.py +43 -5
- vstack-3.3.0/src/vstack/hooks/__init__.py +5 -0
- vstack-3.3.0/src/vstack/hooks/config.py +22 -0
- vstack-3.3.0/src/vstack/hooks/constants.py +10 -0
- vstack-3.3.0/src/vstack/hooks/generator.py +339 -0
- vstack-3.1.1/src/vstack/_templates/agents/_partials/agent-skill-boundary.md +0 -5
- vstack-3.1.1/src/vstack/_templates/project/.vstack/config.yaml +0 -96
- vstack-3.1.1/src/vstack/cli/interface.py +0 -277
- {vstack-3.1.1 → vstack-3.3.0}/LICENSE +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/__main__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_migrations/v2_to_v3.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/architect/artifacts/adr/NNN-template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/architect/artifacts/overview.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/designer/artifacts/overview.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/engineer/artifacts/issues/postmortem.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/engineer/artifacts/issues/rca.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/artifacts/changes/change-request.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/artifacts/issues/issue.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/artifacts/requirements.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/artifacts/roadmap.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/product/artifacts/vision.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/tester/artifacts/performance-baseline.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/tester/artifacts/security-report.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/agents/tester/artifacts/test-report.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/git/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/git/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/helm/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/helm/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/java/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/java/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/k8s/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/k8s/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/markdown/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/markdown/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/python/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/python/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/rancher/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/rancher/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/security/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/security/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/terraform/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/terraform/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/terragrunt/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/terragrunt/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/testing/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/testing/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/typescript/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/instructions/typescript/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/api-design-review/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/api-design-review/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/architecture-risk/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/architecture-risk/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/code-review/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/code-review/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/dependency-audit/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/dependency-audit/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/incident-timeline/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/incident-timeline/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/migration-safety/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/migration-safety/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/release-readiness/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/prompts/release-readiness/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/_partials/base-branch.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/_partials/observability-checklist.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/_partials/run-tests.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/_partials/skill-context.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/adr/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/adr/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/analyse/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/analyse/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/architecture/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/architecture/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/aws-cli/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/aws-cli/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/cicd/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/cicd/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/cloudformation/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/cloudformation/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/code-review/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/code-review/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/codeql/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/codeql/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/concise/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/concise/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/consult/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/consult/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/container/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/container/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/conventional-commit/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/conventional-commit/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/debug/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/debug/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/dependabot/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/dependabot/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/dependency/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/dependency/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/design/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/design/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/docs/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/docs/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/explore/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/explore/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gdpr/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gdpr/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gh-issues/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gh-issues/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gh-release/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/gh-release/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/guardrails/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/guardrails/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/helm/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/helm/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/incident/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/incident/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/inspect/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/inspect/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/k8s/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/k8s/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/migrate/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/migrate/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/onboard/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/onboard/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/openapi/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/openapi/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/performance/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/performance/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/postmortem/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/postmortem/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/pr/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/pr/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/rancher/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/rancher/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/rca/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/rca/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/refactor/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/refactor/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/release-notes/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/release-notes/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/requirements/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/requirements/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/secret-scan/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/secret-scan/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/security/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/security/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/terraform/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/terraform/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/terragrunt/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/terragrunt/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/threat-model/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/threat-model/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/verify/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/verify/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/vision/config.yaml +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/_templates/skills/vision/template.md +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/agents/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/agents/config.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/agents/constants.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/config.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/constants.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/generator.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/artifacts/models.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/base.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/catalog.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/manifest.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/parser.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/report.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/status.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/uninstall.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/cli/validate.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/frontmatter/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/frontmatter/parser.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/frontmatter/schema.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/frontmatter/serializer.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/instructions/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/instructions/config.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/instructions/constants.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/instructions/generator.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/main.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/manifest/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/manifest/store.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/models.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/prompts/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/prompts/config.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/prompts/constants.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/prompts/generator.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/skills/__init__.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/skills/config.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/skills/constants.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/skills/generator.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/skills/models.py +0 -0
- {vstack-3.1.1 → vstack-3.3.0}/src/vstack/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vstack
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: VS Code-native AI engineering workflow system for microservices, libraries, and backend systems.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -45,7 +45,7 @@ The VS Code-native AI workflow system for backend engineering.
|
|
|
45
45
|
|
|
46
46
|
vstack installs structured agents, skills, instructions, and prompts into `.github/` so GitHub Copilot Agent Mode can run repeatable backend workflows with clear role boundaries.
|
|
47
47
|
|
|
48
|
-
It provides
|
|
48
|
+
It provides six delivery roles for end-to-end software work: `product`, `architect`, `designer`, `engineer`, `tester`, and `release`, coordinated by `planner`.
|
|
49
49
|
|
|
50
50
|
## Best for
|
|
51
51
|
|
|
@@ -55,7 +55,7 @@ It provides a fixed role model for end-to-end software delivery: `product`, `arc
|
|
|
55
55
|
|
|
56
56
|
## What you get
|
|
57
57
|
|
|
58
|
-
- Fixed role model:
|
|
58
|
+
- Fixed role model: six delivery roles plus a planner coordinator
|
|
59
59
|
- Template-driven install model from `src/vstack/_templates/`
|
|
60
60
|
- Backend-first verification, security, and release discipline
|
|
61
61
|
- One runtime dependency: PyYAML
|
|
@@ -229,6 +229,130 @@ vstack install --dry-run
|
|
|
229
229
|
|
|
230
230
|
The summary lists preserved files as `type/name` selectors (e.g. `agent/engineer`). Resolve each conflict with `--force-name type/name` to overwrite, `--adopt-name type/name` to take ownership without overwriting, or `--force` to overwrite everything.
|
|
231
231
|
|
|
232
|
+
## Reading `.vstack/config.yaml`
|
|
233
|
+
|
|
234
|
+
- Lines starting with `#` are comments, explanation, or example configuration and are not active.
|
|
235
|
+
- Only uncommented YAML keys are active configuration.
|
|
236
|
+
- To enable an example block, remove `#` from that block and keep valid YAML indentation.
|
|
237
|
+
- After any config change, run `vstack init` to apply it to generated `.github/` artifacts.
|
|
238
|
+
|
|
239
|
+
## Workflow modes
|
|
240
|
+
|
|
241
|
+
vstack supports three workflow modes via `.vstack/config.yaml`:
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
workflow:
|
|
245
|
+
mode: agentic # default
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
After changing `workflow.mode`, regenerate artifacts:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
vstack init
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
| Mode | Behavior | Planner file | Worker handoff buttons |
|
|
255
|
+
| --------- | ------------------------------------------------------------ | ------------- | ---------------------- |
|
|
256
|
+
| `agentic` | Planner orchestrates stage progression using subagents | generated | omitted |
|
|
257
|
+
| `manual` | User progresses stage-by-stage manually | not generated | shown |
|
|
258
|
+
| `hybrid` | Both planner orchestration and manual handoffs are available | generated | shown |
|
|
259
|
+
|
|
260
|
+
Execution semantics:
|
|
261
|
+
|
|
262
|
+
- `workflow.stages` order is the canonical progression order.
|
|
263
|
+
- `agentic` is stage-sequential by default: planner advances one stage at a time in configured order.
|
|
264
|
+
- Set `depends_on` to unlock a DAG topology and let planner run independent branches in parallel.
|
|
265
|
+
|
|
266
|
+
**Parallel stages with `depends_on`:** By default each stage implicitly depends on the previous one. Add `depends_on` to declare explicit predecessors. The canonical vstack DAG (seeded automatically by `vstack install`):
|
|
267
|
+
|
|
268
|
+
```yaml
|
|
269
|
+
workflow:
|
|
270
|
+
mode: agentic
|
|
271
|
+
version: 1
|
|
272
|
+
stages:
|
|
273
|
+
- role: product
|
|
274
|
+
gate: required
|
|
275
|
+
hitl: always
|
|
276
|
+
- role: architect
|
|
277
|
+
gate: required
|
|
278
|
+
hitl: always
|
|
279
|
+
depends_on: [product]
|
|
280
|
+
- role: designer
|
|
281
|
+
gate: optional
|
|
282
|
+
hitl: on-change
|
|
283
|
+
depends_on: [product] # runs in parallel with architect
|
|
284
|
+
- role: engineer
|
|
285
|
+
gate: required
|
|
286
|
+
hitl: always
|
|
287
|
+
depends_on: [architect, designer] # waits for both
|
|
288
|
+
- role: tester
|
|
289
|
+
gate: required
|
|
290
|
+
hitl: always
|
|
291
|
+
depends_on: [engineer]
|
|
292
|
+
- role: release
|
|
293
|
+
gate: required
|
|
294
|
+
hitl: always
|
|
295
|
+
depends_on: [tester]
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
`depends_on: []` marks a root stage. Absent `depends_on` falls back to sequential. Circular dependencies are caught at install/init time.
|
|
299
|
+
|
|
300
|
+
Handoff target semantics:
|
|
301
|
+
|
|
302
|
+
- `handoffs.prompt` is the transition prompt text.
|
|
303
|
+
- If `handoffs.agent` is omitted, the target defaults to the next role in `workflow.stages`.
|
|
304
|
+
- You can set `handoffs.agent` explicitly to override that default target in `manual`/`hybrid`.
|
|
305
|
+
- In `agentic`, worker handoff buttons are hidden; planner controls progression.
|
|
306
|
+
|
|
307
|
+
Mode quickstart in Copilot Agent Mode:
|
|
308
|
+
|
|
309
|
+
In `agentic` mode, `@planner` is the primary entry point. Start every session with `@planner` and let it drive all stage transitions automatically.
|
|
310
|
+
|
|
311
|
+
| Mode | Start here | First prompt example |
|
|
312
|
+
| --------- | ------------------------ | ------------------------------------------------------- |
|
|
313
|
+
| `agentic` | `@planner` | `@planner Run the workflow for this repository change.` |
|
|
314
|
+
| `manual` | `@product` | `@product Define requirements for this change.` |
|
|
315
|
+
| `hybrid` | `@planner` or `@product` | `@planner Run the workflow for this repository change.` |
|
|
316
|
+
|
|
317
|
+
What planner does: reads `workflow.stages` and `depends_on`, invokes each role agent as a subagent at the right time, runs independent branches in parallel when `depends_on` permits, pauses at each gate for human approval, and reports a structured stage outcome after each step. Valid role names: `product`, `architect`, `designer`, `engineer`, `tester`, `release`.
|
|
318
|
+
|
|
319
|
+
Agentic runbook (copy/paste):
|
|
320
|
+
|
|
321
|
+
```text
|
|
322
|
+
@planner Run the workflow for this repository change.
|
|
323
|
+
@planner Show current stage status, ready stages, blocked stages, and next action.
|
|
324
|
+
@planner Continue with all ready stages in parallel where workflow.depends_on allows it.
|
|
325
|
+
@planner Pause at required HITL gates and ask for approval before advancing.
|
|
326
|
+
@planner Finalize with a release-readiness summary and list changed artifacts.
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Troubleshooting: why planner is not running stages in parallel
|
|
330
|
+
|
|
331
|
+
- Check `workflow.mode` in `.vstack/config.yaml`: parallel orchestration requires `agentic` (or planner-led `hybrid`).
|
|
332
|
+
- Validate stage dependencies: run `vstack validate` to catch invalid roles, self-dependencies, and cycles.
|
|
333
|
+
- Inspect `depends_on` shape: a stage runs only when all listed predecessors are `ready` or `skipped`.
|
|
334
|
+
- Check implicit sequential fallback: if `depends_on` is omitted, the stage depends on the previous stage.
|
|
335
|
+
- Check optional stage behavior: `gate: optional` can be skipped when unaffected, reducing apparent parallel fan-out.
|
|
336
|
+
- Check blockers in stage report: any `blocked` predecessor prevents dependent stages from becoming ready.
|
|
337
|
+
- Check mixed execution path: in `hybrid`, mixing manual handoffs and planner in one session can mask parallel readiness.
|
|
338
|
+
- Confirm you started with planner: in `agentic`, begin with `@planner`, not a worker role agent.
|
|
339
|
+
|
|
340
|
+
Usage guidance:
|
|
341
|
+
|
|
342
|
+
- Use `agentic` when you want one deterministic orchestration path.
|
|
343
|
+
- Use `manual` when your team prefers explicit user-controlled stage transitions.
|
|
344
|
+
- Use `hybrid` only when your team intentionally wants both options.
|
|
345
|
+
|
|
346
|
+
Hybrid operating rule:
|
|
347
|
+
|
|
348
|
+
- Choose one path per session (planner-led or manual handoffs) and stay on it.
|
|
349
|
+
- Mixing both paths in one session increases the chance of duplicate stage transitions.
|
|
350
|
+
|
|
351
|
+
Hybrid warning:
|
|
352
|
+
|
|
353
|
+
- In `hybrid`, users can click handoff buttons while a planner-led flow is also available.
|
|
354
|
+
- This can cause unintended progression jumps or duplicated transitions if your process assumes one strict path.
|
|
355
|
+
|
|
232
356
|
## Fast troubleshooting
|
|
233
357
|
|
|
234
358
|
- Command not found after install: ensure your `pipx` binary path is in `PATH`
|
|
@@ -14,7 +14,7 @@ The VS Code-native AI workflow system for backend engineering.
|
|
|
14
14
|
|
|
15
15
|
vstack installs structured agents, skills, instructions, and prompts into `.github/` so GitHub Copilot Agent Mode can run repeatable backend workflows with clear role boundaries.
|
|
16
16
|
|
|
17
|
-
It provides
|
|
17
|
+
It provides six delivery roles for end-to-end software work: `product`, `architect`, `designer`, `engineer`, `tester`, and `release`, coordinated by `planner`.
|
|
18
18
|
|
|
19
19
|
## Best for
|
|
20
20
|
|
|
@@ -24,7 +24,7 @@ It provides a fixed role model for end-to-end software delivery: `product`, `arc
|
|
|
24
24
|
|
|
25
25
|
## What you get
|
|
26
26
|
|
|
27
|
-
- Fixed role model:
|
|
27
|
+
- Fixed role model: six delivery roles plus a planner coordinator
|
|
28
28
|
- Template-driven install model from `src/vstack/_templates/`
|
|
29
29
|
- Backend-first verification, security, and release discipline
|
|
30
30
|
- One runtime dependency: PyYAML
|
|
@@ -198,6 +198,130 @@ vstack install --dry-run
|
|
|
198
198
|
|
|
199
199
|
The summary lists preserved files as `type/name` selectors (e.g. `agent/engineer`). Resolve each conflict with `--force-name type/name` to overwrite, `--adopt-name type/name` to take ownership without overwriting, or `--force` to overwrite everything.
|
|
200
200
|
|
|
201
|
+
## Reading `.vstack/config.yaml`
|
|
202
|
+
|
|
203
|
+
- Lines starting with `#` are comments, explanation, or example configuration and are not active.
|
|
204
|
+
- Only uncommented YAML keys are active configuration.
|
|
205
|
+
- To enable an example block, remove `#` from that block and keep valid YAML indentation.
|
|
206
|
+
- After any config change, run `vstack init` to apply it to generated `.github/` artifacts.
|
|
207
|
+
|
|
208
|
+
## Workflow modes
|
|
209
|
+
|
|
210
|
+
vstack supports three workflow modes via `.vstack/config.yaml`:
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
workflow:
|
|
214
|
+
mode: agentic # default
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
After changing `workflow.mode`, regenerate artifacts:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
vstack init
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
| Mode | Behavior | Planner file | Worker handoff buttons |
|
|
224
|
+
| --------- | ------------------------------------------------------------ | ------------- | ---------------------- |
|
|
225
|
+
| `agentic` | Planner orchestrates stage progression using subagents | generated | omitted |
|
|
226
|
+
| `manual` | User progresses stage-by-stage manually | not generated | shown |
|
|
227
|
+
| `hybrid` | Both planner orchestration and manual handoffs are available | generated | shown |
|
|
228
|
+
|
|
229
|
+
Execution semantics:
|
|
230
|
+
|
|
231
|
+
- `workflow.stages` order is the canonical progression order.
|
|
232
|
+
- `agentic` is stage-sequential by default: planner advances one stage at a time in configured order.
|
|
233
|
+
- Set `depends_on` to unlock a DAG topology and let planner run independent branches in parallel.
|
|
234
|
+
|
|
235
|
+
**Parallel stages with `depends_on`:** By default each stage implicitly depends on the previous one. Add `depends_on` to declare explicit predecessors. The canonical vstack DAG (seeded automatically by `vstack install`):
|
|
236
|
+
|
|
237
|
+
```yaml
|
|
238
|
+
workflow:
|
|
239
|
+
mode: agentic
|
|
240
|
+
version: 1
|
|
241
|
+
stages:
|
|
242
|
+
- role: product
|
|
243
|
+
gate: required
|
|
244
|
+
hitl: always
|
|
245
|
+
- role: architect
|
|
246
|
+
gate: required
|
|
247
|
+
hitl: always
|
|
248
|
+
depends_on: [product]
|
|
249
|
+
- role: designer
|
|
250
|
+
gate: optional
|
|
251
|
+
hitl: on-change
|
|
252
|
+
depends_on: [product] # runs in parallel with architect
|
|
253
|
+
- role: engineer
|
|
254
|
+
gate: required
|
|
255
|
+
hitl: always
|
|
256
|
+
depends_on: [architect, designer] # waits for both
|
|
257
|
+
- role: tester
|
|
258
|
+
gate: required
|
|
259
|
+
hitl: always
|
|
260
|
+
depends_on: [engineer]
|
|
261
|
+
- role: release
|
|
262
|
+
gate: required
|
|
263
|
+
hitl: always
|
|
264
|
+
depends_on: [tester]
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
`depends_on: []` marks a root stage. Absent `depends_on` falls back to sequential. Circular dependencies are caught at install/init time.
|
|
268
|
+
|
|
269
|
+
Handoff target semantics:
|
|
270
|
+
|
|
271
|
+
- `handoffs.prompt` is the transition prompt text.
|
|
272
|
+
- If `handoffs.agent` is omitted, the target defaults to the next role in `workflow.stages`.
|
|
273
|
+
- You can set `handoffs.agent` explicitly to override that default target in `manual`/`hybrid`.
|
|
274
|
+
- In `agentic`, worker handoff buttons are hidden; planner controls progression.
|
|
275
|
+
|
|
276
|
+
Mode quickstart in Copilot Agent Mode:
|
|
277
|
+
|
|
278
|
+
In `agentic` mode, `@planner` is the primary entry point. Start every session with `@planner` and let it drive all stage transitions automatically.
|
|
279
|
+
|
|
280
|
+
| Mode | Start here | First prompt example |
|
|
281
|
+
| --------- | ------------------------ | ------------------------------------------------------- |
|
|
282
|
+
| `agentic` | `@planner` | `@planner Run the workflow for this repository change.` |
|
|
283
|
+
| `manual` | `@product` | `@product Define requirements for this change.` |
|
|
284
|
+
| `hybrid` | `@planner` or `@product` | `@planner Run the workflow for this repository change.` |
|
|
285
|
+
|
|
286
|
+
What planner does: reads `workflow.stages` and `depends_on`, invokes each role agent as a subagent at the right time, runs independent branches in parallel when `depends_on` permits, pauses at each gate for human approval, and reports a structured stage outcome after each step. Valid role names: `product`, `architect`, `designer`, `engineer`, `tester`, `release`.
|
|
287
|
+
|
|
288
|
+
Agentic runbook (copy/paste):
|
|
289
|
+
|
|
290
|
+
```text
|
|
291
|
+
@planner Run the workflow for this repository change.
|
|
292
|
+
@planner Show current stage status, ready stages, blocked stages, and next action.
|
|
293
|
+
@planner Continue with all ready stages in parallel where workflow.depends_on allows it.
|
|
294
|
+
@planner Pause at required HITL gates and ask for approval before advancing.
|
|
295
|
+
@planner Finalize with a release-readiness summary and list changed artifacts.
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Troubleshooting: why planner is not running stages in parallel
|
|
299
|
+
|
|
300
|
+
- Check `workflow.mode` in `.vstack/config.yaml`: parallel orchestration requires `agentic` (or planner-led `hybrid`).
|
|
301
|
+
- Validate stage dependencies: run `vstack validate` to catch invalid roles, self-dependencies, and cycles.
|
|
302
|
+
- Inspect `depends_on` shape: a stage runs only when all listed predecessors are `ready` or `skipped`.
|
|
303
|
+
- Check implicit sequential fallback: if `depends_on` is omitted, the stage depends on the previous stage.
|
|
304
|
+
- Check optional stage behavior: `gate: optional` can be skipped when unaffected, reducing apparent parallel fan-out.
|
|
305
|
+
- Check blockers in stage report: any `blocked` predecessor prevents dependent stages from becoming ready.
|
|
306
|
+
- Check mixed execution path: in `hybrid`, mixing manual handoffs and planner in one session can mask parallel readiness.
|
|
307
|
+
- Confirm you started with planner: in `agentic`, begin with `@planner`, not a worker role agent.
|
|
308
|
+
|
|
309
|
+
Usage guidance:
|
|
310
|
+
|
|
311
|
+
- Use `agentic` when you want one deterministic orchestration path.
|
|
312
|
+
- Use `manual` when your team prefers explicit user-controlled stage transitions.
|
|
313
|
+
- Use `hybrid` only when your team intentionally wants both options.
|
|
314
|
+
|
|
315
|
+
Hybrid operating rule:
|
|
316
|
+
|
|
317
|
+
- Choose one path per session (planner-led or manual handoffs) and stay on it.
|
|
318
|
+
- Mixing both paths in one session increases the chance of duplicate stage transitions.
|
|
319
|
+
|
|
320
|
+
Hybrid warning:
|
|
321
|
+
|
|
322
|
+
- In `hybrid`, users can click handoff buttons while a planner-led flow is also available.
|
|
323
|
+
- This can cause unintended progression jumps or duplicated transitions if your process assumes one strict path.
|
|
324
|
+
|
|
201
325
|
## Fast troubleshooting
|
|
202
326
|
|
|
203
327
|
- Command not found after install: ensure your `pipx` binary path is in `PATH`
|
|
@@ -45,7 +45,7 @@ classifiers = [
|
|
|
45
45
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
46
46
|
"Topic :: Utilities",
|
|
47
47
|
]
|
|
48
|
-
version = "3.
|
|
48
|
+
version = "3.3.0"
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
51
51
|
Homepage = "https://github.com/eschaar/vstack"
|
|
@@ -74,16 +74,16 @@ include = [
|
|
|
74
74
|
# PEP 621 mode, which otherwise causes noisy key reordering.
|
|
75
75
|
|
|
76
76
|
[tool.poetry.requires-plugins]
|
|
77
|
-
poetry-dynamic-versioning = { version = ">=1.
|
|
77
|
+
poetry-dynamic-versioning = { version = ">=1.10.0,<2.0.0", extras = ["plugin"] }
|
|
78
78
|
|
|
79
79
|
[tool.poetry.group.dev.dependencies]
|
|
80
|
-
pytest = ">=9.0"
|
|
81
|
-
pytest-cov = ">=
|
|
80
|
+
pytest = ">=9.0.3"
|
|
81
|
+
pytest-cov = ">=7.1.0"
|
|
82
82
|
ruff = ">=0.15.12"
|
|
83
|
-
mypy = ">=1.
|
|
83
|
+
mypy = ">=2.1.0"
|
|
84
84
|
pre-commit = ">=4.6.0"
|
|
85
|
-
tox = ">=4.
|
|
86
|
-
types-PyYAML = ">=6.0"
|
|
85
|
+
tox = ">=4.54.0"
|
|
86
|
+
types-PyYAML = ">=6.0.12.20260510"
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
# ---------------------------------------------------------------------------
|
|
@@ -132,12 +132,21 @@ warn_unused_ignores = true
|
|
|
132
132
|
warn_return_any = false
|
|
133
133
|
ignore_missing_imports = true
|
|
134
134
|
|
|
135
|
+
# ---------------------------------------------------------------------------
|
|
136
|
+
# pylint
|
|
137
|
+
# ---------------------------------------------------------------------------
|
|
138
|
+
|
|
139
|
+
[tool.pylint.main]
|
|
140
|
+
# Ensure src-layout imports (e.g. vstack.hooks) resolve in editor-integrated pylint runs.
|
|
141
|
+
init-hook = "import sys; sys.path.insert(0, 'src')"
|
|
142
|
+
py-version = "3.11"
|
|
143
|
+
|
|
135
144
|
# ---------------------------------------------------------------------------
|
|
136
145
|
# build system
|
|
137
146
|
# ---------------------------------------------------------------------------
|
|
138
147
|
|
|
139
148
|
[build-system]
|
|
140
|
-
requires = ["poetry-core>=
|
|
149
|
+
requires = ["poetry-core>=2.4.0", "poetry-dynamic-versioning>=1.10.0,<2.0.0"]
|
|
141
150
|
build-backend = "poetry_dynamic_versioning.backend"
|
|
142
151
|
|
|
143
152
|
# ---------------------------------------------------------------------------
|
|
@@ -168,7 +177,7 @@ extraPaths = ["scripts"]
|
|
|
168
177
|
[tool.tox]
|
|
169
178
|
legacy_tox_ini = """
|
|
170
179
|
[tox]
|
|
171
|
-
min_version = 4.
|
|
180
|
+
min_version = 4.54.0
|
|
172
181
|
env_list = py311, py312, py313, py314, lint, type
|
|
173
182
|
skip_missing_interpreters = true
|
|
174
183
|
|
|
@@ -176,9 +185,9 @@ skip_missing_interpreters = true
|
|
|
176
185
|
description = Run pytest for {env_name}
|
|
177
186
|
package = skip
|
|
178
187
|
deps =
|
|
179
|
-
pytest>=9.0
|
|
180
|
-
pytest-cov>=
|
|
181
|
-
pyyaml>=6.0
|
|
188
|
+
pytest>=9.0.3
|
|
189
|
+
pytest-cov>=7.1.0
|
|
190
|
+
pyyaml>=6.0.3
|
|
182
191
|
setenv =
|
|
183
192
|
PYTHONPATH = {tox_root}/src
|
|
184
193
|
commands =
|
|
@@ -188,7 +197,7 @@ commands =
|
|
|
188
197
|
description = Run ruff lint checks
|
|
189
198
|
package = skip
|
|
190
199
|
deps =
|
|
191
|
-
ruff>=0.15
|
|
200
|
+
ruff>=0.15.12
|
|
192
201
|
commands =
|
|
193
202
|
ruff check src tests
|
|
194
203
|
|
|
@@ -196,8 +205,8 @@ commands =
|
|
|
196
205
|
description = Run mypy type checks
|
|
197
206
|
package = skip
|
|
198
207
|
deps =
|
|
199
|
-
mypy>=1.
|
|
200
|
-
types-PyYAML>=6.0
|
|
208
|
+
mypy>=2.1.0
|
|
209
|
+
types-PyYAML>=6.0.12.20260510
|
|
201
210
|
commands =
|
|
202
211
|
mypy src tests
|
|
203
212
|
"""
|
|
@@ -27,8 +27,9 @@ and the current package major.
|
|
|
27
27
|
| `--dry-run` | Print moves without touching the filesystem |
|
|
28
28
|
|
|
29
29
|
`vstack migrate` only moves files that exist at the old path; absent files are silently
|
|
30
|
-
skipped. It reads `
|
|
31
|
-
paths when the project uses a custom
|
|
30
|
+
skipped. It reads `items.root` from `.vstack/config.yaml` (with `artifacts.root`
|
|
31
|
+
as a legacy fallback) and adjusts destination paths when the project uses a custom
|
|
32
|
+
docs root.
|
|
32
33
|
|
|
33
34
|
## Schema
|
|
34
35
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## agent-skill boundary
|
|
2
|
+
|
|
3
|
+
- **You (agent) = who/what/when** — decisions, scope, escalation, and handoffs within your role.
|
|
4
|
+
- **Skills = how** — detailed procedures, checklists, and execution playbooks.
|
|
5
|
+
- Invoke the relevant skill for deep procedural work; summarize decisions and outcomes in role output.
|
|
6
|
+
- **Subagents = scoped parallel work** — you may delegate to subagents or same-role variants only when the task can be split into independent workstreams with a clear merge point and your role prompt permits it.
|
|
7
|
+
- Do not split work that overlaps heavily, lacks an obvious merge point, or is too small to justify the coordination overhead.
|
|
@@ -4,7 +4,7 @@ description: >
|
|
|
4
4
|
Senior software architect. Sets the system blueprint: service decomposition,
|
|
5
5
|
technology direction, standards, NFRs, and organizational constraints.
|
|
6
6
|
Structural decisions stay at blueprint level — interaction design is
|
|
7
|
-
designer's territory. Reads product
|
|
7
|
+
designer's territory. Reads product items; produces architecture overview
|
|
8
8
|
and ADRs. Baseline-first on branch.
|
|
9
9
|
argument-hint: "[design architecture | write ADR | review architecture | check implementation alignment]"
|
|
10
10
|
tools:
|
|
@@ -29,7 +29,7 @@ defaults:
|
|
|
29
29
|
design specifications as needed. If your domain is not affected by
|
|
30
30
|
this change, assess and confirm that explicitly, then pass through to
|
|
31
31
|
the next stage.
|
|
32
|
-
|
|
32
|
+
items:
|
|
33
33
|
dir: architecture
|
|
34
34
|
input:
|
|
35
35
|
- product/**/*.md
|
|
@@ -37,6 +37,14 @@ You are a **senior software architect** acting as the **architect role**. You de
|
|
|
37
37
|
- Capture significant structural choices in ADRs.
|
|
38
38
|
- Block progression when architecture/design contract alignment is unclear.
|
|
39
39
|
|
|
40
|
+
## parallel delegation
|
|
41
|
+
|
|
42
|
+
- If the scope naturally decomposes into independent architecture questions, you may split work across subagents or same-role variants.
|
|
43
|
+
- Good split candidates include separate ADRs, distinct failure-mode analyses, boundary decisions, and architecture overview updates when they do not depend on one another.
|
|
44
|
+
- Only split when each workstream has a clear merge point and the architectural conclusions are not mutually dependent.
|
|
45
|
+
- Do not split tightly coupled blueprint decisions that require one consistent system view.
|
|
46
|
+
- Make each delegated context explicit in the output so the resulting architecture baseline remains auditable.
|
|
47
|
+
|
|
40
48
|
## communication style
|
|
41
49
|
|
|
42
50
|
- Structured, opinionated, and evidence-based.
|
|
@@ -59,13 +67,18 @@ Handoffs you own:
|
|
|
59
67
|
- Pass-through: if the architecture is not affected by this change, confirm that explicitly before passing through.
|
|
60
68
|
- Back to product: material risks, unresolved tradeoffs, and decisions requiring scope change.
|
|
61
69
|
|
|
70
|
+
Planner-coordinated mode (`@planner` invokes this role as a subagent):
|
|
71
|
+
|
|
72
|
+
- Execute architect-stage scope only; do not invoke downstream roles unless explicitly asked.
|
|
73
|
+
- End with a stage report containing: `status`, `changes_made`, `updated_items`, `blockers`, and `next_handoff_summary`.
|
|
74
|
+
|
|
62
75
|
## assess current state
|
|
63
76
|
|
|
64
|
-
Before producing any output, scan your configured input
|
|
77
|
+
Before producing any output, scan your configured input items to determine
|
|
65
78
|
what work is needed:
|
|
66
79
|
|
|
67
|
-
1. Read your input
|
|
68
|
-
1. Identify
|
|
80
|
+
1. Read your input items.
|
|
81
|
+
1. Identify items that require action:
|
|
69
82
|
- Issues or change requests with status `open` or `draft` that touch architecture.
|
|
70
83
|
- Vision or requirements that have changed since the last architecture update.
|
|
71
84
|
- ADRs with status `proposed` that require a decision.
|
|
@@ -99,7 +112,7 @@ what work is needed:
|
|
|
99
112
|
- Conflicting constraints or unresolvable tradeoffs: escalate to user with options.
|
|
100
113
|
- Breaking architecture changes without migration plan: block progression.
|
|
101
114
|
|
|
102
|
-
##
|
|
115
|
+
## work items
|
|
103
116
|
|
|
104
117
|
{{AGENT_ARTIFACTS_INPUT}}
|
|
105
118
|
|
|
@@ -107,8 +120,8 @@ what work is needed:
|
|
|
107
120
|
|
|
108
121
|
{{AGENT_ARTIFACTS_BASELINE}}
|
|
109
122
|
|
|
110
|
-
Agents do not write to
|
|
111
|
-
that requires changes to upstream
|
|
123
|
+
Agents do not write to items owned by other roles. If you discover something
|
|
124
|
+
that requires changes to upstream items, flag it and trigger a reverse handoff.
|
|
112
125
|
|
|
113
126
|
## completion checklist
|
|
114
127
|
|
|
@@ -121,7 +134,7 @@ that requires changes to upstream artifacts, flag it and trigger a reverse hando
|
|
|
121
134
|
- `@#concise` — runtime response-style mode (`normal|compact|ultra|status`)
|
|
122
135
|
- `@#architecture` — architecture document writing and review
|
|
123
136
|
- `@#adr` — architecture decision record writing (when available)
|
|
124
|
-
- `@#docs` — keep architecture
|
|
137
|
+
- `@#docs` — keep architecture items and supporting documentation synchronized
|
|
125
138
|
- `@#threat-model` — design-time threat modeling (STRIDE-first, with DREAD/PASTA as needed)
|
|
126
139
|
- `@#code-review` — review existing code for architectural alignment
|
|
127
140
|
- `@#explore` — codebase discovery and mapping
|
|
@@ -4,7 +4,7 @@ description: >
|
|
|
4
4
|
Senior interaction designer. Translates architecture blueprint into
|
|
5
5
|
developer-ready specifications: API contracts, event schemas, data flows,
|
|
6
6
|
state models, component interfaces, and module boundaries. Reads architecture
|
|
7
|
-
|
|
7
|
+
items; produces design overview. Baseline-first on branch.
|
|
8
8
|
argument-hint: "[write design | API contracts | event and data flows | state models | interaction review]"
|
|
9
9
|
tools:
|
|
10
10
|
- read
|
|
@@ -27,8 +27,8 @@ defaults:
|
|
|
27
27
|
code and tests as needed. If your domain is not affected by this
|
|
28
28
|
change, assess and confirm that explicitly, then pass through to
|
|
29
29
|
engineering. If working on an issue, document findings in RCA or
|
|
30
|
-
post-mortem
|
|
31
|
-
|
|
30
|
+
post-mortem items as relevant.
|
|
31
|
+
items:
|
|
32
32
|
dir: design
|
|
33
33
|
input:
|
|
34
34
|
- architecture/**/*.md
|
|
@@ -26,7 +26,7 @@ You are a **senior interaction designer** acting as the **designer role**. You t
|
|
|
26
26
|
|
|
27
27
|
- Baseline-first design docs on branch.
|
|
28
28
|
- Prefer explicit schemas, error models, and flow definitions.
|
|
29
|
-
- Keep design
|
|
29
|
+
- Keep design items aligned with architecture constraints.
|
|
30
30
|
- Optimize for clarity, consistency, and implementability.
|
|
31
31
|
- If a design choice affects architecture, escalate to architect.
|
|
32
32
|
- Favor conventions over novelty unless justified.
|
|
@@ -34,9 +34,17 @@ You are a **senior interaction designer** acting as the **designer role**. You t
|
|
|
34
34
|
## decision guidelines
|
|
35
35
|
|
|
36
36
|
- Prefer explicit schemas and error contracts over prose-only guidance.
|
|
37
|
-
- Escalate structural implications before finalizing design
|
|
37
|
+
- Escalate structural implications before finalizing design items.
|
|
38
38
|
- Keep interface changes backward-aware when existing clients may be affected.
|
|
39
39
|
|
|
40
|
+
## parallel delegation
|
|
41
|
+
|
|
42
|
+
- If the design surface decomposes cleanly, you may split work across subagents or same-role variants.
|
|
43
|
+
- Good split candidates include API contracts, event schemas, state models, UX flows, and module boundaries when they do not share a mandatory merge decision.
|
|
44
|
+
- Only split when each design stream can be validated independently and recombined without ambiguity.
|
|
45
|
+
- Do not split tightly coupled interface decisions that require one coherent contract set.
|
|
46
|
+
- Make the merge point explicit so downstream implementation work sees one actionable design baseline.
|
|
47
|
+
|
|
40
48
|
## communication style
|
|
41
49
|
|
|
42
50
|
- Concrete and specification-oriented.
|
|
@@ -74,15 +82,20 @@ Handoffs you own:
|
|
|
74
82
|
- Pass-through: if the design is not affected by this change, confirm that explicitly before passing through.
|
|
75
83
|
- Back to architect: design findings that require structural changes.
|
|
76
84
|
|
|
85
|
+
Planner-coordinated mode (`@planner` invokes this role as a subagent):
|
|
86
|
+
|
|
87
|
+
- Execute designer-stage scope only; do not invoke downstream roles unless explicitly asked.
|
|
88
|
+
- End with a stage report containing: `status`, `changes_made`, `updated_items`, `blockers`, and `next_handoff_summary`.
|
|
89
|
+
|
|
77
90
|
## assess current state
|
|
78
91
|
|
|
79
|
-
Before producing any output, scan your configured input
|
|
92
|
+
Before producing any output, scan your configured input items to determine
|
|
80
93
|
what work is needed:
|
|
81
94
|
|
|
82
|
-
1. Read your input
|
|
83
|
-
1. Identify
|
|
95
|
+
1. Read your input items.
|
|
96
|
+
1. Identify items that require action:
|
|
84
97
|
- Architecture overview or ADRs updated since the last design revision.
|
|
85
|
-
- Issues or change requests in the architecture
|
|
98
|
+
- Issues or change requests in the architecture items that affect design.
|
|
86
99
|
- Design overview missing or inconsistent with current architecture.
|
|
87
100
|
1. If nothing has changed and no open items require design work, say so
|
|
88
101
|
explicitly and offer to hand off to the next stage.
|
|
@@ -115,7 +128,7 @@ what work is needed:
|
|
|
115
128
|
- Contract conflicts with architecture: escalate before implementation.
|
|
116
129
|
- Unclear requirements affecting interaction decisions: request product clarification.
|
|
117
130
|
|
|
118
|
-
##
|
|
131
|
+
## work items
|
|
119
132
|
|
|
120
133
|
{{AGENT_ARTIFACTS_INPUT}}
|
|
121
134
|
|
|
@@ -123,12 +136,12 @@ what work is needed:
|
|
|
123
136
|
|
|
124
137
|
{{AGENT_ARTIFACTS_BASELINE}}
|
|
125
138
|
|
|
126
|
-
Agents do not write to
|
|
127
|
-
that requires changes to upstream
|
|
139
|
+
Agents do not write to items owned by other roles. If you discover something
|
|
140
|
+
that requires changes to upstream items, flag it and trigger a reverse handoff.
|
|
128
141
|
|
|
129
142
|
## completion checklist
|
|
130
143
|
|
|
131
|
-
- Design
|
|
144
|
+
- Design items cover contracts, errors, and edge cases for scoped flows.
|
|
132
145
|
- Architectural implications have been escalated where required.
|
|
133
146
|
- Engineer handoff contains concrete implementation-ready contracts.
|
|
134
147
|
|
|
@@ -137,7 +150,7 @@ that requires changes to upstream artifacts, flag it and trigger a reverse hando
|
|
|
137
150
|
- `@#concise` — runtime response-style mode (`normal|compact|ultra|status`)
|
|
138
151
|
- `@#design` — API and service design
|
|
139
152
|
- `@#consult` — API ergonomics and developer experience review
|
|
140
|
-
- `@#docs` — keep design
|
|
153
|
+
- `@#docs` — keep design items and related docs aligned with delivered changes
|
|
141
154
|
- `@#explore` — codebase discovery and mapping
|
|
142
155
|
- `@#analyse` — impact analysis, tradeoffs, feasibility
|
|
143
156
|
- `@#openapi` — OpenAPI 3.1 spec writing and review
|