vstack 3.0.0__tar.gz → 3.2.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.0.0 → vstack-3.2.0}/PKG-INFO +154 -14
- {vstack-3.0.0 → vstack-3.2.0}/README-pypi.md +148 -12
- {vstack-3.0.0 → vstack-3.2.0}/pyproject.toml +39 -13
- vstack-3.2.0/src/vstack/_migrations/README.md +45 -0
- vstack-3.2.0/src/vstack/_migrations/v2_to_v3.yaml +39 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/architect/config.yaml +14 -12
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/architect/template.md +14 -7
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/designer/config.yaml +18 -16
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/designer/template.md +18 -11
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/engineer/config.yaml +15 -16
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/engineer/template.md +16 -9
- vstack-3.2.0/src/vstack/_templates/agents/planner/config.yaml +28 -0
- vstack-3.2.0/src/vstack/_templates/agents/planner/template.md +103 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/config.yaml +16 -13
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/template.md +18 -11
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/release/artifacts/release-summary.md +1 -1
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/release/config.yaml +12 -9
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/release/template.md +20 -13
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/tester/config.yaml +12 -13
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/tester/template.md +17 -10
- vstack-3.2.0/src/vstack/_templates/hooks/log-retention-cleanup/hook.yaml +108 -0
- vstack-3.2.0/src/vstack/_templates/hooks/post-commit-security-scan/hook.yaml +73 -0
- vstack-3.2.0/src/vstack/_templates/hooks/post-edit-format/hook.yaml +70 -0
- vstack-3.2.0/src/vstack/_templates/hooks/post-edit-markdown-quality/hook.yaml +73 -0
- vstack-3.2.0/src/vstack/_templates/hooks/pre-tool-safety-gate/hook.yaml +93 -0
- vstack-3.2.0/src/vstack/_templates/hooks/session-audit/hook.yaml +248 -0
- vstack-3.2.0/src/vstack/_templates/project/.vstack/config.yaml +202 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/adr/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/analyse/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/architecture/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/aws-cli/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/cicd/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/cloudformation/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/code-review/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/codeql/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/concise/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/consult/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/container/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/conventional-commit/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/debug/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/dependabot/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/dependency/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/design/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/docs/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/explore/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gdpr/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gh-issues/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gh-release/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/guardrails/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/helm/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/incident/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/inspect/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/k8s/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/migrate/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/onboard/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/openapi/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/performance/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/postmortem/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/pr/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/rancher/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/rca/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/refactor/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/release-notes/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/requirements/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/secret-scan/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/security/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/terraform/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/terragrunt/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/threat-model/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/verify/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/vision/config.yaml +1 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/agents/config.py +1 -1
- vstack-3.2.0/src/vstack/agents/generator.py +424 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/protocol.py +5 -4
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/base.py +5 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/catalog.py +10 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/constants.py +12 -2
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/init.py +127 -10
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/install.py +4 -3
- vstack-3.2.0/src/vstack/cli/interface.py +473 -0
- vstack-3.2.0/src/vstack/cli/migrate.py +385 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/parser.py +31 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/service.py +52 -4
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/uninstall.py +4 -8
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/verify.py +3 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/constants.py +5 -3
- vstack-3.2.0/src/vstack/frontmatter/parser.py +98 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/frontmatter/serializer.py +34 -3
- vstack-3.2.0/src/vstack/hooks/__init__.py +5 -0
- vstack-3.2.0/src/vstack/hooks/config.py +22 -0
- vstack-3.2.0/src/vstack/hooks/constants.py +10 -0
- vstack-3.2.0/src/vstack/hooks/generator.py +339 -0
- vstack-3.2.0/src/vstack/manifest/__init__.py +71 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/manifest/store.py +35 -40
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/skills/config.py +2 -0
- vstack-3.2.0/src/vstack/utils.py +20 -0
- vstack-3.0.0/src/vstack/_templates/project/.vstack/config.yaml +0 -28
- vstack-3.0.0/src/vstack/agents/generator.py +0 -194
- vstack-3.0.0/src/vstack/cli/helpers.py +0 -8
- vstack-3.0.0/src/vstack/cli/interface.py +0 -196
- vstack-3.0.0/src/vstack/cli/registry.py +0 -15
- vstack-3.0.0/src/vstack/frontmatter/parser.py +0 -272
- vstack-3.0.0/src/vstack/manifest/__init__.py +0 -25
- {vstack-3.0.0 → vstack-3.2.0}/LICENSE +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/__main__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/_partials/agent-skill-boundary.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/architect/artifacts/adr/NNN-template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/architect/artifacts/overview.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/designer/artifacts/overview.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/engineer/artifacts/issues/postmortem.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/engineer/artifacts/issues/rca.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/artifacts/changes/change-request.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/artifacts/issues/issue.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/artifacts/requirements.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/artifacts/roadmap.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/product/artifacts/vision.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/tester/artifacts/performance-baseline.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/tester/artifacts/security-report.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/agents/tester/artifacts/test-report.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/git/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/git/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/helm/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/helm/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/java/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/java/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/k8s/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/k8s/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/markdown/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/markdown/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/python/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/python/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/rancher/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/rancher/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/security/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/security/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/terraform/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/terraform/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/terragrunt/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/terragrunt/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/testing/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/testing/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/typescript/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/instructions/typescript/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/api-design-review/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/api-design-review/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/architecture-risk/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/architecture-risk/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/code-review/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/code-review/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/dependency-audit/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/dependency-audit/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/incident-timeline/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/incident-timeline/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/migration-safety/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/migration-safety/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/release-readiness/config.yaml +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/prompts/release-readiness/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/_partials/base-branch.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/_partials/observability-checklist.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/_partials/run-tests.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/_partials/skill-context.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/adr/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/analyse/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/architecture/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/aws-cli/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/cicd/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/cloudformation/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/code-review/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/codeql/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/concise/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/consult/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/container/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/conventional-commit/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/debug/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/dependabot/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/dependency/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/design/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/docs/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/explore/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gdpr/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gh-issues/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/gh-release/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/guardrails/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/helm/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/incident/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/inspect/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/k8s/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/migrate/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/onboard/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/openapi/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/performance/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/postmortem/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/pr/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/rancher/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/rca/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/refactor/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/release-notes/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/requirements/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/secret-scan/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/security/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/terraform/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/terragrunt/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/threat-model/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/verify/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/_templates/skills/vision/template.md +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/agents/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/agents/constants.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/config.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/constants.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/generator.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/artifacts/models.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/manifest.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/report.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/status.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/cli/validate.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/frontmatter/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/frontmatter/schema.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/instructions/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/instructions/config.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/instructions/constants.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/instructions/generator.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/main.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/models.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/prompts/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/prompts/config.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/prompts/constants.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/prompts/generator.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/skills/__init__.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/skills/constants.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/skills/generator.py +0 -0
- {vstack-3.0.0 → vstack-3.2.0}/src/vstack/skills/models.py +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vstack
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.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
|
|
7
|
-
Keywords: github-copilot,vscode,ai-workflows,developer-tools,devx,engineering-workflow,copilot-agent-mode,backend,microservices,api,workflow-automation,release-engineering
|
|
7
|
+
Keywords: github-copilot,vscode,ai-workflows,developer-tools,devx,engineering-workflow,copilot-agent-mode,backend,microservices,api,workflow-automation,release-engineering,agentic-workflow,agentic-ai,ai-agent,llm,llm-agents,prompt-engineering,code-generation,scaffolding,cli,agents
|
|
8
8
|
Requires-Python: >=3.11,<3.15
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
11
|
Classifier: Programming Language :: Python :: 3
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -15,7 +16,10 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
15
16
|
Classifier: Environment :: Console
|
|
16
17
|
Classifier: Intended Audience :: Developers
|
|
17
18
|
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
18
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Requires-Dist: pyyaml (>=6.0)
|
|
19
23
|
Project-URL: Changelog, https://github.com/eschaar/vstack/blob/main/CHANGELOG.md
|
|
20
24
|
Project-URL: Documentation, https://github.com/eschaar/vstack/blob/main/README.md
|
|
21
25
|
Project-URL: Discussions, https://github.com/eschaar/vstack/discussions
|
|
@@ -33,7 +37,7 @@ Description-Content-Type: text/markdown
|
|
|
33
37
|
[](https://github.com/eschaar/vstack/blob/main/pyproject.toml)
|
|
34
38
|
[](https://github.com/eschaar/vstack/actions/workflows/verify.yml)
|
|
35
39
|
[](https://github.com/eschaar/vstack/actions/workflows/security.yml)
|
|
36
|
-
[](https://github.com/eschaar/vstack/blob/main/pyproject.toml)
|
|
37
41
|
[](https://github.com/eschaar/vstack/blob/main/LICENSE)
|
|
38
42
|
[](https://github.com/eschaar/vstack/discussions)
|
|
39
43
|
|
|
@@ -41,7 +45,7 @@ The VS Code-native AI workflow system for backend engineering.
|
|
|
41
45
|
|
|
42
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.
|
|
43
47
|
|
|
44
|
-
It provides
|
|
48
|
+
It provides six delivery roles for end-to-end software work: `product`, `architect`, `designer`, `engineer`, `tester`, and `release`, coordinated by `planner`.
|
|
45
49
|
|
|
46
50
|
## Best for
|
|
47
51
|
|
|
@@ -51,10 +55,10 @@ It provides a fixed role model for end-to-end software delivery: `product`, `arc
|
|
|
51
55
|
|
|
52
56
|
## What you get
|
|
53
57
|
|
|
54
|
-
- Fixed role model:
|
|
58
|
+
- Fixed role model: six delivery roles plus a planner coordinator
|
|
55
59
|
- Template-driven install model from `src/vstack/_templates/`
|
|
56
60
|
- Backend-first verification, security, and release discipline
|
|
57
|
-
-
|
|
61
|
+
- One runtime dependency: PyYAML
|
|
58
62
|
|
|
59
63
|
## Building blocks
|
|
60
64
|
|
|
@@ -80,16 +84,23 @@ VS Code command palette (`Chat: Run Prompt File`) or the Copilot Chat attach but
|
|
|
80
84
|
| `migration-safety` | Review DB migration safety, rollback, and zero-downtime |
|
|
81
85
|
| `release-readiness` | Evaluate release readiness from reports and open blockers |
|
|
82
86
|
|
|
83
|
-
##
|
|
87
|
+
## Quickstart — fresh install
|
|
84
88
|
|
|
85
89
|
Install with `pipx`, then install vstack artifacts into your repository:
|
|
86
90
|
|
|
87
91
|
```bash
|
|
92
|
+
# Install the CLI once, globally
|
|
88
93
|
pipx install vstack
|
|
89
|
-
|
|
90
|
-
|
|
94
|
+
|
|
95
|
+
# Move to your repository root and run install — no --target needed
|
|
96
|
+
cd /path/to/your/project
|
|
97
|
+
vstack install # seeds .vstack/config.yaml and generates .github/ in the current directory
|
|
98
|
+
vstack validate # confirm no errors
|
|
91
99
|
```
|
|
92
100
|
|
|
101
|
+
When you omit `--target`, vstack uses the current working directory. The equivalent
|
|
102
|
+
explicit form is `vstack install --target /path/to/your/project`.
|
|
103
|
+
|
|
93
104
|
Run a first task in Copilot Agent Mode:
|
|
94
105
|
|
|
95
106
|
```text
|
|
@@ -101,6 +112,57 @@ Expected result:
|
|
|
101
112
|
- `vstack validate` reports no unresolved template tokens
|
|
102
113
|
- Agent command returns a concrete verification summary for your repository
|
|
103
114
|
|
|
115
|
+
## Quick upgrade
|
|
116
|
+
|
|
117
|
+
### Patch or minor version (e.g. v3.1 → v3.2, same major)
|
|
118
|
+
|
|
119
|
+
Docs paths never change within a major version. Only `.github/` artifacts are updated.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pipx upgrade vstack
|
|
123
|
+
|
|
124
|
+
cd /path/to/your/project
|
|
125
|
+
vstack init # idempotent — safe to run in CI
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Major version (e.g. v2 → v3)
|
|
129
|
+
|
|
130
|
+
Docs paths may change on a major version bump. Run `vstack migrate` before `vstack init`.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
pipx upgrade vstack
|
|
134
|
+
|
|
135
|
+
cd /path/to/your/project
|
|
136
|
+
vstack migrate # moves docs files to their new paths (auto-detects installed version)
|
|
137
|
+
vstack init # regenerates .github/ artifacts
|
|
138
|
+
|
|
139
|
+
# Only if you see "Legacy manifest schema detected" in the output above:
|
|
140
|
+
vstack manifest upgrade
|
|
141
|
+
vstack init
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Preview the docs moves without touching any files:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
vstack migrate --dry-run
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
For upgrades spanning multiple major versions (e.g. v1 → v3), `vstack migrate` chains
|
|
151
|
+
all intermediate steps automatically. Use `--from` and `--to` to specify the range
|
|
152
|
+
explicitly if auto-detection from the manifest fails:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
vstack migrate --from 1 --to 3
|
|
156
|
+
vstack init
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Force reinstall (overwrite local edits)
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
vstack install --force # overwrite all managed artifacts
|
|
163
|
+
vstack install --force-name agent/engineer # overwrite one specific artifact
|
|
164
|
+
```
|
|
165
|
+
|
|
104
166
|
## Why this helps
|
|
105
167
|
|
|
106
168
|
- Consistent role boundaries for planning, implementation, validation, and release
|
|
@@ -112,10 +174,17 @@ Expected result:
|
|
|
112
174
|
```bash
|
|
113
175
|
vstack --version
|
|
114
176
|
vstack validate
|
|
177
|
+
|
|
178
|
+
# Run from your repository root (--target defaults to the current directory)
|
|
179
|
+
vstack install
|
|
180
|
+
vstack init
|
|
181
|
+
vstack migrate
|
|
182
|
+
vstack manifest verify
|
|
183
|
+
vstack manifest status
|
|
184
|
+
vstack manifest upgrade
|
|
185
|
+
|
|
186
|
+
# Or specify a path explicitly
|
|
115
187
|
vstack install --target /path/to/your/project
|
|
116
|
-
vstack manifest verify --target /path/to/your/project
|
|
117
|
-
vstack manifest status --target /path/to/your/project
|
|
118
|
-
vstack manifest upgrade --target /path/to/your/project
|
|
119
188
|
```
|
|
120
189
|
|
|
121
190
|
## Common usage patterns
|
|
@@ -123,6 +192,11 @@ vstack manifest upgrade --target /path/to/your/project
|
|
|
123
192
|
Repository-scoped install (recommended for teams):
|
|
124
193
|
|
|
125
194
|
```bash
|
|
195
|
+
# Move to your repository root and install there
|
|
196
|
+
cd /path/to/your/project
|
|
197
|
+
vstack install
|
|
198
|
+
|
|
199
|
+
# Or specify a path explicitly from any directory
|
|
126
200
|
vstack install --target /path/to/your/project
|
|
127
201
|
```
|
|
128
202
|
|
|
@@ -149,15 +223,81 @@ exclude:
|
|
|
149
223
|
If you already have agents, skills, or other files in `.github/`, run a dry-run first to see what would be preserved before committing:
|
|
150
224
|
|
|
151
225
|
```bash
|
|
152
|
-
|
|
226
|
+
# Run from your repository root
|
|
227
|
+
vstack install --dry-run
|
|
153
228
|
```
|
|
154
229
|
|
|
155
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.
|
|
156
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
|
+
- Parallelization is still possible inside a stage (independent subtasks), but cross-stage progression remains ordered.
|
|
265
|
+
|
|
266
|
+
Handoff target semantics:
|
|
267
|
+
|
|
268
|
+
- `handoffs.prompt` is the transition prompt text.
|
|
269
|
+
- If `handoffs.agent` is omitted, the target defaults to the next role in `workflow.stages`.
|
|
270
|
+
- You can set `handoffs.agent` explicitly to override that default target in `manual`/`hybrid`.
|
|
271
|
+
- In `agentic`, worker handoff buttons are hidden; planner controls progression.
|
|
272
|
+
|
|
273
|
+
Mode quickstart in Copilot Agent Mode:
|
|
274
|
+
|
|
275
|
+
| Mode | Start here | First prompt example |
|
|
276
|
+
| --------- | ------------------------ | ------------------------------------------------------- |
|
|
277
|
+
| `agentic` | `@planner` | `@planner Run the workflow for this repository change.` |
|
|
278
|
+
| `manual` | `@product` | `@product Define requirements for this change.` |
|
|
279
|
+
| `hybrid` | `@planner` or `@product` | `@planner Run the workflow for this repository change.` |
|
|
280
|
+
|
|
281
|
+
Usage guidance:
|
|
282
|
+
|
|
283
|
+
- Use `agentic` when you want one deterministic orchestration path.
|
|
284
|
+
- Use `manual` when your team prefers explicit user-controlled stage transitions.
|
|
285
|
+
- Use `hybrid` only when your team intentionally wants both options.
|
|
286
|
+
|
|
287
|
+
Hybrid operating rule:
|
|
288
|
+
|
|
289
|
+
- Choose one path per session (planner-led or manual handoffs) and stay on it.
|
|
290
|
+
- Mixing both paths in one session increases the chance of duplicate stage transitions.
|
|
291
|
+
|
|
292
|
+
Hybrid warning:
|
|
293
|
+
|
|
294
|
+
- In `hybrid`, users can click handoff buttons while a planner-led flow is also available.
|
|
295
|
+
- This can cause unintended progression jumps or duplicated transitions if your process assumes one strict path.
|
|
296
|
+
|
|
157
297
|
## Fast troubleshooting
|
|
158
298
|
|
|
159
299
|
- Command not found after install: ensure your `pipx` binary path is in `PATH`
|
|
160
|
-
- Validation error: rerun `vstack install
|
|
300
|
+
- Validation error: rerun `vstack install` from your repository root and then `vstack validate`
|
|
161
301
|
- Agent results look generic: explicitly invoke a role (for example `@tester`) before a skill
|
|
162
302
|
|
|
163
303
|
## Full documentation
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://github.com/eschaar/vstack/blob/main/pyproject.toml)
|
|
7
7
|
[](https://github.com/eschaar/vstack/actions/workflows/verify.yml)
|
|
8
8
|
[](https://github.com/eschaar/vstack/actions/workflows/security.yml)
|
|
9
|
-
[](https://github.com/eschaar/vstack/blob/main/pyproject.toml)
|
|
10
10
|
[](https://github.com/eschaar/vstack/blob/main/LICENSE)
|
|
11
11
|
[](https://github.com/eschaar/vstack/discussions)
|
|
12
12
|
|
|
@@ -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,10 +24,10 @@ 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
|
|
31
31
|
|
|
32
32
|
## Building blocks
|
|
33
33
|
|
|
@@ -53,16 +53,23 @@ VS Code command palette (`Chat: Run Prompt File`) or the Copilot Chat attach but
|
|
|
53
53
|
| `migration-safety` | Review DB migration safety, rollback, and zero-downtime |
|
|
54
54
|
| `release-readiness` | Evaluate release readiness from reports and open blockers |
|
|
55
55
|
|
|
56
|
-
##
|
|
56
|
+
## Quickstart — fresh install
|
|
57
57
|
|
|
58
58
|
Install with `pipx`, then install vstack artifacts into your repository:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
+
# Install the CLI once, globally
|
|
61
62
|
pipx install vstack
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
# Move to your repository root and run install — no --target needed
|
|
65
|
+
cd /path/to/your/project
|
|
66
|
+
vstack install # seeds .vstack/config.yaml and generates .github/ in the current directory
|
|
67
|
+
vstack validate # confirm no errors
|
|
64
68
|
```
|
|
65
69
|
|
|
70
|
+
When you omit `--target`, vstack uses the current working directory. The equivalent
|
|
71
|
+
explicit form is `vstack install --target /path/to/your/project`.
|
|
72
|
+
|
|
66
73
|
Run a first task in Copilot Agent Mode:
|
|
67
74
|
|
|
68
75
|
```text
|
|
@@ -74,6 +81,57 @@ Expected result:
|
|
|
74
81
|
- `vstack validate` reports no unresolved template tokens
|
|
75
82
|
- Agent command returns a concrete verification summary for your repository
|
|
76
83
|
|
|
84
|
+
## Quick upgrade
|
|
85
|
+
|
|
86
|
+
### Patch or minor version (e.g. v3.1 → v3.2, same major)
|
|
87
|
+
|
|
88
|
+
Docs paths never change within a major version. Only `.github/` artifacts are updated.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pipx upgrade vstack
|
|
92
|
+
|
|
93
|
+
cd /path/to/your/project
|
|
94
|
+
vstack init # idempotent — safe to run in CI
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Major version (e.g. v2 → v3)
|
|
98
|
+
|
|
99
|
+
Docs paths may change on a major version bump. Run `vstack migrate` before `vstack init`.
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pipx upgrade vstack
|
|
103
|
+
|
|
104
|
+
cd /path/to/your/project
|
|
105
|
+
vstack migrate # moves docs files to their new paths (auto-detects installed version)
|
|
106
|
+
vstack init # regenerates .github/ artifacts
|
|
107
|
+
|
|
108
|
+
# Only if you see "Legacy manifest schema detected" in the output above:
|
|
109
|
+
vstack manifest upgrade
|
|
110
|
+
vstack init
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Preview the docs moves without touching any files:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
vstack migrate --dry-run
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
For upgrades spanning multiple major versions (e.g. v1 → v3), `vstack migrate` chains
|
|
120
|
+
all intermediate steps automatically. Use `--from` and `--to` to specify the range
|
|
121
|
+
explicitly if auto-detection from the manifest fails:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
vstack migrate --from 1 --to 3
|
|
125
|
+
vstack init
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Force reinstall (overwrite local edits)
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
vstack install --force # overwrite all managed artifacts
|
|
132
|
+
vstack install --force-name agent/engineer # overwrite one specific artifact
|
|
133
|
+
```
|
|
134
|
+
|
|
77
135
|
## Why this helps
|
|
78
136
|
|
|
79
137
|
- Consistent role boundaries for planning, implementation, validation, and release
|
|
@@ -85,10 +143,17 @@ Expected result:
|
|
|
85
143
|
```bash
|
|
86
144
|
vstack --version
|
|
87
145
|
vstack validate
|
|
146
|
+
|
|
147
|
+
# Run from your repository root (--target defaults to the current directory)
|
|
148
|
+
vstack install
|
|
149
|
+
vstack init
|
|
150
|
+
vstack migrate
|
|
151
|
+
vstack manifest verify
|
|
152
|
+
vstack manifest status
|
|
153
|
+
vstack manifest upgrade
|
|
154
|
+
|
|
155
|
+
# Or specify a path explicitly
|
|
88
156
|
vstack install --target /path/to/your/project
|
|
89
|
-
vstack manifest verify --target /path/to/your/project
|
|
90
|
-
vstack manifest status --target /path/to/your/project
|
|
91
|
-
vstack manifest upgrade --target /path/to/your/project
|
|
92
157
|
```
|
|
93
158
|
|
|
94
159
|
## Common usage patterns
|
|
@@ -96,6 +161,11 @@ vstack manifest upgrade --target /path/to/your/project
|
|
|
96
161
|
Repository-scoped install (recommended for teams):
|
|
97
162
|
|
|
98
163
|
```bash
|
|
164
|
+
# Move to your repository root and install there
|
|
165
|
+
cd /path/to/your/project
|
|
166
|
+
vstack install
|
|
167
|
+
|
|
168
|
+
# Or specify a path explicitly from any directory
|
|
99
169
|
vstack install --target /path/to/your/project
|
|
100
170
|
```
|
|
101
171
|
|
|
@@ -122,15 +192,81 @@ exclude:
|
|
|
122
192
|
If you already have agents, skills, or other files in `.github/`, run a dry-run first to see what would be preserved before committing:
|
|
123
193
|
|
|
124
194
|
```bash
|
|
125
|
-
|
|
195
|
+
# Run from your repository root
|
|
196
|
+
vstack install --dry-run
|
|
126
197
|
```
|
|
127
198
|
|
|
128
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.
|
|
129
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
|
+
- Parallelization is still possible inside a stage (independent subtasks), but cross-stage progression remains ordered.
|
|
234
|
+
|
|
235
|
+
Handoff target semantics:
|
|
236
|
+
|
|
237
|
+
- `handoffs.prompt` is the transition prompt text.
|
|
238
|
+
- If `handoffs.agent` is omitted, the target defaults to the next role in `workflow.stages`.
|
|
239
|
+
- You can set `handoffs.agent` explicitly to override that default target in `manual`/`hybrid`.
|
|
240
|
+
- In `agentic`, worker handoff buttons are hidden; planner controls progression.
|
|
241
|
+
|
|
242
|
+
Mode quickstart in Copilot Agent Mode:
|
|
243
|
+
|
|
244
|
+
| Mode | Start here | First prompt example |
|
|
245
|
+
| --------- | ------------------------ | ------------------------------------------------------- |
|
|
246
|
+
| `agentic` | `@planner` | `@planner Run the workflow for this repository change.` |
|
|
247
|
+
| `manual` | `@product` | `@product Define requirements for this change.` |
|
|
248
|
+
| `hybrid` | `@planner` or `@product` | `@planner Run the workflow for this repository change.` |
|
|
249
|
+
|
|
250
|
+
Usage guidance:
|
|
251
|
+
|
|
252
|
+
- Use `agentic` when you want one deterministic orchestration path.
|
|
253
|
+
- Use `manual` when your team prefers explicit user-controlled stage transitions.
|
|
254
|
+
- Use `hybrid` only when your team intentionally wants both options.
|
|
255
|
+
|
|
256
|
+
Hybrid operating rule:
|
|
257
|
+
|
|
258
|
+
- Choose one path per session (planner-led or manual handoffs) and stay on it.
|
|
259
|
+
- Mixing both paths in one session increases the chance of duplicate stage transitions.
|
|
260
|
+
|
|
261
|
+
Hybrid warning:
|
|
262
|
+
|
|
263
|
+
- In `hybrid`, users can click handoff buttons while a planner-led flow is also available.
|
|
264
|
+
- This can cause unintended progression jumps or duplicated transitions if your process assumes one strict path.
|
|
265
|
+
|
|
130
266
|
## Fast troubleshooting
|
|
131
267
|
|
|
132
268
|
- Command not found after install: ensure your `pipx` binary path is in `PATH`
|
|
133
|
-
- Validation error: rerun `vstack install
|
|
269
|
+
- Validation error: rerun `vstack install` from your repository root and then `vstack validate`
|
|
134
270
|
- Agent results look generic: explicitly invoke a role (for example `@tester`) before a skill
|
|
135
271
|
|
|
136
272
|
## Full documentation
|
|
@@ -5,7 +5,7 @@ description = "VS Code-native AI engineering workflow system for microservices,
|
|
|
5
5
|
license = "MIT"
|
|
6
6
|
readme = "README-pypi.md"
|
|
7
7
|
requires-python = ">=3.11,<3.15"
|
|
8
|
-
dependencies = []
|
|
8
|
+
dependencies = ["pyyaml>=6.0"]
|
|
9
9
|
keywords = [
|
|
10
10
|
"github-copilot",
|
|
11
11
|
"vscode",
|
|
@@ -19,8 +19,19 @@ keywords = [
|
|
|
19
19
|
"api",
|
|
20
20
|
"workflow-automation",
|
|
21
21
|
"release-engineering",
|
|
22
|
+
"agentic-workflow",
|
|
23
|
+
"agentic-ai",
|
|
24
|
+
"ai-agent",
|
|
25
|
+
"llm",
|
|
26
|
+
"llm-agents",
|
|
27
|
+
"prompt-engineering",
|
|
28
|
+
"code-generation",
|
|
29
|
+
"scaffolding",
|
|
30
|
+
"cli",
|
|
31
|
+
"agents",
|
|
22
32
|
]
|
|
23
33
|
classifiers = [
|
|
34
|
+
"Development Status :: 4 - Beta",
|
|
24
35
|
"License :: OSI Approved :: MIT License",
|
|
25
36
|
"Programming Language :: Python :: 3",
|
|
26
37
|
"Programming Language :: Python :: 3.11",
|
|
@@ -30,9 +41,11 @@ classifiers = [
|
|
|
30
41
|
"Environment :: Console",
|
|
31
42
|
"Intended Audience :: Developers",
|
|
32
43
|
"Topic :: Software Development :: Build Tools",
|
|
44
|
+
"Topic :: Software Development :: Code Generators",
|
|
33
45
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
46
|
+
"Topic :: Utilities",
|
|
34
47
|
]
|
|
35
|
-
version = "3.
|
|
48
|
+
version = "3.2.0"
|
|
36
49
|
|
|
37
50
|
[project.urls]
|
|
38
51
|
Homepage = "https://github.com/eschaar/vstack"
|
|
@@ -55,20 +68,22 @@ vstack = "vstack:main"
|
|
|
55
68
|
packages = [{include = "vstack", from = "src"}]
|
|
56
69
|
include = [
|
|
57
70
|
{ path = "src/vstack/_templates", format = ["sdist", "wheel"] },
|
|
71
|
+
{ path = "src/vstack/_migrations", format = ["sdist", "wheel"] },
|
|
58
72
|
]
|
|
59
73
|
# Keep the placeholder version last because the plugin may remove/re-add it in
|
|
60
74
|
# PEP 621 mode, which otherwise causes noisy key reordering.
|
|
61
75
|
|
|
62
76
|
[tool.poetry.requires-plugins]
|
|
63
|
-
poetry-dynamic-versioning = { version = ">=1.
|
|
77
|
+
poetry-dynamic-versioning = { version = ">=1.10.0,<2.0.0", extras = ["plugin"] }
|
|
64
78
|
|
|
65
79
|
[tool.poetry.group.dev.dependencies]
|
|
66
|
-
pytest = ">=9.0"
|
|
67
|
-
pytest-cov = ">=
|
|
80
|
+
pytest = ">=9.0.3"
|
|
81
|
+
pytest-cov = ">=7.1.0"
|
|
68
82
|
ruff = ">=0.15.12"
|
|
69
|
-
mypy = ">=1.
|
|
83
|
+
mypy = ">=2.1.0"
|
|
70
84
|
pre-commit = ">=4.6.0"
|
|
71
|
-
tox = ">=4.
|
|
85
|
+
tox = ">=4.54.0"
|
|
86
|
+
types-PyYAML = ">=6.0.12.20260510"
|
|
72
87
|
|
|
73
88
|
|
|
74
89
|
# ---------------------------------------------------------------------------
|
|
@@ -117,12 +132,21 @@ warn_unused_ignores = true
|
|
|
117
132
|
warn_return_any = false
|
|
118
133
|
ignore_missing_imports = true
|
|
119
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
|
+
|
|
120
144
|
# ---------------------------------------------------------------------------
|
|
121
145
|
# build system
|
|
122
146
|
# ---------------------------------------------------------------------------
|
|
123
147
|
|
|
124
148
|
[build-system]
|
|
125
|
-
requires = ["poetry-core>=
|
|
149
|
+
requires = ["poetry-core>=2.4.0", "poetry-dynamic-versioning>=1.10.0,<2.0.0"]
|
|
126
150
|
build-backend = "poetry_dynamic_versioning.backend"
|
|
127
151
|
|
|
128
152
|
# ---------------------------------------------------------------------------
|
|
@@ -153,7 +177,7 @@ extraPaths = ["scripts"]
|
|
|
153
177
|
[tool.tox]
|
|
154
178
|
legacy_tox_ini = """
|
|
155
179
|
[tox]
|
|
156
|
-
min_version = 4.
|
|
180
|
+
min_version = 4.54.0
|
|
157
181
|
env_list = py311, py312, py313, py314, lint, type
|
|
158
182
|
skip_missing_interpreters = true
|
|
159
183
|
|
|
@@ -161,8 +185,9 @@ skip_missing_interpreters = true
|
|
|
161
185
|
description = Run pytest for {env_name}
|
|
162
186
|
package = skip
|
|
163
187
|
deps =
|
|
164
|
-
pytest>=9.0
|
|
165
|
-
pytest-cov>=
|
|
188
|
+
pytest>=9.0.3
|
|
189
|
+
pytest-cov>=7.1.0
|
|
190
|
+
pyyaml>=6.0.3
|
|
166
191
|
setenv =
|
|
167
192
|
PYTHONPATH = {tox_root}/src
|
|
168
193
|
commands =
|
|
@@ -172,7 +197,7 @@ commands =
|
|
|
172
197
|
description = Run ruff lint checks
|
|
173
198
|
package = skip
|
|
174
199
|
deps =
|
|
175
|
-
ruff>=0.15
|
|
200
|
+
ruff>=0.15.12
|
|
176
201
|
commands =
|
|
177
202
|
ruff check src tests
|
|
178
203
|
|
|
@@ -180,7 +205,8 @@ commands =
|
|
|
180
205
|
description = Run mypy type checks
|
|
181
206
|
package = skip
|
|
182
207
|
deps =
|
|
183
|
-
mypy>=1.
|
|
208
|
+
mypy>=2.1.0
|
|
209
|
+
types-PyYAML>=6.0.12.20260510
|
|
184
210
|
commands =
|
|
185
211
|
mypy src tests
|
|
186
212
|
"""
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# vstack migration records
|
|
2
|
+
|
|
3
|
+
This directory contains machine-readable migration records for `docs/` artifact path
|
|
4
|
+
changes across major vstack version boundaries.
|
|
5
|
+
|
|
6
|
+
Each file covers one major version transition and is named `v{M}_to_v{N}.yaml` where
|
|
7
|
+
`M` is the source major version and `N` is the target major version.
|
|
8
|
+
|
|
9
|
+
These files are read by `vstack migrate` to relocate agent-owned docs files when their
|
|
10
|
+
paths change between major versions.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
vstack migrate [--target <dir>] [--from <major>] [--to <major>] [--dry-run]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run from the project root (or pass `--target`) after upgrading vstack to a new major
|
|
19
|
+
version. The command chains all necessary migration steps between the installed major
|
|
20
|
+
and the current package major.
|
|
21
|
+
|
|
22
|
+
| Flag | Description |
|
|
23
|
+
| ---------------- | --------------------------------------------------------------- |
|
|
24
|
+
| `--target <dir>` | Project root to migrate (default: current directory) |
|
|
25
|
+
| `--from <major>` | Source major version (default: read from `.vstack/vstack.json`) |
|
|
26
|
+
| `--to <major>` | Target major version (default: current vstack package major) |
|
|
27
|
+
| `--dry-run` | Print moves without touching the filesystem |
|
|
28
|
+
|
|
29
|
+
`vstack migrate` only moves files that exist at the old path; absent files are silently
|
|
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.
|
|
33
|
+
|
|
34
|
+
## Schema
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
from_version: "3.x" # semver range for the source version
|
|
38
|
+
to_version: "4.0" # first minor of the target major
|
|
39
|
+
moves:
|
|
40
|
+
- old: docs/path/old.md # path relative to project root
|
|
41
|
+
new: docs/path/new.md # path relative to project root
|
|
42
|
+
type: docs # always "docs" for this directory
|
|
43
|
+
notes: > # optional: human-readable explanation
|
|
44
|
+
Why this path changed and what to do with the old file after migration.
|
|
45
|
+
```
|