Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 28 additions & 28 deletions .github/vstack.json
Original file line number Diff line number Diff line change
@@ -1,139 +1,139 @@
{
"vstack_version": "0.1.0",
"installed_at": "2026-04-16T22:29:03.096690+00:00",
"vstack_version": "0.0.0",
"installed_at": "2026-04-16T23:34:10.546914+00:00",
"artifacts": {
"skills": [
{
"name": "adr",
"file": "skills/adr/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "analyse",
"file": "skills/analyse/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "architecture",
"file": "skills/architecture/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "cicd",
"file": "skills/cicd/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "code-review",
"file": "skills/code-review/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "consult",
"file": "skills/consult/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "container",
"file": "skills/container/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "debug",
"file": "skills/debug/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "design",
"file": "skills/design/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "docs",
"file": "skills/docs/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "explore",
"file": "skills/explore/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "guardrails",
"file": "skills/guardrails/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "inspect",
"file": "skills/inspect/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "performance",
"file": "skills/performance/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "pr",
"file": "skills/pr/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "release-notes",
"file": "skills/release-notes/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "requirements",
"file": "skills/requirements/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "security",
"file": "skills/security/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "verify",
"file": "skills/verify/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "vision",
"file": "skills/vision/SKILL.md",
"version": "1.0.0"
"version": "1.0.1"
}
],
"agents": [
{
"name": "architect",
"file": "agents/architect.agent.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "designer",
"file": "agents/designer.agent.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "engineer",
"file": "agents/engineer.agent.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "product",
"file": "agents/product.agent.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "release",
"file": "agents/release.agent.md",
"version": "1.0.0"
"version": "1.0.1"
},
{
"name": "tester",
"file": "agents/tester.agent.md",
"version": "1.0.0"
"version": "1.0.1"
}
],
"instructions": [
Expand Down
48 changes: 38 additions & 10 deletions .github/workflows/qa.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Quality gate for branch pushes (excluding main).
# Purpose: keep fast feedback for formatting, linting, and type checking.
# Purpose: keep fast feedback for formatting/lint/type checks and run tests across
# supported Python versions.
name: QA

on:
Expand All @@ -8,30 +9,29 @@ on:
branches-ignore: [main]

env:
# Single Python version used across all QA checks.
PYTHON_VERSION: "3.11"
POETRY_VIRTUALENVS_IN_PROJECT: "true"

jobs:
qa:
# One consolidated job for style and static-analysis checks.
quality:
# Fast quality checks run once on the baseline Python version.
name: Format Lint Typecheck
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Install Poetry
run: pipx install poetry

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
# Cache Poetry downloads based on lockfile changes.
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
cache-dependency-path: poetry.lock

- name: Install Poetry
run: pipx install poetry

- name: Install dependencies
run: poetry install --no-interaction --no-ansi

Expand All @@ -43,3 +43,31 @@ jobs:

- name: Typecheck
run: make typecheck

test-matrix:
name: Tests (py${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14"]

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Install Poetry
run: pipx install poetry

- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: poetry
cache-dependency-path: poetry.lock

- name: Install dependencies
run: poetry install --no-interaction --no-ansi

- name: Test
run: make test
Comment thread
eschaar marked this conversation as resolved.
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
# Full history is required by semantic-version to inspect commit history.
fetch-depth: 0
Expand Down Expand Up @@ -96,12 +96,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Install Poetry
run: pipx install poetry

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
cache-dependency-path: poetry.lock

- name: Install Poetry
run: pipx install poetry

- name: Install pip-audit
run: pipx install pip-audit

Expand All @@ -47,4 +47,4 @@ jobs:
with:
path: ./
base: ${{ github.event.pull_request.base.sha }}
head: ${{ github.event.pull_request.head.sha }}
head: ${{ github.event.pull_request.head.sha }}
26 changes: 15 additions & 11 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ name: Verify
env:
# Shared interpreter version for reproducible CI behavior.
PYTHON_VERSION: "3.11"
POETRY_VIRTUALENVS_IN_PROJECT: "true"

jobs:
unit-tests:
Expand All @@ -19,18 +20,18 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Install Poetry
run: pipx install poetry

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
cache-dependency-path: poetry.lock

- name: Install Poetry
run: pipx install poetry

- name: Install dependencies
run: poetry install --no-interaction --no-ansi

Expand All @@ -44,27 +45,30 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Install Poetry
run: pipx install poetry

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
cache-dependency-path: poetry.lock

- name: Install Poetry
run: pipx install poetry

- name: Install dependencies
run: poetry install --no-interaction --no-ansi

- name: Set unique temp target directory
# Avoid cross-run collisions on shared/self-hosted runners.
run: echo "TARGET_DIR=${RUNNER_TEMP}/vstack-pr-target-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" >> "$GITHUB_ENV"

- name: Create temp target directory
run: mkdir -p "${TARGET_DIR}"

- name: Install artifacts into temp target
run: poetry run vstack install --target "${TARGET_DIR}"

- name: Verify source and installed output
run: poetry run vstack verify --target "${TARGET_DIR}"
run: poetry run vstack verify --target "${TARGET_DIR}"
15 changes: 15 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-toml
- id: check-yaml

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.4
hooks:
- id: ruff
args: [--fix]
- id: ruff-format

- repo: https://github.com/executablebooks/mdformat
rev: 0.7.22
hooks:
Expand Down
4 changes: 4 additions & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
3.14.3
3.13.12
3.12.12
3.11.14
Loading