From 79b3a9f32adb94fa1e5dc3e105c548d5f8a36535 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 21:16:25 +0200 Subject: [PATCH 01/19] docs: improve language and documentation clarity --- README.md | 2 +- docs/design/skills.md | 4 +-- docs/product/requirements.md | 8 ++++- src/vstack/__main__.py | 2 +- src/vstack/agents/constants.py | 2 +- src/vstack/cli/constants.py | 2 +- src/vstack/cli/parser.py | 2 +- src/vstack/constants.py | 2 +- src/vstack/instructions/config.py | 2 +- src/vstack/instructions/constants.py | 2 +- src/vstack/instructions/generator.py | 4 +-- src/vstack/main.py | 6 ++-- src/vstack/models.py | 12 +++---- src/vstack/prompts/config.py | 2 +- src/vstack/prompts/constants.py | 2 +- src/vstack/prompts/generator.py | 4 +-- src/vstack/skills/constants.py | 2 +- src/vstack/skills/models.py | 2 +- tests/conftest.py | 2 +- tests/vstack/agents/test___init__.py | 2 +- tests/vstack/agents/test_config.py | 2 +- tests/vstack/agents/test_constants.py | 2 +- tests/vstack/agents/test_generation.py | 2 +- tests/vstack/agents/test_generator.py | 2 +- .../agents/test_template_config_style.py | 2 +- tests/vstack/artifacts/test___init__.py | 2 +- tests/vstack/artifacts/test_config.py | 2 +- tests/vstack/artifacts/test_constants.py | 2 +- tests/vstack/artifacts/test_generator.py | 2 +- tests/vstack/artifacts/test_models.py | 2 +- tests/vstack/artifacts/test_protocol.py | 4 +-- tests/vstack/cli/test___init__.py | 2 +- tests/vstack/cli/test_commands.py | 34 +++++++++---------- tests/vstack/cli/test_constants.py | 2 +- tests/vstack/cli/test_integration_runtime.py | 2 +- tests/vstack/cli/test_manifest.py | 2 +- tests/vstack/cli/test_parser.py | 2 +- tests/vstack/frontmatter/test___init__.py | 2 +- tests/vstack/frontmatter/test_builder.py | 2 +- tests/vstack/frontmatter/test_parser.py | 2 +- tests/vstack/frontmatter/test_schema.py | 2 +- tests/vstack/instructions/test_generator.py | 2 +- tests/vstack/prompts/test_generator.py | 2 +- tests/vstack/skills/test___init__.py | 2 +- tests/vstack/skills/test_config.py | 2 +- tests/vstack/skills/test_constants.py | 2 +- tests/vstack/skills/test_generator.py | 2 +- tests/vstack/skills/test_models.py | 2 +- tests/vstack/skills/test_templates.py | 2 +- tests/vstack/test___init__.py | 2 +- tests/vstack/test___main__.py | 2 +- tests/vstack/test_constants.py | 2 +- tests/vstack/test_main.py | 8 ++--- tests/vstack/test_models.py | 2 +- 54 files changed, 90 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 153ac0b..c5ac20a 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ This automatically triggers: ______________________________________________________________________ -## vstack gebruiken in Copilot Agent Mode +## Using vstack in Copilot Agent Mode ### 1. Open Copilot Chat diff --git a/docs/design/skills.md b/docs/design/skills.md index 04acae4..1cc6d17 100644 --- a/docs/design/skills.md +++ b/docs/design/skills.md @@ -174,7 +174,7 @@ ______________________________________________________________________ ## minimum skill body contract -We hanteren dit als minimum voor elke skill body: +Use this as the minimum baseline for every skill body: 1. What it helps accomplish 1. When to use it @@ -182,7 +182,7 @@ We hanteren dit als minimum voor elke skill body: 1. Expected input/output examples 1. References to scripts/resources 1. Out-of-scope + escalation/failure rules -1. Common edge cases (sterk aanbevolen) +1. Common edge cases (strongly recommended) Recommended additions for production-grade skills: diff --git a/docs/product/requirements.md b/docs/product/requirements.md index 92c5943..b6ecd08 100644 --- a/docs/product/requirements.md +++ b/docs/product/requirements.md @@ -1,6 +1,12 @@ # requirements +> Maintained by: **product** role +> Last updated: 2026-04-20 + Status: draft. -This file is owned by the product role and captures functional/non-functional requirements, +This document captures the functional requirements, non-functional requirements, success criteria, and constraints for the current scope. + +It is owned by the product role and should be updated whenever scope, +acceptance criteria, or constraints change. diff --git a/src/vstack/__main__.py b/src/vstack/__main__.py index eee734b..c5d2d26 100644 --- a/src/vstack/__main__.py +++ b/src/vstack/__main__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for main.""" +"""Module entrypoint for ``python -m vstack``.""" from vstack.main import main diff --git a/src/vstack/agents/constants.py b/src/vstack/agents/constants.py index fc8f8c7..e4bea29 100644 --- a/src/vstack/agents/constants.py +++ b/src/vstack/agents/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Constants for agent template discovery and output paths.""" from vstack.constants import TEMPLATES_ROOT diff --git a/src/vstack/cli/constants.py b/src/vstack/cli/constants.py index b7732a5..ae10933 100644 --- a/src/vstack/cli/constants.py +++ b/src/vstack/cli/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Canonical CLI artifact names.""" from __future__ import annotations diff --git a/src/vstack/cli/parser.py b/src/vstack/cli/parser.py index 67b2c61..3ab79c3 100644 --- a/src/vstack/cli/parser.py +++ b/src/vstack/cli/parser.py @@ -1,4 +1,4 @@ -"""Utilities and tests for parser.""" +"""CLI argument parser and install target resolution.""" from __future__ import annotations diff --git a/src/vstack/constants.py b/src/vstack/constants.py index 6cf96bd..192a2e4 100644 --- a/src/vstack/constants.py +++ b/src/vstack/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Project-wide constants and version helpers.""" from __future__ import annotations diff --git a/src/vstack/instructions/config.py b/src/vstack/instructions/config.py index e09fad7..bd860ce 100644 --- a/src/vstack/instructions/config.py +++ b/src/vstack/instructions/config.py @@ -1,4 +1,4 @@ -"""Utilities and tests for config.""" +"""Instruction artifact type configuration.""" from vstack.artifacts.config import INSTRUCTION_SCHEMA, ArtifactTypeConfig from vstack.instructions.constants import ( diff --git a/src/vstack/instructions/constants.py b/src/vstack/instructions/constants.py index 75edf0f..67fcc40 100644 --- a/src/vstack/instructions/constants.py +++ b/src/vstack/instructions/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Constants for instruction template and output locations.""" from vstack.constants import TEMPLATES_ROOT diff --git a/src/vstack/instructions/generator.py b/src/vstack/instructions/generator.py index 10bc793..e0d9d77 100644 --- a/src/vstack/instructions/generator.py +++ b/src/vstack/instructions/generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for generator.""" +"""Instruction artifact generator.""" from vstack.artifacts.generator import GenericArtifactGenerator from vstack.constants import TEMPLATES_ROOT @@ -6,7 +6,7 @@ class InstructionGenerator(GenericArtifactGenerator): - """Represents InstructionGenerator.""" + """Generate installed instruction artifacts from instruction templates.""" def __init__(self) -> None: """Initialize instance state.""" diff --git a/src/vstack/main.py b/src/vstack/main.py index ccb2614..9ecda83 100644 --- a/src/vstack/main.py +++ b/src/vstack/main.py @@ -1,4 +1,4 @@ -"""Utilities and tests for main.""" +"""CLI entrypoint and command dispatch helpers.""" from __future__ import annotations @@ -12,7 +12,7 @@ def _resolve_only_for_scope(args: object) -> list[str] | None: - """Return the type filter for this command/scope, validating global constraints.""" + """Return the artifact type filter for the active command scope.""" requested_only = getattr(args, "only", None) if not getattr(args, "use_global", False): return requested_only @@ -33,7 +33,7 @@ def _resolve_only_for_scope(args: object) -> list[str] | None: def main() -> None: - """Main.""" + """Parse CLI arguments and dispatch the selected command.""" parser = build_parser() args = parser.parse_args() cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) diff --git a/src/vstack/models.py b/src/vstack/models.py index fcc4c3e..5901b4b 100644 --- a/src/vstack/models.py +++ b/src/vstack/models.py @@ -1,4 +1,4 @@ -"""Utilities and tests for models.""" +"""Shared validation result models.""" from __future__ import annotations @@ -7,7 +7,7 @@ @dataclass class CheckMessage: - """Represents CheckMessage.""" + """Represent a single validation message with a pass/fail level.""" level: str # "pass" | "fail" message: str @@ -15,21 +15,21 @@ class CheckMessage: @dataclass class ValidationResult: - """Represents ValidationResult.""" + """Store validation messages and expose aggregate result helpers.""" messages: list[CheckMessage] = field(default_factory=list) @property def passes(self) -> int: - """Passes.""" + """Return the number of passing validation messages.""" return sum(1 for m in self.messages if m.level == "pass") @property def failures(self) -> int: - """Failures.""" + """Return the number of failing validation messages.""" return sum(1 for m in self.messages if m.level == "fail") @property def ok(self) -> bool: - """Ok.""" + """Return ``True`` when the validation result contains no failures.""" return self.failures == 0 diff --git a/src/vstack/prompts/config.py b/src/vstack/prompts/config.py index e45a6ee..ab9fd3d 100644 --- a/src/vstack/prompts/config.py +++ b/src/vstack/prompts/config.py @@ -1,4 +1,4 @@ -"""Utilities and tests for config.""" +"""Prompt artifact type configuration.""" from vstack.artifacts.config import PROMPT_SCHEMA, ArtifactTypeConfig from vstack.prompts.constants import ( diff --git a/src/vstack/prompts/constants.py b/src/vstack/prompts/constants.py index 8e3d896..14d2c9d 100644 --- a/src/vstack/prompts/constants.py +++ b/src/vstack/prompts/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Constants for prompt template and output locations.""" from vstack.constants import TEMPLATES_ROOT diff --git a/src/vstack/prompts/generator.py b/src/vstack/prompts/generator.py index 9aa63f2..fa24439 100644 --- a/src/vstack/prompts/generator.py +++ b/src/vstack/prompts/generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for generator.""" +"""Prompt artifact generator.""" from vstack.artifacts.generator import GenericArtifactGenerator from vstack.constants import TEMPLATES_ROOT @@ -6,7 +6,7 @@ class PromptGenerator(GenericArtifactGenerator): - """Represents PromptGenerator.""" + """Generate installed prompt artifacts from prompt templates.""" def __init__(self) -> None: """Initialize instance state.""" diff --git a/src/vstack/skills/constants.py b/src/vstack/skills/constants.py index 9bef1ce..5dcdf63 100644 --- a/src/vstack/skills/constants.py +++ b/src/vstack/skills/constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for constants.""" +"""Constants for skill template and partial locations.""" from __future__ import annotations diff --git a/src/vstack/skills/models.py b/src/vstack/skills/models.py index 1fd2175..8bff385 100644 --- a/src/vstack/skills/models.py +++ b/src/vstack/skills/models.py @@ -1,4 +1,4 @@ -"""Utilities and tests for models.""" +"""Backwards-compatible exports for skill artifact models.""" from __future__ import annotations diff --git a/tests/conftest.py b/tests/conftest.py index 4de8ac6..b85913d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,4 @@ -"""Utilities and tests for conftest.""" +"""Shared pytest fixtures and test helpers.""" from __future__ import annotations diff --git a/tests/vstack/agents/test___init__.py b/tests/vstack/agents/test___init__.py index 5f20b26..810d7e6 100644 --- a/tests/vstack/agents/test___init__.py +++ b/tests/vstack/agents/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for agent package exports.""" from __future__ import annotations diff --git a/tests/vstack/agents/test_config.py b/tests/vstack/agents/test_config.py index 9b92146..679d2ae 100644 --- a/tests/vstack/agents/test_config.py +++ b/tests/vstack/agents/test_config.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test config.""" +"""Tests for agent artifact configuration.""" from __future__ import annotations diff --git a/tests/vstack/agents/test_constants.py b/tests/vstack/agents/test_constants.py index b3b0d14..b3a7b16 100644 --- a/tests/vstack/agents/test_constants.py +++ b/tests/vstack/agents/test_constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test constants.""" +"""Tests for agent constants.""" from __future__ import annotations diff --git a/tests/vstack/agents/test_generation.py b/tests/vstack/agents/test_generation.py index ef8f1ec..896fe15 100644 --- a/tests/vstack/agents/test_generation.py +++ b/tests/vstack/agents/test_generation.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generation.""" +"""Tests for generated agent artifacts.""" from __future__ import annotations diff --git a/tests/vstack/agents/test_generator.py b/tests/vstack/agents/test_generator.py index b77913c..a2d0ae0 100644 --- a/tests/vstack/agents/test_generator.py +++ b/tests/vstack/agents/test_generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generator.""" +"""Tests for agent generator behavior.""" from __future__ import annotations diff --git a/tests/vstack/agents/test_template_config_style.py b/tests/vstack/agents/test_template_config_style.py index 8eca0f8..720e2ba 100644 --- a/tests/vstack/agents/test_template_config_style.py +++ b/tests/vstack/agents/test_template_config_style.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test template config style.""" +"""Tests for agent template configuration style rules.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test___init__.py b/tests/vstack/artifacts/test___init__.py index 843f408..0190f1b 100644 --- a/tests/vstack/artifacts/test___init__.py +++ b/tests/vstack/artifacts/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for artifact package exports.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test_config.py b/tests/vstack/artifacts/test_config.py index d89a921..2970c62 100644 --- a/tests/vstack/artifacts/test_config.py +++ b/tests/vstack/artifacts/test_config.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test config.""" +"""Tests for artifact type configuration.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test_constants.py b/tests/vstack/artifacts/test_constants.py index f40df61..d9b357b 100644 --- a/tests/vstack/artifacts/test_constants.py +++ b/tests/vstack/artifacts/test_constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test constants.""" +"""Tests for artifact constants.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test_generator.py b/tests/vstack/artifacts/test_generator.py index 0eb6dca..38c8267 100644 --- a/tests/vstack/artifacts/test_generator.py +++ b/tests/vstack/artifacts/test_generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generator.""" +"""Tests for generic artifact generation.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test_models.py b/tests/vstack/artifacts/test_models.py index 30fa031..6cfb831 100644 --- a/tests/vstack/artifacts/test_models.py +++ b/tests/vstack/artifacts/test_models.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test models.""" +"""Tests for artifact result models.""" from __future__ import annotations diff --git a/tests/vstack/artifacts/test_protocol.py b/tests/vstack/artifacts/test_protocol.py index f0d0bec..8125b07 100644 --- a/tests/vstack/artifacts/test_protocol.py +++ b/tests/vstack/artifacts/test_protocol.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test protocol.""" +"""Tests for artifact generator protocol compatibility.""" from __future__ import annotations @@ -10,7 +10,7 @@ class _Impl: - """Represents Impl.""" + """Minimal implementation that satisfies the artifact generator protocol.""" def generate(self, output_dir: Path) -> ArtifactResult: """Generate.""" diff --git a/tests/vstack/cli/test___init__.py b/tests/vstack/cli/test___init__.py index 6e819a4..843c5e0 100644 --- a/tests/vstack/cli/test___init__.py +++ b/tests/vstack/cli/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for CLI package exports.""" from __future__ import annotations diff --git a/tests/vstack/cli/test_commands.py b/tests/vstack/cli/test_commands.py index d7bf9f0..89f00ce 100644 --- a/tests/vstack/cli/test_commands.py +++ b/tests/vstack/cli/test_commands.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test commands.""" +"""Tests for CLI command handlers.""" from __future__ import annotations @@ -177,7 +177,7 @@ def test_validate_returns_non_zero_on_unresolved(self, tmp_path: Path) -> None: """Test that validate returns non zero on unresolved.""" class _FakeArtifact: - """Represents FakeArtifact.""" + """Test double for a rendered artifact.""" def __init__(self) -> None: """Initialize instance state.""" @@ -185,14 +185,14 @@ def __init__(self) -> None: self.unresolved = ["MISSING"] class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" manifest_key = "skills" output_subdir = "skills" class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() @@ -216,7 +216,7 @@ def test_install_force_and_verify_input_fail_path(self, tmp_path: Path) -> None: """Test that install force and verify input fail path.""" class _FakeArtifact: - """Represents FakeArtifact.""" + """Test double for a rendered artifact.""" def __init__(self) -> None: """Initialize instance state.""" @@ -226,7 +226,7 @@ def __init__(self) -> None: self.content = "content" class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" manifest_key = "skills" @@ -234,7 +234,7 @@ class _Cfg: artifact_is_dir = True class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() @@ -269,13 +269,13 @@ def test_verify_source_with_no_messages_and_all_passed(self, tmp_path: Path) -> """Test that verify source with no messages and all passed.""" class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" output_subdir = "skills" class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() @@ -334,7 +334,7 @@ def test_validate_returns_zero_when_all_clean(self, tmp_path: Path) -> None: """Test that validate returns zero when all clean.""" class _FakeArtifact: - """Represents FakeArtifact.""" + """Test double for a rendered artifact.""" def __init__(self) -> None: """Initialize instance state.""" @@ -342,14 +342,14 @@ def __init__(self) -> None: self.unresolved: list[str] = [] class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" manifest_key = "skills" output_subdir = "skills" class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() @@ -373,7 +373,7 @@ def test_validate_handles_missing_generator_for_type(self, tmp_path: Path) -> No """Test that validate handles missing generator for type.""" class _FakeArtifact: - """Represents FakeArtifact.""" + """Test double for a rendered artifact.""" def __init__(self) -> None: """Initialize instance state.""" @@ -381,12 +381,12 @@ def __init__(self) -> None: self.unresolved: list[str] = [] class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() @@ -465,13 +465,13 @@ def test_verify_source_with_messages_path(self, tmp_path: Path) -> None: """Test that verify source with messages path.""" class _Cfg: - """Represents Cfg.""" + """Minimal generator config for this test.""" type_name = "skill" output_subdir = "skills" class _FakeGen: - """Represents FakeGen.""" + """Test double for an artifact generator.""" config = _Cfg() diff --git a/tests/vstack/cli/test_constants.py b/tests/vstack/cli/test_constants.py index 0660bd7..1b95e48 100644 --- a/tests/vstack/cli/test_constants.py +++ b/tests/vstack/cli/test_constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test constants.""" +"""Tests for canonical CLI names.""" from __future__ import annotations diff --git a/tests/vstack/cli/test_integration_runtime.py b/tests/vstack/cli/test_integration_runtime.py index d3d4966..dc10715 100644 --- a/tests/vstack/cli/test_integration_runtime.py +++ b/tests/vstack/cli/test_integration_runtime.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test integration runtime.""" +"""Tests for CLI runtime integration behavior.""" from __future__ import annotations diff --git a/tests/vstack/cli/test_manifest.py b/tests/vstack/cli/test_manifest.py index 1b07164..4b37210 100644 --- a/tests/vstack/cli/test_manifest.py +++ b/tests/vstack/cli/test_manifest.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test manifest.""" +"""Tests for install manifest handling.""" from __future__ import annotations diff --git a/tests/vstack/cli/test_parser.py b/tests/vstack/cli/test_parser.py index 8905df9..49985d6 100644 --- a/tests/vstack/cli/test_parser.py +++ b/tests/vstack/cli/test_parser.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test parser.""" +"""Tests for CLI parser behavior.""" from __future__ import annotations diff --git a/tests/vstack/frontmatter/test___init__.py b/tests/vstack/frontmatter/test___init__.py index 1079a33..bf3737b 100644 --- a/tests/vstack/frontmatter/test___init__.py +++ b/tests/vstack/frontmatter/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for frontmatter package exports.""" from __future__ import annotations diff --git a/tests/vstack/frontmatter/test_builder.py b/tests/vstack/frontmatter/test_builder.py index ced7748..90e2826 100644 --- a/tests/vstack/frontmatter/test_builder.py +++ b/tests/vstack/frontmatter/test_builder.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test builder.""" +"""Tests for frontmatter builder behavior.""" from __future__ import annotations diff --git a/tests/vstack/frontmatter/test_parser.py b/tests/vstack/frontmatter/test_parser.py index 1f43c6d..634a20e 100644 --- a/tests/vstack/frontmatter/test_parser.py +++ b/tests/vstack/frontmatter/test_parser.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test parser.""" +"""Tests for frontmatter parser behavior.""" from __future__ import annotations diff --git a/tests/vstack/frontmatter/test_schema.py b/tests/vstack/frontmatter/test_schema.py index 913a5a6..afdafa5 100644 --- a/tests/vstack/frontmatter/test_schema.py +++ b/tests/vstack/frontmatter/test_schema.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test schema.""" +"""Tests for frontmatter schema validation.""" from __future__ import annotations diff --git a/tests/vstack/instructions/test_generator.py b/tests/vstack/instructions/test_generator.py index 5412791..218b30c 100644 --- a/tests/vstack/instructions/test_generator.py +++ b/tests/vstack/instructions/test_generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generator.""" +"""Tests for instruction generator behavior.""" from __future__ import annotations diff --git a/tests/vstack/prompts/test_generator.py b/tests/vstack/prompts/test_generator.py index 03e2ef1..778cddd 100644 --- a/tests/vstack/prompts/test_generator.py +++ b/tests/vstack/prompts/test_generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generator.""" +"""Tests for prompt generator behavior.""" from __future__ import annotations diff --git a/tests/vstack/skills/test___init__.py b/tests/vstack/skills/test___init__.py index 6b3eca1..0f17340 100644 --- a/tests/vstack/skills/test___init__.py +++ b/tests/vstack/skills/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for skill package exports.""" from __future__ import annotations diff --git a/tests/vstack/skills/test_config.py b/tests/vstack/skills/test_config.py index 75d2c6b..768a771 100644 --- a/tests/vstack/skills/test_config.py +++ b/tests/vstack/skills/test_config.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test config.""" +"""Tests for skill artifact configuration.""" from __future__ import annotations diff --git a/tests/vstack/skills/test_constants.py b/tests/vstack/skills/test_constants.py index 7ce07cd..0a7223f 100644 --- a/tests/vstack/skills/test_constants.py +++ b/tests/vstack/skills/test_constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test constants.""" +"""Tests for skill constants.""" from __future__ import annotations diff --git a/tests/vstack/skills/test_generator.py b/tests/vstack/skills/test_generator.py index c1862b2..5fa9ade 100644 --- a/tests/vstack/skills/test_generator.py +++ b/tests/vstack/skills/test_generator.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test generator.""" +"""Tests for skill generator behavior.""" from __future__ import annotations diff --git a/tests/vstack/skills/test_models.py b/tests/vstack/skills/test_models.py index 390efbe..4ddd574 100644 --- a/tests/vstack/skills/test_models.py +++ b/tests/vstack/skills/test_models.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test models.""" +"""Tests for skill model aliases.""" from __future__ import annotations diff --git a/tests/vstack/skills/test_templates.py b/tests/vstack/skills/test_templates.py index db941ae..feb0f00 100644 --- a/tests/vstack/skills/test_templates.py +++ b/tests/vstack/skills/test_templates.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test templates.""" +"""Tests for skill template source files.""" from __future__ import annotations diff --git a/tests/vstack/test___init__.py b/tests/vstack/test___init__.py index 9a236fd..73586f5 100644 --- a/tests/vstack/test___init__.py +++ b/tests/vstack/test___init__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test init.""" +"""Tests for top-level package exports.""" from __future__ import annotations diff --git a/tests/vstack/test___main__.py b/tests/vstack/test___main__.py index 40389af..7f5eb72 100644 --- a/tests/vstack/test___main__.py +++ b/tests/vstack/test___main__.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test main.""" +"""Tests for the ``python -m vstack`` entrypoint.""" from __future__ import annotations diff --git a/tests/vstack/test_constants.py b/tests/vstack/test_constants.py index 856c814..abe1749 100644 --- a/tests/vstack/test_constants.py +++ b/tests/vstack/test_constants.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test constants.""" +"""Tests for project constants and version helpers.""" from __future__ import annotations diff --git a/tests/vstack/test_main.py b/tests/vstack/test_main.py index ae7a3fa..e794190 100644 --- a/tests/vstack/test_main.py +++ b/tests/vstack/test_main.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test main.""" +"""Tests for CLI entrypoint dispatch behavior.""" from __future__ import annotations @@ -10,7 +10,7 @@ class _Args: - """Represents parsed CLI args for main() dispatch tests.""" + """Minimal parsed-argument object for main() dispatch tests.""" def __init__( self, @@ -35,7 +35,7 @@ def __init__( class _CLI: - """Represents CLI.""" + """Test double for the CLI command handler.""" def __init__(self) -> None: """Initialize instance state.""" @@ -63,7 +63,7 @@ def uninstall(self, *args, **kwargs): class TestMain: - """Test cases for Main.""" + """Test cases for the CLI entrypoint.""" def test_resolve_only_for_scope_returns_requested_only_for_non_global(self) -> None: """Test that non-global commands keep the explicit type filter.""" diff --git a/tests/vstack/test_models.py b/tests/vstack/test_models.py index 607aa20..4c133aa 100644 --- a/tests/vstack/test_models.py +++ b/tests/vstack/test_models.py @@ -1,4 +1,4 @@ -"""Utilities and tests for test models.""" +"""Tests for shared validation models.""" from __future__ import annotations From d5c28884ade2898029a20ec738fdfee8d87c9b0b Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 22:14:08 +0200 Subject: [PATCH 02/19] chore(ci): improve semver release and commit policy workflows --- .github/dependabot.yml | 23 +++++++ .github/workflows/commit.yml | 125 ++++++++++++++++++++++++++++++++++ .github/workflows/qa.yml | 3 + .github/workflows/release.yml | 75 +++++++++++++------- .github/workflows/verify.yml | 1 + CONTRIBUTING.md | 70 +++++++++++++++++-- README.md | 32 +++++++++ docs/design/workflow.md | 45 +++++++++++- 8 files changed, 341 insertions(+), 33 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/commit.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..c246aa2 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 + labels: + - "dependencies" + - "python" + commit-message: + prefix: "chore(deps)" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + labels: + - "dependencies" + - "github-actions" + commit-message: + prefix: "chore(ci)" diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml new file mode 100644 index 0000000..44b2491 --- /dev/null +++ b/.github/workflows/commit.yml @@ -0,0 +1,125 @@ +# Commit workflow. +# Purpose: fail fast on branch pushes when commit messages do not match +# repository commit conventions. +name: Commit + +on: + # Validate commits on branch pushes before PR merge. + push: + # Mainline and merge-queue refs are validated by PR/release workflows. + branches-ignore: + - main + - master + - merge/** + - gh-readonly-queue/** + +permissions: + # Read-only is enough for commit metadata checks. + contents: read + +env: + # Commit-check message/type policy, configured inline in workflow env. + CCHK_CONVENTIONAL_COMMITS: "true" + CCHK_SUBJECT_CAPITALIZED: "false" + CCHK_SUBJECT_IMPERATIVE: "false" + CCHK_SUBJECT_MAX_LENGTH: "100" + CCHK_ALLOW_COMMIT_TYPES: "feat,feature,fix,bugfix,hotfix,opt,patch,perf,refactor,chore,revert" + CCHK_ALLOW_MERGE_COMMITS: "true" + CCHK_ALLOW_REVERT_COMMITS: "true" + CCHK_ALLOW_EMPTY_COMMITS: "false" + CCHK_ALLOW_FIXUP_COMMITS: "true" + CCHK_ALLOW_WIP_COMMITS: "false" + CCHK_REQUIRE_BODY: "false" + CCHK_REQUIRE_SIGNED_OFF_BY: "false" + # Branch naming policy for pushed branches. + CCHK_CONVENTIONAL_BRANCH: "true" + CCHK_ALLOW_BRANCH_TYPES: >- + feature,bugfix,hotfix,release,chore,feat,fix,docs,refactor,perf,test,ci,build,style, + opt,patch,dependabot + # Repository-specific scope allowlist layered on top of commit-check. + COMMIT_ALLOWED_SCOPES: >- + api,auth,permissions,serializer,viewset,orm,migrations,admin,settings,deps,ci,docs, + build,style,test,tests,cli,agents,skills,instructions,prompts,frontmatter,artifacts, + release,workflow + +jobs: + validate-commit-messages: + # Single gate that validates message format/types and custom scope policy. + name: Validate Commit Messages + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + # Full history is required to inspect the full pushed commit range. + fetch-depth: 0 + + - name: Validate commits with commit-check + uses: commit-check/commit-check-action@v2 + with: + message: true + branch: true + author-name: false + author-email: false + job-summary: true + pr-comments: false + + - name: Validate allowed scopes in pushed commits + uses: actions/github-script@v7 + env: + ALLOWED_SCOPES: ${{ env.COMMIT_ALLOWED_SCOPES }} + with: + script: | + const allowedScopes = process.env.ALLOWED_SCOPES.split(",").map((v) => v.trim()); + + const before = context.payload.before; + const after = context.payload.after; + + if (!before || !after) { + core.info("No commit range available; skipping validation."); + return; + } + + const compare = await github.rest.repos.compareCommits({ + owner: context.repo.owner, + repo: context.repo.repo, + base: before, + head: after, + }); + + const commits = compare.data.commits || []; + const conventional = /^(?[a-z]+)(?:\((?[a-z0-9-]+)\))?(?!)?: .+/; + const errors = []; + + for (const commit of commits) { + const subject = commit.commit.message.split("\n")[0].trim(); + const sha = commit.sha.slice(0, 7); + + // Allow merge commits created by git/GitHub during branch sync operations. + if (subject.startsWith("Merge ")) { + continue; + } + + const match = subject.match(conventional); + if (!match) { + // commit-check-action validates message format and type. + continue; + } + + const scope = match.groups.scope; + + if (scope && !allowedScopes.includes(scope)) { + errors.push(`- ${sha}: scope \`${scope}\` is not allowed.`); + } + } + + if (errors.length > 0) { + core.setFailed( + [ + "Commit message policy failed.", + "Allowed scopes (optional): " + allowedScopes.join(", "), + "", + ...errors, + ].join("\n"), + ); + } diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index e4f73d9..a5fee71 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -13,7 +13,9 @@ permissions: contents: read env: + # Baseline interpreter for non-matrix checks. PYTHON_VERSION: "3.11" + # Keep Poetry virtual environments inside the workspace for deterministic paths. POETRY_VIRTUALENVS_IN_PROJECT: "true" jobs: @@ -49,6 +51,7 @@ jobs: run: make typecheck test-matrix: + # Cross-version test coverage for all supported Python runtimes. name: Tests (py${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a63d4e..6f9c85c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,8 @@ env: jobs: version-and-release: - # Computes semantic version, creates git tag, and publishes GitHub release. + # Computes semantic version from conventional commits, creates git tag, + # and publishes GitHub release. name: Compute Version and Tag runs-on: ubuntu-latest permissions: @@ -29,37 +30,59 @@ jobs: # Guard: run only for merged PRs. if: github.event.pull_request.merged == true outputs: - changed: ${{ steps.semver.outputs.changed }} - version: ${{ steps.semver.outputs.version }} + changed: ${{ steps.version.outputs.changed }} + version: ${{ steps.version.outputs.version }} steps: - name: Checkout uses: actions/checkout@v5 with: - # Full history is required by semantic-version to inspect commit history. + # Full history is required by semver-action to inspect commit history. fetch-depth: 0 ref: ${{ github.event.pull_request.merge_commit_sha }} - - name: Compute semantic version from commits + - name: Compute semantic version from conventional commits id: semver - uses: paulhatch/semantic-version@v5.4.0 + uses: ietf-tools/semver-action@v1.11.0 with: - tag_prefix: "" - version_format: "${major}.${minor}.${patch}" - major_pattern: "(BREAKING CHANGE|!:)" - minor_pattern: "^feat" - search_commit_body: true - bump_each_commit: false + token: ${{ github.token }} + branch: main + # Accept only plain SemVer tags in this repository (no v-prefix). + tagFilter: '^[0-9]+\.[0-9]+\.[0-9]+$' + prefix: "" + skipInvalidTags: true + maxTagsToFetch: 50 + + # Conventional commit mappings for release bump policy. + minorList: "feat,feature" + patchList: "fix,bugfix,hotfix,opt,patch,perf,refactor,chore,revert" + + # Keep release workflow non-failing when a rerun has no new commits, + # or when no commit maps to a bump category. + noNewCommitBehavior: current + noVersionBumpBehavior: current + + - name: Normalize version outputs + id: version + run: | + if [[ "${{ steps.semver.outputs.bump }}" == "none" ]]; then + echo "changed=false" >> "$GITHUB_OUTPUT" + echo "version=${{ steps.semver.outputs.current }}" | sed 's/^version=v/version=/' >> "$GITHUB_OUTPUT" + else + echo "changed=true" >> "$GITHUB_OUTPUT" + echo "version=${{ steps.semver.outputs.nextStrict }}" >> "$GITHUB_OUTPUT" + fi - name: Show computed version run: | - echo "changed=${{ steps.semver.outputs.changed }}" - echo "version=${{ steps.semver.outputs.version }}" + echo "bump=${{ steps.semver.outputs.bump }}" + echo "changed=${{ steps.version.outputs.changed }}" + echo "version=${{ steps.version.outputs.version }}" - name: Enforce no-v SemVer tags - if: steps.semver.outputs.changed == 'true' + if: steps.version.outputs.changed == 'true' run: | - VERSION="${{ steps.semver.outputs.version }}" + VERSION="${{ steps.version.outputs.version }}" # Repository policy: tags must be plain SemVer (for example 1.0.0), never v1.0.0. if [[ "$VERSION" =~ ^v ]]; then @@ -73,32 +96,32 @@ jobs: fi - name: Create and push git tag - if: steps.semver.outputs.changed == 'true' + if: steps.version.outputs.changed == 'true' run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git rev-parse "${{ steps.semver.outputs.version }}" >/dev/null 2>&1 && { - echo "ERROR: tag '${{ steps.semver.outputs.version }}' already exists."; + git rev-parse "${{ steps.version.outputs.version }}" >/dev/null 2>&1 && { + echo "ERROR: tag '${{ steps.version.outputs.version }}' already exists."; exit 1; } - git tag -a "${{ steps.semver.outputs.version }}" -m "release ${{ steps.semver.outputs.version }}" - git push origin "${{ steps.semver.outputs.version }}" + git tag -a "${{ steps.version.outputs.version }}" -m "release ${{ steps.version.outputs.version }}" + git push origin "${{ steps.version.outputs.version }}" - name: Compute release date - if: steps.semver.outputs.changed == 'true' + if: steps.version.outputs.changed == 'true' id: release_date run: echo "date=$(date -u +%Y-%m-%d)" >> "$GITHUB_OUTPUT" - name: Create GitHub release - if: steps.semver.outputs.changed == 'true' + if: steps.version.outputs.changed == 'true' uses: softprops/action-gh-release@v2 with: - tag_name: ${{ steps.semver.outputs.version }} - name: Release v${{ steps.semver.outputs.version }} (${{ steps.release_date.outputs.date }}) + tag_name: ${{ steps.version.outputs.version }} + name: Release v${{ steps.version.outputs.version }} (${{ steps.release_date.outputs.date }}) generate_release_notes: true build-artifacts: - # Build distributions only when semantic-version reports a new release. + # Build distributions only when semver-action reports a new release. name: Build Package Artifacts runs-on: ubuntu-latest needs: version-and-release diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index ab8ab04..333abc8 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -14,6 +14,7 @@ permissions: env: # Shared interpreter version for reproducible CI behavior. PYTHON_VERSION: "3.11" + # Keep Poetry virtual environments inside the workspace for deterministic paths. POETRY_VIRTUALENVS_IN_PROJECT: "true" jobs: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 41832e1..a97dd13 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,14 +30,72 @@ make test ## Commit Message Guidance -This repository uses semantic commit prefixes for releases. +This repository uses a Conventional Commits baseline for release automation. -- `feat:` for new functionality -- `fix:` for bug fixes -- `chore:` for maintenance -- `docs:` for documentation only changes +### 1) Message format -Use `BREAKING CHANGE` in the commit body when applicable. +```text +type(optional-scope)!: short summary +``` + +- `type`: what kind of change you made. +- `scope` (optional): where the change happened. +- `!`: marks a breaking change. + +### 2) Version bump rules + +- `major`: any commit with `!` in the header or a `BREAKING CHANGE:` footer. +- `minor`: `feat`, `feature`. +- `patch`: `fix`, `bugfix`, `hotfix`, `opt`, `patch`, `perf`, `refactor`, `chore`, `revert`. + +### 3) Allowed types + +- `feat`, `feature`: new behavior or capabilities. +- `fix`, `bugfix`: bug correction. +- `hotfix`: urgent production fix. +- `opt`: small, practical optimization. +- `patch`: small maintenance fix that should still trigger a patch release. +- `perf`: measurable performance improvement. +- `refactor`: structural cleanup without intended behavior change. +- `chore`: repository maintenance and non-feature housekeeping. +- `revert`: rollback of a previous commit. + +### 4) Allowed scopes (optional) + +- Domain and backend areas: `api`, `auth`, `permissions`, `serializer`, `viewset`, `orm`, `migrations`, `admin`, `settings`. +- Tooling and workflow areas: `deps`, `ci`, `docs`, `build`, `style`, `release`, `workflow`. +- Quality and test areas: `test`, `tests`. +- Project modules: `cli`, `agents`, `skills`, `instructions`, `prompts`, `frontmatter`, `artifacts`. + +### 5) Examples + +- `feat(cli): add --global verify mode` +- `fix(auth): handle missing token header` +- `hotfix(ci): handle broken tag push race` +- `opt(serializer): simplify optional-field validation path` +- `patch(docs): clarify release gating` +- `perf(orm): reduce query count in list endpoint` +- `refactor(artifacts)!: drop legacy manifest key` + +### 6) Subject length + +- Commit subject lines are limited to 100 characters by CI. + +### 7) Branch naming + +Branch names are validated in CI using Conventional Branch format: + +```text +type/short-description +``` + +Allowed branch types: + +- `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix` +- `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style` +- `opt`, `patch`, `dependabot` + +A dedicated CI workflow validates branch-push commit messages (non-main branches) using commit-check, and enforces this repository's allowed scope list. ## Pull Request Expectations diff --git a/README.md b/README.md index c5ac20a..6c407be 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,38 @@ make test # run tests on py311-py314 via tox make tox # run tests on py311-py314 (when installed) ``` +### GitHub Actions (CI/CD) + +This repository uses dedicated workflows for branch QA, pull request verification, +security checks, commit policy enforcement, and release automation. + +| Workflow file | Trigger | Purpose | +| -------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `.github/workflows/qa.yml` | `push` (all branches except `main`) | Fast branch feedback: format, lint, typecheck, and test matrix (Python 3.11-3.14). | +| `.github/workflows/commit.yml` | `push` (excludes `main`, `master`, `merge/**`, `gh-readonly-queue/**`) | Enforce commit message policy on branch pushes before PR merge. | +| `.github/workflows/verify.yml` | `pull_request` to `main` | Run unit tests and verify installability/validity of generated artifacts. | +| `.github/workflows/security.yml` | `pull_request` to `main` | Run dependency audit and secret scanning on the PR diff. | +| `.github/workflows/release.yml` | `pull_request` closed on `main` (merged only) | Compute semantic version, create tag and GitHub release, build package artifacts. | + +Commit policy specifics: + +- Type validation is configured inline via `CCHK_*` environment variables in `.github/workflows/commit.yml` and enforced by `commit-check/commit-check-action`. +- Commit subject length is limited to 100 characters in `.github/workflows/commit.yml`. +- Branch naming is validated with Conventional Branch format (`type/description`) in `.github/workflows/commit.yml`. +- Allowed branch types are: `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. +- Dependabot commit prefixes are configured in `.github/dependabot.yml` as `chore(deps)` for Python updates and `chore(ci)` for GitHub Actions updates. +- Scope allowlist validation is enforced in `.github/workflows/commit.yml`. +- Release version bump policy is mapped in `.github/workflows/release.yml`: + - minor: `feat`, `feature` + - patch: `fix`, `bugfix`, `hotfix`, `opt`, `patch`, `perf`, `refactor`, `chore`, `revert` + +Recommended branch protection for `main`: + +- Require PR before merge. +- Require all status checks from `verify.yml` and `security.yml`. +- Optionally require `qa.yml` if you use direct pushes to long-lived non-main branches. +- Disallow force pushes and branch deletion. + ### local multi-python testing (pyenv + tox) This repository keeps its local interpreter order in `.python-version` so `tox` diff --git a/docs/design/workflow.md b/docs/design/workflow.md index f0baf0a..4d886b0 100644 --- a/docs/design/workflow.md +++ b/docs/design/workflow.md @@ -1,13 +1,56 @@ # vstack — workflow > Maintained by: **designer** role\ -> Last updated: 2026-04-01 +> Last updated: 2026-04-20 ## overview This document describes how vstack workflows execute today (single-call execution) and a possible future orchestrated role pipeline. +It also documents the repository-level GitHub Actions automation used for quality, +security, commit policy, and releases. + +______________________________________________________________________ + +## repository automation (GitHub Actions) + +The repository uses a split workflow model so each automation concern is isolated +and easy to reason about. + +| Workflow | Trigger | Responsibility | +| -------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `.github/workflows/qa.yml` | Push to non-main branches | Fast feedback for formatting, linting, type checks, and tests across Python versions. | +| `.github/workflows/commit.yml` | Push to non-main branches (with explicit branch excludes) | Validate commit message policy before PR merge. | +| `.github/workflows/verify.yml` | Pull request to `main` | Validate source behavior and artifact install/verify flow. | +| `.github/workflows/security.yml` | Pull request to `main` | Dependency vulnerability audit and secret scan. | +| `.github/workflows/release.yml` | Merged pull request to `main` | Compute SemVer, create tag and GitHub release, build distributions. | + +### commit policy enforcement model + +Commit policy is intentionally split across two components in one workflow: + +1. `CCHK_*` environment variables in `.github/workflows/commit.yml` define commit message conventions and allowed commit types. +1. `.github/workflows/commit.yml` also enforces allowed scopes for pushed commits. + +Additional commit workflow policy: + +- Maximum commit subject length is 100 characters. +- Branch names are validated against Conventional Branch format (`type/description`). +- Allowed branch types: `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. + +This split keeps standard message validation in a purpose-built action and keeps +repository-specific scope policy explicit in CI. + +### release bump mapping + +`release.yml` computes SemVer from commit history using these mappings: + +- minor: `feat`, `feature` +- patch: `fix`, `bugfix`, `hotfix`, `opt`, `patch`, `perf`, `refactor`, `chore`, `revert` + +Repository tag policy is strict `X.Y.Z` (no `v` prefix). + ______________________________________________________________________ ## current execution model — single-call From b92a6e18615d3b87362d1f106cc1af96705bc4ba Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 22:49:22 +0200 Subject: [PATCH 03/19] docs(instructions): align policy boundaries and bump python template version --- .github/instructions/git.instructions.md | 43 ++++ .github/instructions/python.instructions.md | 4 +- .github/vstack.json | 183 +----------------- README.md | 14 ++ .../013-instructions-vs-skills-boundary.md | 84 ++++++++ docs/design/instructions.md | 77 ++++++++ docs/design/skills.md | 8 + docs/design/workflow.md | 15 ++ .../_templates/instructions/git/config.yaml | 4 + .../_templates/instructions/git/template.md | 36 ++++ .../instructions/python/config.yaml | 4 +- .../instructions/python/template.md | 2 +- 12 files changed, 292 insertions(+), 182 deletions(-) create mode 100644 .github/instructions/git.instructions.md create mode 100644 docs/architecture/adr/013-instructions-vs-skills-boundary.md create mode 100644 docs/design/instructions.md create mode 100644 src/vstack/_templates/instructions/git/config.yaml create mode 100644 src/vstack/_templates/instructions/git/template.md diff --git a/.github/instructions/git.instructions.md b/.github/instructions/git.instructions.md new file mode 100644 index 0000000..1ce27b6 --- /dev/null +++ b/.github/instructions/git.instructions.md @@ -0,0 +1,43 @@ +--- +name: git +description: 'Git and release hygiene conventions. Use when creating commits, branches, or release-related changes.' +applyTo: **/* +--- +Use these Git and release hygiene conventions in this project. + +## Branch naming + +1. Use `type/short-description` branch names. +1. Keep branch names lowercase and use hyphens to separate words. +1. Use one of these allowed branch types when branch validation is enabled: + `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, + `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. + +## Commit messages + +1. Use Conventional Commits: `type(optional-scope)!: short summary`. +1. Keep commit subjects clear, imperative, and within repository limits. +1. Keep the commit subject at 100 characters or fewer when commit policy CI enforces this limit. +1. Include `!` or a `BREAKING CHANGE:` footer when behavior changes are breaking. +1. Keep commit type and scope aligned with repository policy. + +## SemVer alignment + +1. Treat commit messages as release inputs when the repository uses semantic version automation. +1. Ensure major, minor, and patch intent is reflected in the commit type and breaking markers. +1. Do not merge release-impacting changes with ambiguous commit messages. + +## Security and credentials + +1. Never ask users to paste passphrases, tokens, API keys, or private keys into chat. +1. Never echo or log secrets from terminal prompts, command output, or environment variables. +1. Never place credentials in commit messages, source files, workflow files, or documentation. +1. Prefer existing secure authentication flows (for example SSH agent, OS keychain, `gh auth`). + +## Safe Git operations + +1. Avoid force pushes and destructive history rewrites unless explicitly requested and approved. +1. Keep commits focused and reviewable. +1. Prefer local verification before pushing release-impacting changes. + + diff --git a/.github/instructions/python.instructions.md b/.github/instructions/python.instructions.md index 33a3fb1..201293b 100644 --- a/.github/instructions/python.instructions.md +++ b/.github/instructions/python.instructions.md @@ -1,9 +1,9 @@ --- name: python -description: 'Python coding conventions for this repository. Use when writing or reviewing Python modules, tests, CLI code, and package internals.' +description: 'Python coding conventions for projects. Use when writing or reviewing Python modules, tests, CLI code, and package internals.' applyTo: **/*.py --- -Use these Python conventions in this repository. +Use these Python conventions in this project. ## Design and readability diff --git a/.github/vstack.json b/.github/vstack.json index 8d4e2bf..1f444b4 100644 --- a/.github/vstack.json +++ b/.github/vstack.json @@ -1,188 +1,17 @@ { "vstack_version": "0.0.0.post3.dev0+df3fe6e", - "installed_at": "2026-04-19T22:11:30.480962+00:00", + "installed_at": "2026-04-20T20:48:37.118491+00:00", "artifacts": { - "skills": [ - { - "name": "adr", - "file": "skills/adr/SKILL.md", - "version": "1.0.1" - }, - { - "name": "analyse", - "file": "skills/analyse/SKILL.md", - "version": "1.0.1" - }, - { - "name": "architecture", - "file": "skills/architecture/SKILL.md", - "version": "1.0.1" - }, - { - "name": "cicd", - "file": "skills/cicd/SKILL.md", - "version": "1.0.1" - }, - { - "name": "code-review", - "file": "skills/code-review/SKILL.md", - "version": "1.0.1" - }, - { - "name": "concise", - "file": "skills/concise/SKILL.md", - "version": "1.0.0" - }, - { - "name": "consult", - "file": "skills/consult/SKILL.md", - "version": "1.0.1" - }, - { - "name": "container", - "file": "skills/container/SKILL.md", - "version": "1.0.1" - }, - { - "name": "debug", - "file": "skills/debug/SKILL.md", - "version": "1.0.1" - }, - { - "name": "dependency", - "file": "skills/dependency/SKILL.md", - "version": "1.0.0" - }, - { - "name": "design", - "file": "skills/design/SKILL.md", - "version": "1.0.1" - }, - { - "name": "docs", - "file": "skills/docs/SKILL.md", - "version": "1.0.1" - }, - { - "name": "explore", - "file": "skills/explore/SKILL.md", - "version": "1.0.1" - }, - { - "name": "guardrails", - "file": "skills/guardrails/SKILL.md", - "version": "1.0.1" - }, - { - "name": "incident", - "file": "skills/incident/SKILL.md", - "version": "1.0.0" - }, - { - "name": "inspect", - "file": "skills/inspect/SKILL.md", - "version": "1.0.1" - }, - { - "name": "migrate", - "file": "skills/migrate/SKILL.md", - "version": "1.0.0" - }, - { - "name": "onboard", - "file": "skills/onboard/SKILL.md", - "version": "1.0.0" - }, - { - "name": "openapi", - "file": "skills/openapi/SKILL.md", - "version": "1.0.0" - }, - { - "name": "performance", - "file": "skills/performance/SKILL.md", - "version": "1.0.1" - }, - { - "name": "pr", - "file": "skills/pr/SKILL.md", - "version": "1.0.1" - }, - { - "name": "refactor", - "file": "skills/refactor/SKILL.md", - "version": "1.0.0" - }, - { - "name": "release-notes", - "file": "skills/release-notes/SKILL.md", - "version": "1.0.1" - }, - { - "name": "requirements", - "file": "skills/requirements/SKILL.md", - "version": "1.0.1" - }, - { - "name": "security", - "file": "skills/security/SKILL.md", - "version": "1.0.1" - }, - { - "name": "verify", - "file": "skills/verify/SKILL.md", - "version": "1.0.1" - }, - { - "name": "vision", - "file": "skills/vision/SKILL.md", - "version": "1.0.1" - } - ], - "agents": [ - { - "name": "architect", - "file": "agents/architect.agent.md", - "version": "1.0.1" - }, - { - "name": "designer", - "file": "agents/designer.agent.md", - "version": "1.0.1" - }, - { - "name": "engineer", - "file": "agents/engineer.agent.md", - "version": "1.0.1" - }, - { - "name": "product", - "file": "agents/product.agent.md", - "version": "1.0.1" - }, + "instructions": [ { - "name": "release", - "file": "agents/release.agent.md", - "version": "1.0.1" + "name": "git", + "file": "instructions/git.instructions.md", + "version": "0.1.0" }, - { - "name": "tester", - "file": "agents/tester.agent.md", - "version": "1.0.1" - } - ], - "instructions": [ { "name": "python", "file": "instructions/python.instructions.md", - "version": "0.1.0" - } - ], - "prompts": [ - { - "name": "code-review", - "file": "prompts/code-review.prompt.md", - "version": "0.1.0" + "version": "0.1.1" } ] } diff --git a/README.md b/README.md index 6c407be..e662f9a 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,19 @@ ______________________________________________________________________ - **Agents** (like `@product`, `@tester`) are the main interface. Use them for all primary flows. Agents automatically select the right skills for their role and context. - **Skills** (like `/verify`, `/security`) can be invoked directly if you want to force a specific check. This is optional and usually not needed. +### Policies vs. procedures + +- **Instructions** define baseline policy and conventions (for example safety rules, + language coding standards, and repository guardrails). +- **Skills** define task procedures (for example debug, migration review, or + performance analysis flows). + +Decision reference: + +- [docs/design/instructions.md](docs/design/instructions.md) +- [docs/design/skills.md](docs/design/skills.md) +- [docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md) + #### Invocation examples | Goal | Agent invocation | Optionally: direct skill invocation | @@ -336,6 +349,7 @@ vstack/ │ │ └── adr/ ← architecture decision records │ ├── design/ │ │ ├── design.md ← generator and builder internals +│ │ ├── instructions.md ← instruction model and policy scope │ │ ├── skills.md ← full skill index │ │ └── workflow.md ← execution model │ └── product/ diff --git a/docs/architecture/adr/013-instructions-vs-skills-boundary.md b/docs/architecture/adr/013-instructions-vs-skills-boundary.md new file mode 100644 index 0000000..d49d6a2 --- /dev/null +++ b/docs/architecture/adr/013-instructions-vs-skills-boundary.md @@ -0,0 +1,84 @@ +# ADR-013: Policy vs Procedure Boundary for Instructions and Skills + +> Maintained by: **architect** role + +**date:** 2026-04-20\ +**status:** accepted + +## context + +vstack supports two reusable guidance mechanisms: + +- Instructions (`.instructions.md`) with optional `applyTo` path matching. +- Skills (`SKILL.md`) that are invoked explicitly or auto-selected by task intent. + +As vstack expands language and framework support, maintainers need a stable rule +for where guidance should live. Without an explicit boundary, the same content can +be duplicated or misplaced, leading to inconsistent behavior. + +## decision + +vstack adopts the following boundary: + +1. **Instructions are policy.** + + Use instructions for always-on rules, coding standards, safety constraints, + and repository conventions. Use `applyTo` when the policy is file-pattern scoped + (for example `**/*.py`). + +1. **Skills are procedures.** + + Use skills for task workflows, operational sequences, and specialist methods. + Skills are optional and intent-driven; they do not replace baseline policy. + +1. **Language-specific baseline policy may live in instructions.** + + This is valid when the guidance is a repository-wide coding standard for that + language and should apply consistently across roles and workflows. + +## alternatives considered + +1. **Put all language/framework guidance in skills only.** Rejected. + + This would weaken baseline enforcement for repository coding standards and lose + file-pattern matching advantages from `applyTo`. + +1. **Put all procedure detail in instructions.** Rejected. + + This would reduce modularity and increase always-on context load. + +1. **No explicit boundary.** Rejected. + + This causes authoring ambiguity and inconsistent guidance placement. + +## rationale + +The split aligns each mechanism with its strengths: + +- Instructions provide predictable policy enforcement and path-scoped applicability. +- Skills provide modular, lazy, task-focused execution guidance. + +This preserves both consistency (policy) and composability (procedures). + +## consequences + +### positive + +- Clear authoring decision rule for new templates. +- Lower risk of duplicated or conflicting guidance. +- Better scaling for new language/framework additions. + +### negative / tradeoffs + +- Some topics may still require judgment when they include both policy and procedure. +- Documentation must be kept synchronized across design references. + +### risks + +- Overly broad instructions can still increase context size if not curated. +- Overly thin skills can become under-specified if policy and procedure are mixed. + +## related ADRs + +- ADR-011: skill restructure +- ADR-012: flat templates and install-time generation diff --git a/docs/design/instructions.md b/docs/design/instructions.md new file mode 100644 index 0000000..14085e7 --- /dev/null +++ b/docs/design/instructions.md @@ -0,0 +1,77 @@ +# vstack — instructions + +> Maintained by: **designer** role\ +> Last updated: 2026-04-20 + +## what are instructions? + +Instructions are repository guidance files (`*.instructions.md`) loaded by Copilot +to apply baseline rules. They are policy-oriented and can be scoped with `applyTo` +patterns. + +Examples: + +- Global safety and credential handling policy. +- Git and release hygiene policy. +- Language-specific coding standards that should apply to all changes in that language. + +______________________________________________________________________ + +## policy vs procedure boundary + +vstack uses an explicit split: + +- **Instructions = policy** (always-on rules and standards). +- **Skills = procedure** (task execution workflows). + +Canonical decision record: +[docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md). + +Use instructions when guidance is: + +- expected on every applicable change, +- independent from a specific task flow, +- naturally expressed as constraints and conventions. + +Use skills when guidance is: + +- a step-by-step operational process, +- optional or intent-driven, +- specialized to one type of task (for example debug, migrate, performance). + +______________________________________________________________________ + +## applyTo patterns + +`applyTo` scopes an instruction to matching files. + +Examples: + +- `**/*.py` for Python policy. +- `**/*` for repo-wide policy. + +`applyTo` is for policy targeting, not for procedural automation. + +______________________________________________________________________ + +## file locations + +| Path | Purpose | +| ------------------------------------------------------- | --------------------------------------------------------- | +| `src/vstack/_templates/instructions//config.yaml` | Source of truth: instruction metadata and `applyTo` scope | +| `src/vstack/_templates/instructions//template.md` | Source of truth: instruction body | +| `.github/instructions/.instructions.md` | Generated output loaded by Copilot | + +Never edit generated `.github/instructions/` directly in the source repository. +Regenerate with `python3 -m vstack install` after template changes. + +______________________________________________________________________ + +## minimum instruction contract + +Each instruction should include: + +1. Clear applicability and intent. +1. Concrete rules, not broad aspirations. +1. Safety constraints where relevant. +1. Alignment with repository automation (CI, release policy, security policy). diff --git a/docs/design/skills.md b/docs/design/skills.md index 1cc6d17..58badac 100644 --- a/docs/design/skills.md +++ b/docs/design/skills.md @@ -25,6 +25,14 @@ Unlike custom instructions that primarily define coding preferences and guardrai skills package specialized, reusable workflows with optional scripts, examples, and references. +Boundary rule: + +- Policies belong in instructions. +- Procedures belong in skills. + +See [docs/design/instructions.md](docs/design/instructions.md) and +[docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md). + Key benefits: - Specialize Copilot for domain-specific tasks without repeating context. diff --git a/docs/design/workflow.md b/docs/design/workflow.md index 4d886b0..8130949 100644 --- a/docs/design/workflow.md +++ b/docs/design/workflow.md @@ -11,6 +11,12 @@ and a possible future orchestrated role pipeline. It also documents the repository-level GitHub Actions automation used for quality, security, commit policy, and releases. +For authoring boundaries between reusable guidance mechanisms: + +- [docs/design/instructions.md](docs/design/instructions.md) +- [docs/design/skills.md](docs/design/skills.md) +- [docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md) + ______________________________________________________________________ ## repository automation (GitHub Actions) @@ -173,6 +179,15 @@ A role may use multiple skills in sequence within one model call. For example, the architect role uses the `adr` skill to write decision records and the `architecture` skill to produce the architecture document. +## authoring decision rule + +Use this rule when deciding where reusable guidance belongs: + +1. If it is a baseline rule or standard, put it in instructions. +1. If it is a task workflow or method, put it in skills. + +Instructions are policy. Skills are procedure. + ______________________________________________________________________ ## forward compatibility diff --git a/src/vstack/_templates/instructions/git/config.yaml b/src/vstack/_templates/instructions/git/config.yaml new file mode 100644 index 0000000..eac2055 --- /dev/null +++ b/src/vstack/_templates/instructions/git/config.yaml @@ -0,0 +1,4 @@ +name: git +description: Git and release hygiene conventions. Use when creating commits, branches, or release-related changes. +applyTo: "**/*" +version: 0.1.0 diff --git a/src/vstack/_templates/instructions/git/template.md b/src/vstack/_templates/instructions/git/template.md new file mode 100644 index 0000000..c821d7b --- /dev/null +++ b/src/vstack/_templates/instructions/git/template.md @@ -0,0 +1,36 @@ +Use these Git and release hygiene conventions in this project. + +## Branch naming + +1. Use `type/short-description` branch names. +1. Keep branch names lowercase and use hyphens to separate words. +1. Use one of these allowed branch types when branch validation is enabled: + `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, + `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. + +## Commit messages + +1. Use Conventional Commits: `type(optional-scope)!: short summary`. +1. Keep commit subjects clear, imperative, and within repository limits. +1. Keep the commit subject at 100 characters or fewer when commit policy CI enforces this limit. +1. Include `!` or a `BREAKING CHANGE:` footer when behavior changes are breaking. +1. Keep commit type and scope aligned with repository policy. + +## SemVer alignment + +1. Treat commit messages as release inputs when the repository uses semantic version automation. +1. Ensure major, minor, and patch intent is reflected in the commit type and breaking markers. +1. Do not merge release-impacting changes with ambiguous commit messages. + +## Security and credentials + +1. Never ask users to paste passphrases, tokens, API keys, or private keys into chat. +1. Never echo or log secrets from terminal prompts, command output, or environment variables. +1. Never place credentials in commit messages, source files, workflow files, or documentation. +1. Prefer existing secure authentication flows (for example SSH agent, OS keychain, `gh auth`). + +## Safe Git operations + +1. Avoid force pushes and destructive history rewrites unless explicitly requested and approved. +1. Keep commits focused and reviewable. +1. Prefer local verification before pushing release-impacting changes. diff --git a/src/vstack/_templates/instructions/python/config.yaml b/src/vstack/_templates/instructions/python/config.yaml index d50d4fa..3d978dd 100644 --- a/src/vstack/_templates/instructions/python/config.yaml +++ b/src/vstack/_templates/instructions/python/config.yaml @@ -1,4 +1,4 @@ name: python -description: Python coding conventions for this repository. Use when writing or reviewing Python modules, tests, CLI code, and package internals. +description: Python coding conventions for projects. Use when writing or reviewing Python modules, tests, CLI code, and package internals. applyTo: "**/*.py" -version: 0.1.0 +version: 0.1.1 diff --git a/src/vstack/_templates/instructions/python/template.md b/src/vstack/_templates/instructions/python/template.md index 90fe002..bf6f27b 100644 --- a/src/vstack/_templates/instructions/python/template.md +++ b/src/vstack/_templates/instructions/python/template.md @@ -1,4 +1,4 @@ -Use these Python conventions in this repository. +Use these Python conventions in this project. ## Design and readability From 83c21127906943b5d652ea84430785651840e933 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:08:53 +0200 Subject: [PATCH 04/19] feat(cli): verify artifact provenance against manifest --- src/vstack/artifacts/generator.py | 36 ++++++- src/vstack/cli/commands.py | 128 ++++++++++++++++++++++- tests/vstack/artifacts/test_generator.py | 27 +++++ tests/vstack/cli/test_commands.py | 111 ++++++++++++++++++++ 4 files changed, 296 insertions(+), 6 deletions(-) diff --git a/src/vstack/artifacts/generator.py b/src/vstack/artifacts/generator.py index 04817fe..7cb9c2a 100644 --- a/src/vstack/artifacts/generator.py +++ b/src/vstack/artifacts/generator.py @@ -11,6 +11,7 @@ from __future__ import annotations +import json import re import shutil from pathlib import Path @@ -18,10 +19,12 @@ from vstack.artifacts.config import ArtifactTypeConfig from vstack.artifacts.constants import AUTO_GEN_FOOTER from vstack.artifacts.models import ArtifactResult, RenderedArtifact +from vstack.constants import VERSION from vstack.frontmatter import FrontmatterParser, build_output from vstack.models import CheckMessage, ValidationResult _PLACEHOLDER_RE = re.compile(r"\{\{([A-Z_]+)\}\}") +_META_COMMENT_RE = re.compile(r"") class GenericArtifactGenerator: @@ -59,6 +62,32 @@ def find_unresolved(text: str) -> list[str]: """Return a list of TOKEN names that remain unresolved in *text*.""" return _PLACEHOLDER_RE.findall(text) + @staticmethod + def parse_generation_metadata(text: str) -> dict[str, str] | None: + """Parse the ``VSTACK-META`` footer JSON, if present.""" + matches = _META_COMMENT_RE.findall(text) + if not matches: + return None + try: + data = json.loads(matches[-1]) + except json.JSONDecodeError: + return None + if not isinstance(data, dict): + return None + return {str(k): str(v) for k, v in data.items()} + + def _build_footer(self, artifact_name: str, artifact_version: str) -> str: + """Build the AUTO-GENERATED footer plus machine-readable metadata.""" + meta = { + "generator": "vstack", + "vstack_version": VERSION, + "artifact_type": self.config.type_name, + "artifact_name": artifact_name, + "artifact_version": artifact_version, + } + meta_json = json.dumps(meta, separators=(",", ":"), sort_keys=True) + return f"{AUTO_GEN_FOOTER}\n" + # ── Partials ────────────────────────────────────────────────────────────── def load_partials(self) -> dict[str, str]: @@ -174,7 +203,8 @@ def render(self, tmpl_dir: Path) -> RenderedArtifact: fm_str = "" body_str = resolved - footer = AUTO_GEN_FOOTER if self.config.auto_gen_footer else "" + artifact_version = str((meta or {}).get("version") or VERSION) + footer = self._build_footer(name, artifact_version) if self.config.auto_gen_footer else "" body_content = body_str.lstrip("\n") output = (fm_str + body_content + footer) if (fm_str or footer) else body_str @@ -362,6 +392,10 @@ def fail(msg: str) -> None: ok(f"{label}: has AUTO-GENERATED footer") else: fail(f"{label}: missing AUTO-GENERATED footer") + if self.parse_generation_metadata(content) is not None: + ok(f"{label}: has VSTACK-META footer") + else: + ok(f"{label}: missing VSTACK-META footer (legacy artifact accepted)") if self.config.fail_on_unresolved: unresolved = self.find_unresolved(content) if not unresolved: diff --git a/src/vstack/cli/commands.py b/src/vstack/cli/commands.py index 4f3ba88..247ebfd 100644 --- a/src/vstack/cli/commands.py +++ b/src/vstack/cli/commands.py @@ -103,6 +103,114 @@ def _gen_for(self, type_name: str) -> GenericArtifactGenerator | None: """Return the generator for *type_name*, or ``None`` when unknown.""" return next((g for g in self._generators if g.config.type_name == type_name), None) + def _expected_output_names( + self, + gen: GenericArtifactGenerator, + manifest_data: Manifest | None, + ) -> list[str] | None: + """Resolve expected output names for verify output checks.""" + if manifest_data: + return manifest_data.names_for(gen.config.manifest_key) + return _EXPECTED_INPUT_NAMES.get(gen.config.type_name) + + def _expected_manifest_metadata( + self, + gen: GenericArtifactGenerator, + manifest_data: Manifest, + entry: ArtifactEntry, + ) -> dict[str, str]: + """Build expected metadata values for one manifest-tracked artifact.""" + expected_meta = { + "generator": "vstack", + "vstack_version": manifest_data.vstack_version, + "artifact_type": gen.config.type_name, + "artifact_name": entry.name, + } + if entry.version is not None: + expected_meta["artifact_version"] = entry.version + return expected_meta + + def _verify_manifest_metadata_entry( + self, + gen: GenericArtifactGenerator, + manifest_data: Manifest, + entry: ArtifactEntry, + artifact_path: Path, + ) -> ValidationResult: + """Verify manifest-linked metadata for a single artifact file.""" + result = ValidationResult() + content = artifact_path.read_text(encoding="utf-8") + metadata = GenericArtifactGenerator.parse_generation_metadata(content) + rel_path = self._label(artifact_path) + + if metadata is None: + if "AUTO-GENERATED" not in content: + result.messages.append( + CheckMessage( + "fail", + f"{rel_path}: missing VSTACK-META and missing AUTO-GENERATED footer", + ) + ) + return result + + result.messages.append( + CheckMessage( + "pass", + f"{rel_path}: missing VSTACK-META footer; " + "treating manifest entry as source of truth", + ) + ) + result.messages.append( + CheckMessage( + "pass", + f"{rel_path}: legacy artifact accepted from manifest tracking", + ) + ) + return result + + for key, expected_value in self._expected_manifest_metadata( + gen, manifest_data, entry + ).items(): + actual_value = metadata.get(key) + if actual_value == expected_value: + result.messages.append(CheckMessage("pass", f"{rel_path}: {key} matches manifest")) + else: + result.messages.append( + CheckMessage( + "fail", + f"{rel_path}: {key} mismatch " + f"(expected '{expected_value}', got '{actual_value}')", + ) + ) + + return result + + def _verify_manifest_metadata( + self, + gen: GenericArtifactGenerator, + manifest_data: Manifest, + install_dir: Path, + ) -> ValidationResult | None: + """Verify footer metadata for all manifest-tracked artifacts of one type.""" + manifest_entries = manifest_data.entries_for(gen.config.manifest_key) + if not manifest_entries: + return None + + result = ValidationResult() + for entry in manifest_entries: + artifact_path = install_dir / entry.file + if not artifact_path.exists(): + continue + entry_result = self._verify_manifest_metadata_entry( + gen, + manifest_data, + entry, + artifact_path, + ) + result.messages.extend(entry_result.messages) + + return result if result.messages else None + # ── validate ────────────────────────────────────────────────────────────── def validate(self, only: list[str] | None = None) -> int: @@ -168,6 +276,7 @@ def install( mf = self._manifest(install_dir) existing_manifest = mf.read() existing_versions: dict[str, str | None] = {} + selected_manifest_keys = {gen.config.manifest_key for gen in gens} if existing_manifest: for gen in gens: for entry in existing_manifest.entries_for(gen.config.manifest_key): @@ -177,6 +286,12 @@ def install( prefix = f"{_C.DIM}[dry-run]{_C.RESET} " if dry_run else "" all_ok = True new_entries: dict[str, list[ArtifactEntry]] = {} + if existing_manifest: + # Keep manifest entries for artifact families not part of this install run + # (e.g. install --only instruction should not drop agents/skills entries). + for manifest_key, entries in existing_manifest.artifacts.items(): + if manifest_key not in selected_manifest_keys: + new_entries[manifest_key] = list(entries) for gen in gens: out_dir = install_dir / gen.config.output_subdir @@ -327,13 +442,16 @@ def _print_result(result: ValidationResult) -> None: ) ) else: - expected = ( - manifest_data.names_for(gen.config.type_name) - if manifest_data - else _EXPECTED_INPUT_NAMES.get(gen.config.type_name) - ) + expected = self._expected_output_names(gen, manifest_data) _print_result(gen.verify_output(out_dir, expected)) + if manifest_data: + metadata_result = self._verify_manifest_metadata( + gen, manifest_data, install_dir + ) + if metadata_result: + _print_result(metadata_result) + print() total_failures = sum(r.failures for r in results) if total_failures: diff --git a/tests/vstack/artifacts/test_generator.py b/tests/vstack/artifacts/test_generator.py index 38c8267..2c9b11c 100644 --- a/tests/vstack/artifacts/test_generator.py +++ b/tests/vstack/artifacts/test_generator.py @@ -76,8 +76,35 @@ def test_render_produces_rendered_artifact(self, tmp_path: Path) -> None: artifact = self._make_skill_gen(tmp_path).render(tmpl_dir) assert artifact.name == "vision" assert "AUTO-GENERATED" in artifact.content + assert "VSTACK-META" in artifact.content assert artifact.unresolved == [] + def test_render_emits_parseable_vstack_metadata_footer(self, tmp_path: Path) -> None: + """Test that render emits machine-readable footer metadata.""" + (tmp_path / "templates" / "skills" / "_partials").mkdir(parents=True) + (tmp_path / "templates" / "skills" / "_partials" / "skill-context.md").write_text( + "context", encoding="utf-8" + ) + tmpl_dir = tmp_path / "templates" / "skills" / "verify" + tmpl_dir.mkdir(parents=True) + (tmpl_dir / "template.md").write_text( + "---\nname: verify\nversion: 2.3.4\ndescription: d\n---\n{{SKILL_CONTEXT}}\n", + encoding="utf-8", + ) + + artifact = self._make_skill_gen(tmp_path).render(tmpl_dir) + metadata = GenericArtifactGenerator.parse_generation_metadata(artifact.content) + + assert metadata is not None + assert metadata["generator"] == "vstack" + assert metadata["artifact_type"] == "skill" + assert metadata["artifact_name"] == "verify" + assert metadata["artifact_version"] == "2.3.4" + + def test_parse_generation_metadata_returns_none_without_footer(self) -> None: + """Test that metadata parser returns none when footer is missing.""" + assert GenericArtifactGenerator.parse_generation_metadata("plain content") is None + def test_generate_writes_files(self, tmp_path: Path) -> None: """Test that generate writes files.""" tmpl_dir = tmp_path / "templates" / "skills" / "alpha" diff --git a/tests/vstack/cli/test_commands.py b/tests/vstack/cli/test_commands.py index 89f00ce..25c0252 100644 --- a/tests/vstack/cli/test_commands.py +++ b/tests/vstack/cli/test_commands.py @@ -3,6 +3,7 @@ from __future__ import annotations import json +import re from pathlib import Path from typing import Any, cast @@ -107,6 +108,43 @@ def test_install_writes_expected_skill_count(self, tmp_path: Path) -> None: md_files = list((tmp_path / ".github" / "skills").glob("*/SKILL.md")) assert len(md_files) == len(EXPECTED_CANONICAL_NAMES) + def test_install_only_preserves_manifest_entries_for_other_types(self, tmp_path: Path) -> None: + """Test that --only install does not drop manifest entries from other artifact types.""" + install_dir = tmp_path / ".github" + install_dir.mkdir(parents=True) + manifest: dict[str, Any] = { + "vstack_version": "0.1.0", + "installed_at": "2026-01-01T00:00:00Z", + "artifacts": { + "agents": [ + { + "name": "engineer", + "file": "agents/engineer.agent.md", + "version": "0.1.0", + } + ], + "skills": [ + { + "name": "verify", + "file": "skills/verify/SKILL.md", + "version": "0.1.0", + } + ], + }, + } + (install_dir / "vstack.json").write_text(json.dumps(manifest), encoding="utf-8") + + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + rc = cli.install(install_dir, only=["instruction"]) + assert rc == 0 + + updated: dict[str, Any] = json.loads( + (install_dir / "vstack.json").read_text(encoding="utf-8") + ) + assert "instructions" in updated["artifacts"] + assert updated["artifacts"]["agents"] == manifest["artifacts"]["agents"] + assert updated["artifacts"]["skills"] == manifest["artifacts"]["skills"] + def test_install_update_skips_when_version_not_newer(self, tmp_path: Path) -> None: """Test that install update skips when version not newer.""" install_dir = tmp_path / ".github" @@ -461,6 +499,79 @@ def test_install_update_newer_version_writes_file(self, tmp_path: Path) -> None: assert new_content != "old" assert "AUTO-GENERATED" in new_content + def test_verify_fails_on_vstack_meta_version_mismatch(self, tmp_path: Path) -> None: + """Test that verify fails when VSTACK-META footer differs from manifest values.""" + install_dir = tmp_path / ".github" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + rc_install = cli.install(install_dir, only=["instruction"]) + assert rc_install == 0 + + instruction_file = install_dir / "instructions" / "python.instructions.md" + content = instruction_file.read_text(encoding="utf-8") + tampered = re.sub( + r'"vstack_version":"[^"]+"', + '"vstack_version":"tampered-version"', + content, + count=1, + ) + instruction_file.write_text(tampered, encoding="utf-8") + + rc_verify = cli.verify( + install_dir=install_dir, + source=False, + output=True, + only=["instruction"], + ) + assert rc_verify == 1 + + def test_verify_accepts_legacy_artifact_without_vstack_meta(self, tmp_path: Path) -> None: + """Test that verify accepts old artifacts that do not include VSTACK-META.""" + install_dir = tmp_path / ".github" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + rc_install = cli.install(install_dir, only=["instruction"]) + assert rc_install == 0 + + instruction_file = install_dir / "instructions" / "python.instructions.md" + content = instruction_file.read_text(encoding="utf-8") + legacy_content = re.sub(r"\n\n", "\n", content, count=1) + instruction_file.write_text(legacy_content, encoding="utf-8") + + rc_verify = cli.verify( + install_dir=install_dir, + source=False, + output=True, + only=["instruction"], + ) + assert rc_verify == 0 + + def test_verify_rejects_legacy_artifact_without_vstack_meta_and_autogen( + self, tmp_path: Path + ) -> None: + """Test that verify rejects legacy fallback when AUTO-GENERATED marker is missing.""" + install_dir = tmp_path / ".github" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + rc_install = cli.install(install_dir, only=["instruction"]) + assert rc_install == 0 + + instruction_file = install_dir / "instructions" / "python.instructions.md" + content = instruction_file.read_text(encoding="utf-8") + no_meta = re.sub(r"\n\n", "\n", content, count=1) + no_autogen = re.sub( + r"\n\n", + "\n", + no_meta, + count=1, + ) + instruction_file.write_text(no_autogen, encoding="utf-8") + + rc_verify = cli.verify( + install_dir=install_dir, + source=False, + output=True, + only=["instruction"], + ) + assert rc_verify == 1 + def test_verify_source_with_messages_path(self, tmp_path: Path) -> None: """Test that verify source with messages path.""" From dbc5ec82d1b4155386fbfc80ef7c3a1e8ce14901 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:10:07 +0200 Subject: [PATCH 05/19] refactor(cli): simplify install and verify control flow --- src/vstack/cli/commands.py | 173 +++++++++++++++++++++++++++---------- 1 file changed, 125 insertions(+), 48 deletions(-) diff --git a/src/vstack/cli/commands.py b/src/vstack/cli/commands.py index 247ebfd..2511010 100644 --- a/src/vstack/cli/commands.py +++ b/src/vstack/cli/commands.py @@ -211,6 +211,107 @@ def _verify_manifest_metadata( return result if result.messages else None + def _existing_versions_for_install( + self, + gens: list[GenericArtifactGenerator], + existing_manifest: Manifest | None, + ) -> dict[str, str | None]: + """Build existing-version lookup for selected generators.""" + if existing_manifest is None: + return {} + + existing_versions: dict[str, str | None] = {} + for gen in gens: + for entry in existing_manifest.entries_for(gen.config.manifest_key): + key = f"{gen.config.type_name}/{entry.name}" + existing_versions[key] = entry.version + return existing_versions + + def _preserved_manifest_entries( + self, + existing_manifest: Manifest | None, + selected_manifest_keys: set[str], + ) -> dict[str, list[ArtifactEntry]]: + """Keep existing manifest entries for artifact families not in this run.""" + if existing_manifest is None: + return {} + + preserved: dict[str, list[ArtifactEntry]] = {} + for manifest_key, entries in existing_manifest.artifacts.items(): + if manifest_key not in selected_manifest_keys: + preserved[manifest_key] = list(entries) + return preserved + + def _install_action( + self, + *, + force: bool, + update: bool, + out_file: Path, + existing_version: str | None, + new_version: str, + ) -> str: + """Return install action: install, skip, or update.""" + if force: + return "install" + if out_file.exists() and existing_version is not None: + if update: + return "update" if _version_gt(new_version, existing_version) else "skip" + return "skip" + return "install" + + def _print_install_action( + self, + *, + colors: type[_Colors], + prefix: str, + rel: str, + action: str, + existing_version: str | None, + new_version: str, + out_file: Path, + force: bool, + ) -> None: + """Print install/update/skip line for one artifact.""" + if action == "skip": + print( + f" {colors.YELLOW}↷{colors.RESET} {rel}" + f" {colors.DIM}skipped — already v{existing_version}{colors.RESET}" + ) + return + + if action == "update": + print( + f" {prefix}{colors.CYAN}↑{colors.RESET} " + f"{colors.BOLD}{rel}{colors.RESET}" + f" v{existing_version} → {colors.GREEN}v{new_version}{colors.RESET}" + ) + return + + tag = "(forced) " if force and out_file.exists() else "" + print( + f" {prefix}{colors.GREEN}✓{colors.RESET} " + f"{colors.BOLD}{rel}{colors.RESET}" + f" {colors.DIM}{tag}{colors.RESET}{colors.GREEN}v{new_version}{colors.RESET}" + ) + + def _record_manifest_entry( + self, + *, + new_entries: dict[str, list[ArtifactEntry]], + gen: GenericArtifactGenerator, + artifact_name: str, + version: str, + ) -> None: + """Append one installed artifact entry to the in-memory manifest payload.""" + new_entries.setdefault(gen.config.manifest_key, []).append( + ArtifactEntry( + name=artifact_name, + file=gen.install_relative_path(artifact_name), + version=version, + ) + ) + # ── validate ────────────────────────────────────────────────────────────── def validate(self, only: list[str] | None = None) -> int: @@ -275,23 +376,12 @@ def install( # Read existing manifest once — used to look up installed versions. mf = self._manifest(install_dir) existing_manifest = mf.read() - existing_versions: dict[str, str | None] = {} selected_manifest_keys = {gen.config.manifest_key for gen in gens} - if existing_manifest: - for gen in gens: - for entry in existing_manifest.entries_for(gen.config.manifest_key): - key = f"{gen.config.type_name}/{entry.name}" - existing_versions[key] = entry.version + existing_versions = self._existing_versions_for_install(gens, existing_manifest) prefix = f"{_C.DIM}[dry-run]{_C.RESET} " if dry_run else "" all_ok = True - new_entries: dict[str, list[ArtifactEntry]] = {} - if existing_manifest: - # Keep manifest entries for artifact families not part of this install run - # (e.g. install --only instruction should not drop agents/skills entries). - for manifest_key, entries in existing_manifest.artifacts.items(): - if manifest_key not in selected_manifest_keys: - new_entries[manifest_key] = list(entries) + new_entries = self._preserved_manifest_entries(existing_manifest, selected_manifest_keys) for gen in gens: out_dir = install_dir / gen.config.output_subdir @@ -311,48 +401,35 @@ def install( file=sys.stderr, ) - # Decide action. - action: str # "install" | "skip" | "update" - if force: - action = "install" - elif out_file.exists() and existing_version is not None: - if update: - action = "update" if _version_gt(new_version, existing_version) else "skip" - else: - action = "skip" - else: - action = "install" + action = self._install_action( + force=force, + update=update, + out_file=out_file, + existing_version=existing_version, + new_version=new_version, + ) - if action == "skip": - print( - f" {_C.YELLOW}↷{_C.RESET} {rel}" - f" {_C.DIM}skipped — already v{existing_version}{_C.RESET}" - ) - elif action == "update": - print( - f" {prefix}{_C.CYAN}↑{_C.RESET} " - f"{_C.BOLD}{rel}{_C.RESET}" - f" v{existing_version} → {_C.GREEN}v{new_version}{_C.RESET}" - ) - else: - tag = "(forced) " if force and out_file.exists() else "" - print( - f" {prefix}{_C.GREEN}✓{_C.RESET} " - f"{_C.BOLD}{rel}{_C.RESET}" - f" {_C.DIM}{tag}{_C.RESET}{_C.GREEN}v{new_version}{_C.RESET}" - ) + self._print_install_action( + colors=_C, + prefix=prefix, + rel=rel, + action=action, + existing_version=existing_version, + new_version=new_version, + out_file=out_file, + force=force, + ) if not dry_run and action != "skip": out_dir.mkdir(parents=True, exist_ok=True) out_file.parent.mkdir(parents=True, exist_ok=True) out_file.write_text(artifact.content, encoding="utf-8") - new_entries.setdefault(gen.config.manifest_key, []).append( - ArtifactEntry( - name=artifact.name, - file=gen.install_relative_path(artifact.name), - version=new_version, - ) + self._record_manifest_entry( + new_entries=new_entries, + gen=gen, + artifact_name=artifact.name, + version=new_version, ) # Verify source for unresolvable issues. From d128f93f4a64827a440978df1c26cd336ad1d0bd Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:12:12 +0200 Subject: [PATCH 06/19] chore(artifacts): regenerate .github outputs --- .github/agents/architect.agent.md | 23 +-- .github/agents/designer.agent.md | 25 +-- .github/agents/engineer.agent.md | 19 ++- .github/agents/product.agent.md | 25 +-- .github/agents/release.agent.md | 29 ++-- .github/agents/tester.agent.md | 25 +-- .github/instructions/git.instructions.md | 5 +- .github/instructions/python.instructions.md | 1 + .github/prompts/code-review.prompt.md | 1 + .github/skills/adr/SKILL.md | 1 + .github/skills/analyse/SKILL.md | 1 + .github/skills/architecture/SKILL.md | 1 + .github/skills/cicd/SKILL.md | 1 + .github/skills/code-review/SKILL.md | 1 + .github/skills/concise/SKILL.md | 1 + .github/skills/consult/SKILL.md | 1 + .github/skills/container/SKILL.md | 1 + .github/skills/debug/SKILL.md | 1 + .github/skills/dependency/SKILL.md | 1 + .github/skills/design/SKILL.md | 1 + .github/skills/docs/SKILL.md | 1 + .github/skills/explore/SKILL.md | 1 + .github/skills/guardrails/SKILL.md | 1 + .github/skills/incident/SKILL.md | 1 + .github/skills/inspect/SKILL.md | 1 + .github/skills/migrate/SKILL.md | 1 + .github/skills/onboard/SKILL.md | 1 + .github/skills/openapi/SKILL.md | 1 + .github/skills/performance/SKILL.md | 1 + .github/skills/pr/SKILL.md | 1 + .github/skills/refactor/SKILL.md | 1 + .github/skills/release-notes/SKILL.md | 1 + .github/skills/requirements/SKILL.md | 1 + .github/skills/security/SKILL.md | 1 + .github/skills/verify/SKILL.md | 1 + .github/skills/vision/SKILL.md | 1 + .github/vstack.json | 178 +++++++++++++++++++- 37 files changed, 285 insertions(+), 73 deletions(-) diff --git a/.github/agents/architect.agent.md b/.github/agents/architect.agent.md index f636b28..a261849 100644 --- a/.github/agents/architect.agent.md +++ b/.github/agents/architect.agent.md @@ -71,7 +71,7 @@ You are a **senior software architect** acting as the **architect role**. You de Signal readiness before downstream work proceeds: 1. **Ready for design** — architecture baseline and required ADRs are updated. -2. **Ready for implementation** — designer confirms contracts align with architecture constraints. +1. **Ready for implementation** — designer confirms contracts align with architecture constraints. Handoffs you own: @@ -81,25 +81,25 @@ Handoffs you own: ## how you work 1. Read `docs/product/vision.md` and `docs/product/requirements.md`. If either is missing, stop and request product clarification. -2. **Declare system style** in `docs/architecture/architecture.md`: +1. **Declare system style** in `docs/architecture/architecture.md`: - `backend-only` — API, service, library, CLI, data pipeline - `frontend-only` — UI, static site, design system - `fullstack` — API + UI tightly coupled - `platform` — IaC, tooling, SDK - `integration` — system of systems interoperating via APIs, events, or data contracts -3. Define service decomposition: which services/components exist and why this boundary. -4. Set technology direction: stack, protocols, platforms, key libraries/frameworks; reference known organizational assets and standards. -5. Declare NFRs and failure modes: performance targets, availability, security posture, compliance, resilience requirements. -6. Write or update `docs/architecture/architecture.md` via `@#architecture`. -7. Write ADRs via `@#adr` for each significant structural decision. -8. Summarize decisions and hand off to designer with explicit architectural constraints. +1. Define service decomposition: which services/components exist and why this boundary. +1. Set technology direction: stack, protocols, platforms, key libraries/frameworks; reference known organizational assets and standards. +1. Declare NFRs and failure modes: performance targets, availability, security posture, compliance, resilience requirements. +1. Write or update `docs/architecture/architecture.md` via `@#architecture`. +1. Write ADRs via `@#adr` for each significant structural decision. +1. Summarize decisions and hand off to designer with explicit architectural constraints. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | +| Artifact | Role | +| ----------------------------------- | ------- | | `docs/architecture/architecture.md` | creator | -| `docs/architecture/adr/NNN-*.md` | creator | +| `docs/architecture/adr/NNN-*.md` | creator | - Architecture constraints are actionable for designer and engineer. @@ -120,3 +120,4 @@ Handoffs you own: - `@#analyse` — impact analysis, tradeoffs, feasibility + diff --git a/.github/agents/designer.agent.md b/.github/agents/designer.agent.md index 86fc034..51dd744 100644 --- a/.github/agents/designer.agent.md +++ b/.github/agents/designer.agent.md @@ -82,7 +82,7 @@ Apply all relevant disciplines — a fullstack integration system needs API cont Signal readiness before implementation proceeds: 1. **Ready for implementation** — contracts, schemas, errors, and required flows are explicit. -2. **Ready for test planning** — edge cases and expected failure behavior are documented. +1. **Ready for test planning** — edge cases and expected failure behavior are documented. Handoffs you own: @@ -92,24 +92,24 @@ Handoffs you own: ## how you work 1. Read `docs/architecture/architecture.md`, `docs/architecture/adr/*.md`, `docs/product/vision.md`, `docs/product/requirements.md`. -2. If `docs/architecture/architecture.md` is missing or too vague to design from, stop and hand off to architect. -3. Determine which design disciplines apply (see scope detection above). -4. For each service and component in the architecture: +1. If `docs/architecture/architecture.md` is missing or too vague to design from, stop and hand off to architect. +1. Determine which design disciplines apply (see scope detection above). +1. For each service and component in the architecture: - Define the interaction surface: API endpoints, event types, inputs and outputs - Define data schemas and validation rules - Define state models where applicable (states, transitions, triggers, terminal states) - Define error cases and how they are communicated to callers -5. Map data flows: how data enters, transforms, and exits the system. -6. If user-facing scope: design UX flows and write `docs/design/ux.md`. -7. Write or update `docs/design/design.md` (always). -8. Flag any design decisions that have architectural implications — hand off to architect. +1. Map data flows: how data enters, transforms, and exits the system. +1. If user-facing scope: design UX flows and write `docs/design/ux.md`. +1. Write or update `docs/design/design.md` (always). +1. Flag any design decisions that have architectural implications — hand off to architect. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | -| `docs/design/design.md` | creator | -| `docs/design/ux.md` | creator (frontend/fullstack scope only) | +| Artifact | Role | +| ----------------------- | --------------------------------------- | +| `docs/design/design.md` | creator | +| `docs/design/ux.md` | creator (frontend/fullstack scope only) | - Design docs are actionable without guesswork. - API/interface contracts and error cases are explicit. @@ -131,3 +131,4 @@ Handoffs you own: - `@#openapi` — OpenAPI 3.1 spec writing and review + diff --git a/.github/agents/engineer.agent.md b/.github/agents/engineer.agent.md index 094c719..3645ea4 100644 --- a/.github/agents/engineer.agent.md +++ b/.github/agents/engineer.agent.md @@ -78,19 +78,19 @@ Only delegate when workstreams are genuinely independent. ## how you work 1. Read upstream artifacts before touching code. -2. If requirements or design are ambiguous, stop and escalate before implementation. -3. Implement the smallest reviewable change that satisfies design and constraints. -4. Write or update unit tests alongside each code change. -5. Run relevant checks via `@#verify` before tester handoff. -6. Handoff to tester with explicit verification targets and risk areas. -7. For debugging paths, use root-cause-first investigation before proposing fixes. +1. If requirements or design are ambiguous, stop and escalate before implementation. +1. Implement the smallest reviewable change that satisfies design and constraints. +1. Write or update unit tests alongside each code change. +1. Run relevant checks via `@#verify` before tester handoff. +1. Handoff to tester with explicit verification targets and risk areas. +1. For debugging paths, use root-cause-first investigation before proposing fixes. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | +| Artifact | Role | +| ----------- | ------- | | source code | creator | -| unit tests | creator | +| unit tests | creator | - Implementation matches approved architecture and design intent. - Tests cover core paths and regressions. @@ -121,3 +121,4 @@ Only delegate when workstreams are genuinely independent. - `@#incident` — incident analysis and post-mortem writing + diff --git a/.github/agents/product.agent.md b/.github/agents/product.agent.md index a9c372f..c7d60eb 100644 --- a/.github/agents/product.agent.md +++ b/.github/agents/product.agent.md @@ -71,9 +71,9 @@ You are a **senior product manager** acting as the **product role**. You define You pause the pipeline at key moments and wait for explicit user confirmation: 1. **After intake + requirements clarification** — before architect starts designing -2. **After architecture + design review** — before engineer starts implementing -3. **After testing and acceptance review** — before release proceeds -4. **Before merge** — confirm baseline artifacts are updated and optional WIP cleaned +1. **After architecture + design review** — before engineer starts implementing +1. **After testing and acceptance review** — before release proceeds +1. **Before merge** — confirm baseline artifacts are updated and optional WIP cleaned Handoffs you own: @@ -83,21 +83,21 @@ Handoffs you own: ## how you work 1. **Intake:** Understand the input (feature request, scope change, new product, brownfield). Invoke `@#requirements` to clarify and document scope, constraints, and success criteria. -2. **Choose flow:** +1. **Choose flow:** - Brownfield discovery: `requirements -> explore -> analyse -> architecture` - New feature: `requirements -> architecture -> design (optional) -> engineer -> tester -> release` - Existing behavior change: `requirements -> debug -> architecture (light) -> engineer -> tester -> release` -3. **Orchestrate:** Delegate to architect/designer/engineer via subagent calls or handoffs. Keep gate decisions explicit and block progression when criteria are not met. -4. **Gate:** Confirm with user at each transition before proceeding. -5. **Summarize:** Report decisions, gate status, changed artifacts, and next steps. +1. **Orchestrate:** Delegate to architect/designer/engineer via subagent calls or handoffs. Keep gate decisions explicit and block progression when criteria are not met. +1. **Gate:** Confirm with user at each transition before proceeding. +1. **Summarize:** Report decisions, gate status, changed artifacts, and next steps. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | -| `docs/product/vision.md` | creator | -| `docs/product/requirements.md` | creator | -| `docs/product/roadmap.md` | creator | +| Artifact | Role | +| ------------------------------------ | ------- | +| `docs/product/vision.md` | creator | +| `docs/product/requirements.md` | creator | +| `docs/product/roadmap.md` | creator | | gate decisions and acceptance record | creator | - Gate decisions are explicit and traceable at each transition. @@ -122,3 +122,4 @@ Handoffs you own: - `@#onboard` — contributor onboarding guide generation + diff --git a/.github/agents/release.agent.md b/.github/agents/release.agent.md index 8eea4c2..a83a7b9 100644 --- a/.github/agents/release.agent.md +++ b/.github/agents/release.agent.md @@ -69,7 +69,7 @@ You are a **senior platform and release engineer** acting as the **release role* Signal readiness at each release gate: 1. **Ready for sign-off collection** — required artifacts are present and current. -2. **Ready for PR creation** — tester and product both return explicit OK. +1. **Ready for PR creation** — tester and product both return explicit OK. Handoffs you own: @@ -79,22 +79,22 @@ Handoffs you own: ## how you work -1. Validate required artifacts: `docs/product/requirements.md`, `docs/architecture/architecture.md`, `docs/design/design.md`, `docs/test-report.md`, `docs/security-report.md`, `docs/performance-baseline.md`, `CHANGELOG.md`. -2. Validate scope-conditional artifacts: require `docs/performance-baseline.md` only when performance validation is in scope; require observability evidence in `docs/test-report.md` (or a dedicated observability report if your process uses one). -3. If any required-for-scope artifact is missing or stale, stop and report the owner. -4. Collect tester sign-off (`OK`/`NOK`) using verification reports. -5. Collect product sign-off (`OK`/`NOK`) against requirements and delivered scope. -6. If either sign-off is `NOK`, stop and hand the blocker back to the owning role. -7. If both are `OK`, invoke `@#release-notes` to produce `docs/releases/{date}.md` and finalize `CHANGELOG.md`. -8. Invoke `@#pr` to push and open the PR with release notes as the body. +1. Baseline artifacts to check: `docs/product/requirements.md`, `docs/architecture/architecture.md`, `docs/design/design.md`, `docs/test-report.md`, `docs/security-report.md`, `docs/performance-baseline.md`, `CHANGELOG.md`. +1. Validate required-for-scope artifacts: require `docs/performance-baseline.md` only when performance validation is in scope; require observability evidence in `docs/test-report.md` (or a dedicated observability report if your process uses one). +1. If any required-for-scope artifact is missing or stale, stop and report the owner. +1. Collect tester sign-off (`OK`/`NOK`) using verification reports. +1. Collect product sign-off (`OK`/`NOK`) against requirements and delivered scope. +1. If either sign-off is `NOK`, stop and hand the blocker back to the owning role. +1. If both are `OK`, invoke `@#release-notes` to produce `docs/releases/{date}.md` and finalize `CHANGELOG.md`. +1. Invoke `@#pr` to push and open the PR with release notes as the body. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | -| `docs/releases/{date}.md` | creator | -| `CHANGELOG.md` updates | creator | -| release PR | creator | +| Artifact | Role | +| -------------------------------- | ------- | +| `docs/releases/{date}.md` | creator | +| `CHANGELOG.md` updates | creator | +| release PR | creator | | sign-off record (tester/product) | creator | - Required-for-scope artifacts are present and current before sign-off. @@ -118,3 +118,4 @@ Handoffs you own: - `@#code-review` — final review before PR is opened + diff --git a/.github/agents/tester.agent.md b/.github/agents/tester.agent.md index 5710cb7..cab4107 100644 --- a/.github/agents/tester.agent.md +++ b/.github/agents/tester.agent.md @@ -74,7 +74,7 @@ You are a **senior QA, security, and reliability engineer** acting as the **test Signal readiness before release proceeds: 1. **Ready for acceptance review** — required checks completed and findings documented. -2. **Ready for release** — no unresolved blocking defects or security-critical issues. +1. **Ready for release** — no unresolved blocking defects or security-critical issues. Handoffs you own: @@ -84,21 +84,21 @@ Handoffs you own: ## how you work 1. Read `docs/product/requirements.md`, `docs/architecture/architecture.md`, and relevant design/implementation context. -2. Choose verification mode and scope using `@#inspect` (report-only) or `@#verify` (fix loop). -3. Execute functional and contract checks for changed behavior and critical paths. -4. Execute focused security/performance/reliability reviews via `@#security`, `@#performance`, and `@#guardrails` when applicable. -5. Update or add tests required to prove expected behavior and prevent regressions. -6. Write baseline reports: `docs/test-report.md`, `docs/security-report.md`, and `docs/performance-baseline.md` when performance validation is in scope. Include observability evidence in `docs/test-report.md` unless a dedicated observability report is used. -7. Publish verdict and hand off blockers or release-readiness status. +1. Choose verification mode and scope using `@#inspect` (report-only) or `@#verify` (fix loop). +1. Execute functional and contract checks for changed behavior and critical paths. +1. Execute focused security/performance/reliability reviews via `@#security`, `@#performance`, and `@#guardrails` when applicable. +1. Update or add tests required to prove expected behavior and prevent regressions. +1. Write baseline reports: `docs/test-report.md`, `docs/security-report.md`, and `docs/performance-baseline.md` when performance validation is in scope. Include observability evidence in `docs/test-report.md` unless a dedicated observability report is used. +1. Publish verdict and hand off blockers or release-readiness status. ## deliverables and success criteria -| Artifact | Role | -| --- | --- | -| `docs/test-report.md` | creator | -| `docs/security-report.md` | creator | +| Artifact | Role | +| ------------------------------ | ------------------------------------------------- | +| `docs/test-report.md` | creator | +| `docs/security-report.md` | creator | | `docs/performance-baseline.md` | creator (when performance validation is in scope) | -| test files | creator | +| test files | creator | - Verification coverage matches scope and risk. - Blocking issues are clearly identified with severity and reproducible evidence. @@ -126,3 +126,4 @@ Handoffs you own: - `@#incident` — incident analysis and post-mortem writing + diff --git a/.github/instructions/git.instructions.md b/.github/instructions/git.instructions.md index 1ce27b6..5624dc5 100644 --- a/.github/instructions/git.instructions.md +++ b/.github/instructions/git.instructions.md @@ -10,8 +10,8 @@ Use these Git and release hygiene conventions in this project. 1. Use `type/short-description` branch names. 1. Keep branch names lowercase and use hyphens to separate words. 1. Use one of these allowed branch types when branch validation is enabled: - `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, - `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. + `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, + `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. ## Commit messages @@ -41,3 +41,4 @@ Use these Git and release hygiene conventions in this project. 1. Prefer local verification before pushing release-impacting changes. + diff --git a/.github/instructions/python.instructions.md b/.github/instructions/python.instructions.md index 201293b..3aafaf1 100644 --- a/.github/instructions/python.instructions.md +++ b/.github/instructions/python.instructions.md @@ -42,3 +42,4 @@ Use these Python conventions in this project. 1. Do not silence lint/type errors unless there is a documented, task-specific reason. + diff --git a/.github/prompts/code-review.prompt.md b/.github/prompts/code-review.prompt.md index c693aab..ad3f96a 100644 --- a/.github/prompts/code-review.prompt.md +++ b/.github/prompts/code-review.prompt.md @@ -50,3 +50,4 @@ End with: - Biggest remaining risk: one sentence + diff --git a/.github/skills/adr/SKILL.md b/.github/skills/adr/SKILL.md index d66e274..61d0815 100644 --- a/.github/skills/adr/SKILL.md +++ b/.github/skills/adr/SKILL.md @@ -191,3 +191,4 @@ After writing, state the file path and summary so the architect or product role ______________________________________________________________________ + diff --git a/.github/skills/analyse/SKILL.md b/.github/skills/analyse/SKILL.md index cf97a31..0a74368 100644 --- a/.github/skills/analyse/SKILL.md +++ b/.github/skills/analyse/SKILL.md @@ -219,3 +219,4 @@ ______________________________________________________________________ ______________________________________________________________________ + diff --git a/.github/skills/architecture/SKILL.md b/.github/skills/architecture/SKILL.md index a776a62..c9de694 100644 --- a/.github/skills/architecture/SKILL.md +++ b/.github/skills/architecture/SKILL.md @@ -277,3 +277,4 @@ For each significant structural decision made during this review (technology cho ______________________________________________________________________ + diff --git a/.github/skills/cicd/SKILL.md b/.github/skills/cicd/SKILL.md index 1245677..1b7aec4 100644 --- a/.github/skills/cicd/SKILL.md +++ b/.github/skills/cicd/SKILL.md @@ -193,3 +193,4 @@ ______________________________________________________________________ ______________________________________________________________________ + diff --git a/.github/skills/code-review/SKILL.md b/.github/skills/code-review/SKILL.md index c05837c..e0cecd6 100644 --- a/.github/skills/code-review/SKILL.md +++ b/.github/skills/code-review/SKILL.md @@ -211,3 +211,4 @@ Confidence: [HIGH/MEDIUM/LOW — explain if not HIGH] ______________________________________________________________________ + diff --git a/.github/skills/concise/SKILL.md b/.github/skills/concise/SKILL.md index ea6d651..ffc3480 100644 --- a/.github/skills/concise/SKILL.md +++ b/.github/skills/concise/SKILL.md @@ -152,3 +152,4 @@ ______________________________________________________________________ - [ ] User confirmation/status returned in deterministic format + diff --git a/.github/skills/consult/SKILL.md b/.github/skills/consult/SKILL.md index 2c98dc1..63375ea 100644 --- a/.github/skills/consult/SKILL.md +++ b/.github/skills/consult/SKILL.md @@ -219,3 +219,4 @@ reason: [one sentence] ______________________________________________________________________ + diff --git a/.github/skills/container/SKILL.md b/.github/skills/container/SKILL.md index aac75ac..ba2be01 100644 --- a/.github/skills/container/SKILL.md +++ b/.github/skills/container/SKILL.md @@ -146,3 +146,4 @@ ______________________________________________________________________ ______________________________________________________________________ + diff --git a/.github/skills/debug/SKILL.md b/.github/skills/debug/SKILL.md index a1a8397..e2d6a66 100644 --- a/.github/skills/debug/SKILL.md +++ b/.github/skills/debug/SKILL.md @@ -271,3 +271,4 @@ Prevention: [any follow-up items] ______________________________________________________________________ + diff --git a/.github/skills/dependency/SKILL.md b/.github/skills/dependency/SKILL.md index 2523d65..bf74c34 100644 --- a/.github/skills/dependency/SKILL.md +++ b/.github/skills/dependency/SKILL.md @@ -317,3 +317,4 @@ Action items (priority order): ``` + diff --git a/.github/skills/design/SKILL.md b/.github/skills/design/SKILL.md index 704e3c3..bb39764 100644 --- a/.github/skills/design/SKILL.md +++ b/.github/skills/design/SKILL.md @@ -248,3 +248,4 @@ Output a complete design document to `docs/design/design.md` or `openapi.yaml`: ______________________________________________________________________ + diff --git a/.github/skills/docs/SKILL.md b/.github/skills/docs/SKILL.md index b15d4df..659dc2f 100644 --- a/.github/skills/docs/SKILL.md +++ b/.github/skills/docs/SKILL.md @@ -159,3 +159,4 @@ Skipped (n/a): ______________________________________________________________________ + diff --git a/.github/skills/explore/SKILL.md b/.github/skills/explore/SKILL.md index 900fc09..6096521 100644 --- a/.github/skills/explore/SKILL.md +++ b/.github/skills/explore/SKILL.md @@ -234,3 +234,4 @@ Stack: [language, framework, runtime versions] ______________________________________________________________________ + diff --git a/.github/skills/guardrails/SKILL.md b/.github/skills/guardrails/SKILL.md index d2e9ee4..0dbde72 100644 --- a/.github/skills/guardrails/SKILL.md +++ b/.github/skills/guardrails/SKILL.md @@ -69,3 +69,4 @@ Explicitly ask to "disable guardrails". ______________________________________________________________________ + diff --git a/.github/skills/incident/SKILL.md b/.github/skills/incident/SKILL.md index 525ca3e..a07a883 100644 --- a/.github/skills/incident/SKILL.md +++ b/.github/skills/incident/SKILL.md @@ -317,3 +317,4 @@ Status: [Draft — ready for team review] ``` + diff --git a/.github/skills/inspect/SKILL.md b/.github/skills/inspect/SKILL.md index 63ca8b2..51990e5 100644 --- a/.github/skills/inspect/SKILL.md +++ b/.github/skills/inspect/SKILL.md @@ -157,3 +157,4 @@ ______________________________________________________________________ ______________________________________________________________________ + diff --git a/.github/skills/migrate/SKILL.md b/.github/skills/migrate/SKILL.md index 0484601..41cae32 100644 --- a/.github/skills/migrate/SKILL.md +++ b/.github/skills/migrate/SKILL.md @@ -329,3 +329,4 @@ Pre-deploy checklist: ``` + diff --git a/.github/skills/onboard/SKILL.md b/.github/skills/onboard/SKILL.md index 5745ea2..58f727b 100644 --- a/.github/skills/onboard/SKILL.md +++ b/.github/skills/onboard/SKILL.md @@ -313,3 +313,4 @@ Gaps remaining (if any): ``` + diff --git a/.github/skills/openapi/SKILL.md b/.github/skills/openapi/SKILL.md index 907c55b..944f675 100644 --- a/.github/skills/openapi/SKILL.md +++ b/.github/skills/openapi/SKILL.md @@ -406,3 +406,4 @@ Summary: [N critical, N warnings, N info] `$ref` for all reusable schemas, and validate it passes linting. + diff --git a/.github/skills/performance/SKILL.md b/.github/skills/performance/SKILL.md index 55e7a10..4146bd0 100644 --- a/.github/skills/performance/SKILL.md +++ b/.github/skills/performance/SKILL.md @@ -250,3 +250,4 @@ ______________________________________________________________________ ______________________________________________________________________ + diff --git a/.github/skills/pr/SKILL.md b/.github/skills/pr/SKILL.md index c1102de..21e1280 100644 --- a/.github/skills/pr/SKILL.md +++ b/.github/skills/pr/SKILL.md @@ -132,3 +132,4 @@ CI/CD will now: ______________________________________________________________________ + diff --git a/.github/skills/refactor/SKILL.md b/.github/skills/refactor/SKILL.md index 81569bf..16dff93 100644 --- a/.github/skills/refactor/SKILL.md +++ b/.github/skills/refactor/SKILL.md @@ -377,3 +377,4 @@ Behavior changed: No ``` + diff --git a/.github/skills/release-notes/SKILL.md b/.github/skills/release-notes/SKILL.md index 1d8d483..fc5dc34 100644 --- a/.github/skills/release-notes/SKILL.md +++ b/.github/skills/release-notes/SKILL.md @@ -151,3 +151,4 @@ Keep existing entries intact. ______________________________________________________________________ + diff --git a/.github/skills/requirements/SKILL.md b/.github/skills/requirements/SKILL.md index aebd130..632ef74 100644 --- a/.github/skills/requirements/SKILL.md +++ b/.github/skills/requirements/SKILL.md @@ -211,3 +211,4 @@ After writing, summarize what was decided so the architect role can start. ______________________________________________________________________ + diff --git a/.github/skills/security/SKILL.md b/.github/skills/security/SKILL.md index 20e2d78..d207d59 100644 --- a/.github/skills/security/SKILL.md +++ b/.github/skills/security/SKILL.md @@ -287,3 +287,4 @@ Scope: [full/diff/dependency/config] ______________________________________________________________________ + diff --git a/.github/skills/verify/SKILL.md b/.github/skills/verify/SKILL.md index 4c2a2a1..dd43383 100644 --- a/.github/skills/verify/SKILL.md +++ b/.github/skills/verify/SKILL.md @@ -274,3 +274,4 @@ scope: [path/component/full] ______________________________________________________________________ + diff --git a/.github/skills/vision/SKILL.md b/.github/skills/vision/SKILL.md index 87942b8..bb36ea8 100644 --- a/.github/skills/vision/SKILL.md +++ b/.github/skills/vision/SKILL.md @@ -200,3 +200,4 @@ Present as: "Overall assessment: [READY/NEEDS REVISION/SCOPE CHANGE] because [1- ______________________________________________________________________ + diff --git a/.github/vstack.json b/.github/vstack.json index 1f444b4..25e1ef8 100644 --- a/.github/vstack.json +++ b/.github/vstack.json @@ -1,7 +1,176 @@ { "vstack_version": "0.0.0.post3.dev0+df3fe6e", - "installed_at": "2026-04-20T20:48:37.118491+00:00", + "installed_at": "2026-04-20T21:11:26.309777+00:00", "artifacts": { + "skills": [ + { + "name": "adr", + "file": "skills/adr/SKILL.md", + "version": "1.0.1" + }, + { + "name": "analyse", + "file": "skills/analyse/SKILL.md", + "version": "1.0.1" + }, + { + "name": "architecture", + "file": "skills/architecture/SKILL.md", + "version": "1.0.1" + }, + { + "name": "cicd", + "file": "skills/cicd/SKILL.md", + "version": "1.0.1" + }, + { + "name": "code-review", + "file": "skills/code-review/SKILL.md", + "version": "1.0.1" + }, + { + "name": "concise", + "file": "skills/concise/SKILL.md", + "version": "1.0.0" + }, + { + "name": "consult", + "file": "skills/consult/SKILL.md", + "version": "1.0.1" + }, + { + "name": "container", + "file": "skills/container/SKILL.md", + "version": "1.0.1" + }, + { + "name": "debug", + "file": "skills/debug/SKILL.md", + "version": "1.0.1" + }, + { + "name": "dependency", + "file": "skills/dependency/SKILL.md", + "version": "1.0.0" + }, + { + "name": "design", + "file": "skills/design/SKILL.md", + "version": "1.0.1" + }, + { + "name": "docs", + "file": "skills/docs/SKILL.md", + "version": "1.0.1" + }, + { + "name": "explore", + "file": "skills/explore/SKILL.md", + "version": "1.0.1" + }, + { + "name": "guardrails", + "file": "skills/guardrails/SKILL.md", + "version": "1.0.1" + }, + { + "name": "incident", + "file": "skills/incident/SKILL.md", + "version": "1.0.0" + }, + { + "name": "inspect", + "file": "skills/inspect/SKILL.md", + "version": "1.0.1" + }, + { + "name": "migrate", + "file": "skills/migrate/SKILL.md", + "version": "1.0.0" + }, + { + "name": "onboard", + "file": "skills/onboard/SKILL.md", + "version": "1.0.0" + }, + { + "name": "openapi", + "file": "skills/openapi/SKILL.md", + "version": "1.0.0" + }, + { + "name": "performance", + "file": "skills/performance/SKILL.md", + "version": "1.0.1" + }, + { + "name": "pr", + "file": "skills/pr/SKILL.md", + "version": "1.0.1" + }, + { + "name": "refactor", + "file": "skills/refactor/SKILL.md", + "version": "1.0.0" + }, + { + "name": "release-notes", + "file": "skills/release-notes/SKILL.md", + "version": "1.0.1" + }, + { + "name": "requirements", + "file": "skills/requirements/SKILL.md", + "version": "1.0.1" + }, + { + "name": "security", + "file": "skills/security/SKILL.md", + "version": "1.0.1" + }, + { + "name": "verify", + "file": "skills/verify/SKILL.md", + "version": "1.0.1" + }, + { + "name": "vision", + "file": "skills/vision/SKILL.md", + "version": "1.0.1" + } + ], + "agents": [ + { + "name": "architect", + "file": "agents/architect.agent.md", + "version": "1.0.1" + }, + { + "name": "designer", + "file": "agents/designer.agent.md", + "version": "1.0.1" + }, + { + "name": "engineer", + "file": "agents/engineer.agent.md", + "version": "1.0.1" + }, + { + "name": "product", + "file": "agents/product.agent.md", + "version": "1.0.1" + }, + { + "name": "release", + "file": "agents/release.agent.md", + "version": "1.0.1" + }, + { + "name": "tester", + "file": "agents/tester.agent.md", + "version": "1.0.1" + } + ], "instructions": [ { "name": "git", @@ -13,6 +182,13 @@ "file": "instructions/python.instructions.md", "version": "0.1.1" } + ], + "prompts": [ + { + "name": "code-review", + "file": "prompts/code-review.prompt.md", + "version": "0.1.0" + } ] } } From a76ce15eb18f2a364ae602e0ae27a0e2c89e00a8 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:15:20 +0200 Subject: [PATCH 07/19] chore(skills): remove stale freeze and unfreeze artifacts --- .github/skills/freeze/SKILL.md | 64 -------------------------------- .github/skills/unfreeze/SKILL.md | 59 ----------------------------- 2 files changed, 123 deletions(-) delete mode 100644 .github/skills/freeze/SKILL.md delete mode 100644 .github/skills/unfreeze/SKILL.md diff --git a/.github/skills/freeze/SKILL.md b/.github/skills/freeze/SKILL.md deleted file mode 100644 index 8f18aa4..0000000 --- a/.github/skills/freeze/SKILL.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -name: freeze -description: 'Lock a directory from edits for the current session. Any attempt to edit files in the frozen path will be refused. Use when you want to prevent accidental modification of stable, shared, or generated code.' -argument-hint: '[path to freeze]' -disable-model-invocation: true ---- -## Skill Context - -This skill is part of **vstack** — a VS Code-native AI engineering workflow system. - -### Completeness Principle - -AI-assisted coding compresses implementation time 10–100x. When evaluating "approach A (100%, full implementation) vs approach B (90%, shortcut)", **prefer A**. The delta costs seconds with AI assistance. "Ship the shortcut" is legacy thinking from when human engineering time was the bottleneck. - -### AskUserQuestion Format - -When you need clarification, use this exact format — never invent or guess: - -> **Question:** [The specific question] -> **Options:** A) … | B) … | C) … -> **Default if no response:** [What you'll do] - -Never ask more than one question at a time without waiting for the answer. - -### Repo Context - -```bash -# Determine project and branch context -git rev-parse --show-toplevel 2>/dev/null | xargs basename || echo "unknown-project" -git branch --show-current 2>/dev/null || echo "unknown-branch" -``` - -# freeze — Directory Edit Lock - -Lock a directory to prevent accidental edits during this session. - -## Out of scope - -- Session-wide careful mode for destructive commands (use `guardrails`) -- Removing a freeze (use `unfreeze`) -- Permanent file permissions (this is session-local only) - ---- - -Parse the user's request for the path to freeze. - -If no path was specified: -> **Question:** Which directory should I freeze? -> **Options:** A) Specify the path | B) Freeze the current directory | C) List directories to choose -> **Default if no response:** Ask again - -Once the path is confirmed: - -```text -⛔ FROZEN: [path] - -I will not edit any files under [path] until you run the unfreeze skill. -This is a hard block, not a warning. If you ask me to edit a frozen file, -I will refuse and explain how to unfreeze it. -``` - -**To unfreeze:** Use the `unfreeze` skill. - - diff --git a/.github/skills/unfreeze/SKILL.md b/.github/skills/unfreeze/SKILL.md deleted file mode 100644 index b9b4b1d..0000000 --- a/.github/skills/unfreeze/SKILL.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -name: unfreeze -description: 'Remove a directory edit lock. Use after freeze when you want to allow edits again.' -argument-hint: '[path to unfreeze]' -disable-model-invocation: true ---- -## Skill Context - -This skill is part of **vstack** — a VS Code-native AI engineering workflow system. - -### Completeness Principle - -AI-assisted coding compresses implementation time 10–100x. When evaluating "approach A (100%, full implementation) vs approach B (90%, shortcut)", **prefer A**. The delta costs seconds with AI assistance. "Ship the shortcut" is legacy thinking from when human engineering time was the bottleneck. - -### AskUserQuestion Format - -When you need clarification, use this exact format — never invent or guess: - -> **Question:** [The specific question] -> **Options:** A) … | B) … | C) … -> **Default if no response:** [What you'll do] - -Never ask more than one question at a time without waiting for the answer. - -### Repo Context - -```bash -# Determine project and branch context -git rev-parse --show-toplevel 2>/dev/null | xargs basename || echo "unknown-project" -git branch --show-current 2>/dev/null || echo "unknown-branch" -``` - -# unfreeze — Remove Directory Edit Lock - -Remove a previously activated directory freeze. - -## Out of scope - -- Activating a freeze (use `freeze`) -- Disabling careful mode (ask to "disable guardrails") - ---- - -Parse the user's request for the path to unfreeze. - -If no path was specified and there are active freezes, list them: -> **Question:** Which directory should I unfreeze? -> **Options:** A) [list frozen paths] | B) Unfreeze all -> **Default if no response:** Ask again - -Once confirmed: - -```text -✓ UNFROZEN: [path] - -Edit restrictions on [path] have been removed. -``` - - From 9865c0f3935c4b8aa0c4d71dbd5142f30dab3bbd Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:19:13 +0200 Subject: [PATCH 08/19] refactor(frontmatter): reduce nested validation and parse flow --- src/vstack/frontmatter/parser.py | 95 ++++++++++++++++++++++---------- src/vstack/frontmatter/schema.py | 89 +++++++++++++++++++----------- 2 files changed, 123 insertions(+), 61 deletions(-) diff --git a/src/vstack/frontmatter/parser.py b/src/vstack/frontmatter/parser.py index b145765..bf48663 100644 --- a/src/vstack/frontmatter/parser.py +++ b/src/vstack/frontmatter/parser.py @@ -52,6 +52,39 @@ def __bool__(self) -> bool: class FrontmatterParser: """Stateless parser for YAML frontmatter.""" + @staticmethod + def _is_current_object_list_item(meta: dict, current_key: str) -> bool: + """Return True when current key points to the last item of an object-list.""" + return ( + bool(current_key) + and isinstance(meta.get(current_key), list) + and bool(meta[current_key]) + and isinstance(meta[current_key][-1], dict) + ) + + @staticmethod + def _flush_object_block_scalar( + *, + meta: dict, + current_key: str, + object_scalar_field: str, + object_block_lines: list[str], + ) -> None: + """Flush buffered object-list block-scalar content into the current object item.""" + text = " ".join(b for b in object_block_lines if b).strip() + if FrontmatterParser._is_current_object_list_item(meta, current_key): + meta[current_key][-1][object_scalar_field] = text + + @staticmethod + def _flush_raw_block(*, meta: dict, current_key: str, raw_lines: list[str]) -> None: + """Flush buffered raw block content into current key.""" + meta[current_key] = "\n".join(raw_lines).rstrip() + + @staticmethod + def _flush_block_scalar(*, meta: dict, current_key: str, block_lines: list[str]) -> None: + """Flush buffered top-level block-scalar into current key.""" + meta[current_key] = " ".join(b for b in block_lines if b).strip() + @staticmethod def parse(content: str) -> FrontmatterContent: """Split YAML frontmatter from body content. @@ -111,14 +144,12 @@ def _parse_yaml_block(raw: str) -> dict: object_block_lines.append(line.strip()) continue else: - text = " ".join(b for b in object_block_lines if b).strip() - if ( - current_key - and isinstance(meta.get(current_key), list) - and meta[current_key] - and isinstance(meta[current_key][-1], dict) - ): - meta[current_key][-1][object_scalar_field] = text + FrontmatterParser._flush_object_block_scalar( + meta=meta, + current_key=current_key, + object_scalar_field=object_scalar_field, + object_block_lines=object_block_lines, + ) in_object_block_scalar = False object_scalar_field = "" object_block_lines = [] @@ -130,7 +161,11 @@ def _parse_yaml_block(raw: str) -> dict: continue else: # Non-indented line closes the raw block; fall through to process it - meta[current_key] = "\n".join(raw_lines).rstrip() + FrontmatterParser._flush_raw_block( + meta=meta, + current_key=current_key, + raw_lines=raw_lines, + ) in_raw_block = False raw_lines = [] @@ -139,19 +174,17 @@ def _parse_yaml_block(raw: str) -> dict: block_lines.append(line.strip()) continue else: - meta[current_key] = " ".join(b for b in block_lines if b).strip() + FrontmatterParser._flush_block_scalar( + meta=meta, + current_key=current_key, + block_lines=block_lines, + ) in_block_scalar = False block_lines = [] # 4-space key: continuation of an object-list item obj_kv = re.match(r"^ ([a-zA-Z_-]+):\s*(.*)$", line) - if ( - obj_kv - and current_key - and isinstance(meta.get(current_key), list) - and meta[current_key] - and isinstance(meta[current_key][-1], dict) - ): + if obj_kv and FrontmatterParser._is_current_object_list_item(meta, current_key): obj_key = obj_kv.group(1) obj_val = obj_kv.group(2).strip() if obj_val in ("|", "|-", "|+", ">", ">-", ">+"): @@ -212,18 +245,24 @@ def _parse_yaml_block(raw: str) -> dict: meta[current_key] = val.strip("\"'") if in_object_block_scalar: - text = " ".join(b for b in object_block_lines if b).strip() - if ( - current_key - and isinstance(meta.get(current_key), list) - and meta[current_key] - and isinstance(meta[current_key][-1], dict) - and object_scalar_field - ): - meta[current_key][-1][object_scalar_field] = text + if object_scalar_field: + FrontmatterParser._flush_object_block_scalar( + meta=meta, + current_key=current_key, + object_scalar_field=object_scalar_field, + object_block_lines=object_block_lines, + ) if in_raw_block and raw_lines: - meta[current_key] = "\n".join(raw_lines).rstrip() + FrontmatterParser._flush_raw_block( + meta=meta, + current_key=current_key, + raw_lines=raw_lines, + ) if in_block_scalar and block_lines: - meta[current_key] = " ".join(b for b in block_lines if b).strip() + FrontmatterParser._flush_block_scalar( + meta=meta, + current_key=current_key, + block_lines=block_lines, + ) return meta diff --git a/src/vstack/frontmatter/schema.py b/src/vstack/frontmatter/schema.py index 769d75f..57f0452 100644 --- a/src/vstack/frontmatter/schema.py +++ b/src/vstack/frontmatter/schema.py @@ -58,6 +58,61 @@ def get(self, name: str) -> FieldSpec | None: """Return the :class:`FieldSpec` for *name*, or ``None`` if not declared.""" return next((f for f in self.fields if f.name == name), None) + @staticmethod + def _validate_bool_field(spec: FieldSpec, value: object, errors: list[str]) -> None: + """Validate one bool-like field value.""" + if str(value).lower() not in ("true", "false"): + errors.append(f"field '{spec.name}' must be 'true' or 'false', got: {value!r}") + + @staticmethod + def _validate_list_field(spec: FieldSpec, value: object, errors: list[str]) -> None: + """Validate one list field value.""" + if not isinstance(value, list): + errors.append(f"field '{spec.name}' must be a list, got: {value!r}") + + @staticmethod + def _validate_object_list_field(spec: FieldSpec, value: object, errors: list[str]) -> None: + """Validate one object-list field value.""" + if not isinstance(value, list): + errors.append(f"field '{spec.name}' must be a list, got: {value!r}") + return + + for i, item in enumerate(value): + if not isinstance(item, dict): + errors.append(f"field '{spec.name}[{i}]' must be a mapping, got: {item!r}") + continue + if spec.item_schema is None: + continue + for err in spec.item_schema.validate_meta(item): + errors.append(f"{spec.name}[{i}].{err}") + + @staticmethod + def _validate_str_field(spec: FieldSpec, value: object, errors: list[str]) -> None: + """Validate one string-like field value.""" + if spec.max_length and isinstance(value, str) and len(value) > spec.max_length: + errors.append( + f"field '{spec.name}' exceeds max length {spec.max_length} ({len(value)} chars)" + ) + if spec.pattern and isinstance(value, str) and not re.fullmatch(spec.pattern, value): + errors.append( + f"field '{spec.name}' does not match required pattern {spec.pattern!r}: {value!r}" + ) + + def _validate_field_value(self, spec: FieldSpec, value: object, errors: list[str]) -> None: + """Validate a field value according to its declared field type.""" + if spec.type == "bool": + self._validate_bool_field(spec, value, errors) + return + if spec.type == "list": + self._validate_list_field(spec, value, errors) + return + if spec.type == "object-list": + self._validate_object_list_field(spec, value, errors) + return + if spec.type == "raw": + return + self._validate_str_field(spec, value, errors) + def validate_meta(self, meta: dict) -> list[str]: """Validate *meta* against declared schema fields. @@ -83,37 +138,5 @@ def validate_meta(self, meta: dict) -> list[str]: continue if value is None: continue - if spec.type == "bool": - if str(value).lower() not in ("true", "false"): - errors.append(f"field '{spec.name}' must be 'true' or 'false', got: {value!r}") - elif spec.type == "list": - if not isinstance(value, list): - errors.append(f"field '{spec.name}' must be a list, got: {value!r}") - elif spec.type == "object-list": - if not isinstance(value, list): - errors.append(f"field '{spec.name}' must be a list, got: {value!r}") - else: - for i, item in enumerate(value): - if not isinstance(item, dict): - errors.append( - f"field '{spec.name}[{i}]' must be a mapping, got: {item!r}" - ) - elif spec.item_schema is not None: - for err in spec.item_schema.validate_meta(item): - errors.append(f"{spec.name}[{i}].{err}") - elif spec.type == "raw": - pass # raw blocks are carried through verbatim; no structural validation - else: # "str" - if spec.max_length and isinstance(value, str) and len(value) > spec.max_length: - errors.append( - f"field '{spec.name}' exceeds max length {spec.max_length} ({len(value)} chars)" - ) - if ( - spec.pattern - and isinstance(value, str) - and not re.fullmatch(spec.pattern, value) - ): - errors.append( - f"field '{spec.name}' does not match required pattern {spec.pattern!r}: {value!r}" - ) + self._validate_field_value(spec, value, errors) return errors From 496123f1bfac8f2c8de1f414102d4db0c75b56d1 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:28:36 +0200 Subject: [PATCH 09/19] refactor(frontmatter): rename builder to serializer for accuracy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FrontmatterBuilder → FrontmatterSerializer (reflects actual responsibility) - build_output() class method → serialize() (clearer intent) - builder.py → serializer.py (align module name with class name) - test_builder.py → test_serializer.py (align test file name) - Keep backward-compatible build_output() function wrapper for external usage Improves naming clarity: FrontmatterParser parses YAML, FrontmatterSchema validates, FrontmatterSerializer renders to YAML output. All 12 tests green. --- src/vstack/frontmatter/__init__.py | 3 +- src/vstack/frontmatter/builder.py | 164 -------------- src/vstack/frontmatter/serializer.py | 211 ++++++++++++++++++ .../{test_builder.py => test_serializer.py} | 0 4 files changed, 213 insertions(+), 165 deletions(-) delete mode 100644 src/vstack/frontmatter/builder.py create mode 100644 src/vstack/frontmatter/serializer.py rename tests/vstack/frontmatter/{test_builder.py => test_serializer.py} (100%) diff --git a/src/vstack/frontmatter/__init__.py b/src/vstack/frontmatter/__init__.py index 452c0db..ba6dc07 100644 --- a/src/vstack/frontmatter/__init__.py +++ b/src/vstack/frontmatter/__init__.py @@ -1,8 +1,9 @@ """vstack.frontmatter — YAML frontmatter parsing, building, and schema validation.""" -from vstack.frontmatter.builder import build_output as build_output from vstack.frontmatter.parser import FrontmatterContent as FrontmatterContent from vstack.frontmatter.parser import FrontmatterParser as FrontmatterParser from vstack.frontmatter.schema import FieldSpec as FieldSpec from vstack.frontmatter.schema import FieldType as FieldType from vstack.frontmatter.schema import FrontmatterSchema as FrontmatterSchema +from vstack.frontmatter.serializer import FrontmatterSerializer as FrontmatterSerializer +from vstack.frontmatter.serializer import build_output as build_output diff --git a/src/vstack/frontmatter/builder.py b/src/vstack/frontmatter/builder.py deleted file mode 100644 index dc3560c..0000000 --- a/src/vstack/frontmatter/builder.py +++ /dev/null @@ -1,164 +0,0 @@ -"""Frontmatter output builder — schema-filtered YAML serialisation. - -:func:`build_output` converts a metadata dict to a ``---`` / ``---`` YAML -frontmatter block, filtered and ordered by a :class:`~vstack.frontmatter.FrontmatterSchema`. -Fields absent from the schema are silently dropped so generator-internal -metadata (``version``, etc.) never leaks into output files. -""" - -from __future__ import annotations - -import re -import textwrap - -from vstack.frontmatter.schema import FieldSpec, FrontmatterSchema - - -def _serialize_scalar(spec: FieldSpec, value: object) -> str: - """Serialize a single ``"str"`` value according to *spec* options.""" - text = str(value) - if spec.normalize_whitespace: - text = re.sub(r"\s+", " ", text).strip() - if spec.max_length: - text = text[: spec.max_length] - if spec.quoted: - return f"'{text.replace(chr(39), chr(39) * 2)}'" - return text - - -def _serialize_multiline_scalar(name: str, value: object, base_indent: str = "") -> list[str]: - """Serialize a string scalar as YAML folded block (``>-``) lines.""" - text = str(value).strip() - wrapped_lines: list[str] = [] - for paragraph in text.splitlines() or [text]: - if not paragraph.strip(): - wrapped_lines.append("") - continue - wrapped_lines.extend(textwrap.wrap(paragraph.strip(), width=100)) - out = [f"{base_indent}{name}: >-"] - out.extend(f"{base_indent} {line}" for line in wrapped_lines if line != "") - return out - - -def _should_emit_multiline(value: object, preserve_multiline: bool) -> bool: - """Return True when scalar should be emitted as a folded block string.""" - if not preserve_multiline: - return False - text = str(value) - return "\n" in text or len(text) > 90 - - -def _serialize_bool(value: object) -> str: - """Return ``"true"`` or ``"false"`` regardless of input representation.""" - if isinstance(value, bool): - return str(value).lower() - return "true" if str(value).strip().lower() == "true" else "false" - - -def _serialize_object( - item: dict, - item_schema: FrontmatterSchema | None, - preserve_multiline: bool = False, -) -> list[str]: - """Serialize one object-list item to a list of YAML lines (without leading `` - ``). - - When *item_schema* is provided the item is ordered and filtered by the - schema. Without a schema the item keys are emitted in their natural order. - """ - if item_schema is None: - lines: list[str] = [] - for k, v in item.items(): - v_str = str(v).strip() - if isinstance(v, bool) or v_str.lower() in ("true", "false"): - lines.append(f"{k}: {_serialize_bool(v)}") - elif _should_emit_multiline(v, preserve_multiline): - lines.extend(_serialize_multiline_scalar(k, v)) - else: - safe = v_str.replace("'", "''") - lines.append(f"{k}: '{safe}'") - return lines - - pairs = [ - (spec, item.get(spec.name)) - for spec in item_schema.fields - if item.get(spec.name) is not None - ] - lines = [] - for spec, value in pairs: - if spec.type == "bool": - lines.append(f"{spec.name}: {_serialize_bool(value)}") - elif spec.type == "list": - if isinstance(value, list) and value: - lines.append(f"{spec.name}:") - for item_v in value: - lines.append(f" - {item_v}") - else: # "str" (object items don't recurse into object-list) - if _should_emit_multiline(value, preserve_multiline): - lines.extend(_serialize_multiline_scalar(spec.name, value)) - else: - lines.append(f"{spec.name}: {_serialize_scalar(spec, value)}") - return lines - - -def build_output(meta: dict, schema: FrontmatterSchema, preserve_multiline: bool = False) -> str: - """Build a VS Code frontmatter block from *meta* filtered by *schema*. - - Iterates *schema* fields in declaration order. Fields present in *meta* - but absent from *schema* are silently dropped. - - Serialisation rules: - - * ``"str"`` — optionally single-quoted, whitespace-normalised, truncated. - * ``"bool"`` — ``true`` / ``false`` (VS Code requires lowercase). - * ``"list"`` — YAML block sequence (`` - item`` per element). - * ``"object-list"`` — YAML block sequence of mappings. When the field's - :attr:`~vstack.frontmatter.FieldSpec.item_schema` - is set, each item is ordered and filtered by that - schema; otherwise item keys are written in natural order. - """ - lines = ["---"] - for spec in schema.fields: - value = meta.get(spec.name) - if value is None: - continue - - if spec.type == "bool": - lines.append(f"{spec.name}: {_serialize_bool(value)}") - - elif spec.type == "list": - if isinstance(value, list) and value: - lines.append(f"{spec.name}:") - for item in value: - lines.append(f" - {item}") - - elif spec.type == "object-list": - if isinstance(value, list) and value: - lines.append(f"{spec.name}:") - for item in value: - if not isinstance(item, dict): - continue - obj_lines = _serialize_object( - item, - spec.item_schema, - preserve_multiline=preserve_multiline, - ) - for i, obj_line in enumerate(obj_lines): - prefix = " - " if i == 0 else " " - lines.append(f"{prefix}{obj_line}") - - elif spec.type == "raw": - raw_str = str(value).strip() if value is not None else "" - if raw_str: - lines.append(f"{spec.name}:") - for raw_line in str(value).split("\n"): - lines.append(raw_line) - - else: # "str" - if _should_emit_multiline(value, preserve_multiline): - lines.extend(_serialize_multiline_scalar(spec.name, value)) - else: - lines.append(f"{spec.name}: {_serialize_scalar(spec, value)}") - - lines.append("---") - lines.append("") - return "\n".join(lines) diff --git a/src/vstack/frontmatter/serializer.py b/src/vstack/frontmatter/serializer.py new file mode 100644 index 0000000..ebdb1d5 --- /dev/null +++ b/src/vstack/frontmatter/serializer.py @@ -0,0 +1,211 @@ +"""Frontmatter serializer — schema-filtered YAML output. + +:class:`FrontmatterSerializer` converts a metadata dict to a ``---`` / ``---`` YAML +frontmatter block, filtered and ordered by a :class:`~vstack.frontmatter.FrontmatterSchema`. +Fields absent from the schema are silently dropped so generator-internal +metadata (``version``, etc.) never leaks into output files. + +:func:`build_output` is a backward-compatible wrapper for :meth:`FrontmatterSerializer.serialize`. +""" + +from __future__ import annotations + +import re +import textwrap + +from vstack.frontmatter.schema import FieldSpec, FrontmatterSchema + + +class FrontmatterSerializer: + """Stateless frontmatter serializer — converts metadata dict to YAML. + + No mutable instance state; class/static methods mirror the parser style + while preserving simple call sites. + """ + + @staticmethod + def _serialize_scalar(spec: FieldSpec, value: object) -> str: + """Serialize a single ``"str"`` value according to *spec* options.""" + text = str(value) + if spec.normalize_whitespace: + text = re.sub(r"\s+", " ", text).strip() + if spec.max_length: + text = text[: spec.max_length] + if spec.quoted: + return f"'{text.replace(chr(39), chr(39) * 2)}'" + return text + + @staticmethod + def _serialize_multiline_scalar(name: str, value: object, base_indent: str = "") -> list[str]: + """Serialize a string scalar as YAML folded block (``>-``) lines.""" + text = str(value).strip() + wrapped_lines: list[str] = [] + for paragraph in text.splitlines() or [text]: + if not paragraph.strip(): + wrapped_lines.append("") + continue + wrapped_lines.extend(textwrap.wrap(paragraph.strip(), width=100)) + out = [f"{base_indent}{name}: >-"] + out.extend(f"{base_indent} {line}" for line in wrapped_lines if line != "") + return out + + @staticmethod + def _should_emit_multiline(value: object, preserve_multiline: bool) -> bool: + """Return True when scalar should be emitted as a folded block string.""" + if not preserve_multiline: + return False + text = str(value) + return "\n" in text or len(text) > 90 + + @staticmethod + def _serialize_bool(value: object) -> str: + """Return ``"true"`` or ``"false"`` regardless of input representation.""" + if isinstance(value, bool): + return str(value).lower() + return "true" if str(value).strip().lower() == "true" else "false" + + @staticmethod + def _serialize_object_unschematized(item: dict, preserve_multiline: bool = False) -> list[str]: + """Serialize object without schema — accepts any keys/values.""" + lines: list[str] = [] + for k, v in item.items(): + v_str = str(v).strip() + if isinstance(v, bool) or v_str.lower() in ("true", "false"): + lines.append(f"{k}: {FrontmatterSerializer._serialize_bool(v)}") + elif FrontmatterSerializer._should_emit_multiline(v, preserve_multiline): + lines.extend(FrontmatterSerializer._serialize_multiline_scalar(k, v)) + else: + safe = v_str.replace("'", "''") + lines.append(f"{k}: '{safe}'") + return lines + + @staticmethod + def _serialize_object_field_pair( + spec: FieldSpec, + value: object, + preserve_multiline: bool = False, + ) -> list[str]: + """Render one field from a schematized object.""" + if spec.type == "bool": + return [f"{spec.name}: {FrontmatterSerializer._serialize_bool(value)}"] + if spec.type == "list": + if isinstance(value, list) and value: + lines = [f"{spec.name}:"] + lines.extend(f" - {item_v}" for item_v in value) + return lines + return [] + if FrontmatterSerializer._should_emit_multiline(value, preserve_multiline): + return FrontmatterSerializer._serialize_multiline_scalar(spec.name, value) + return [f"{spec.name}: {FrontmatterSerializer._serialize_scalar(spec, value)}"] + + @classmethod + def _serialize_object( + cls, + item: dict, + item_schema: FrontmatterSchema | None, + preserve_multiline: bool = False, + ) -> list[str]: + """Serialize one object-list item to YAML lines (without leading `` - ``).""" + if item_schema is None: + return cls._serialize_object_unschematized(item, preserve_multiline) + + pairs = [ + (spec, item.get(spec.name)) + for spec in item_schema.fields + if item.get(spec.name) is not None + ] + ordered_lines: list[str] = [] + for spec, value in pairs: + ordered_lines.extend(cls._serialize_object_field_pair(spec, value, preserve_multiline)) + return ordered_lines + + @staticmethod + def _append_object_list_items( + lines: list[str], + value: list, + item_schema: FrontmatterSchema | None, + preserve_multiline: bool = False, + ) -> None: + """Append object-list items to lines with proper YAML indentation.""" + for item in value: + if not isinstance(item, dict): + continue + obj_lines = FrontmatterSerializer._serialize_object( + item, + item_schema, + preserve_multiline=preserve_multiline, + ) + for i, obj_line in enumerate(obj_lines): + prefix = " - " if i == 0 else " " + lines.append(f"{prefix}{obj_line}") + + @staticmethod + def _append_raw_field(lines: list[str], name: str, value: object) -> None: + """Append raw field value (unserialized) to lines.""" + raw_str = str(value).strip() if value is not None else "" + if raw_str: + lines.append(f"{name}:") + for raw_line in str(value).split("\n"): + lines.append(raw_line) + + @staticmethod + def _append_field_by_type( + lines: list[str], + spec: FieldSpec, + value: object, + preserve_multiline: bool = False, + ) -> None: + """Dispatch field rendering by type.""" + if spec.type == "bool": + lines.append(f"{spec.name}: {FrontmatterSerializer._serialize_bool(value)}") + return + if spec.type == "list": + if isinstance(value, list) and value: + lines.append(f"{spec.name}:") + for item in value: + lines.append(f" - {item}") + return + if spec.type == "object-list": + if isinstance(value, list) and value: + lines.append(f"{spec.name}:") + FrontmatterSerializer._append_object_list_items( + lines, + value, + spec.item_schema, + preserve_multiline=preserve_multiline, + ) + return + if spec.type == "raw": + FrontmatterSerializer._append_raw_field(lines, spec.name, value) + return + if FrontmatterSerializer._should_emit_multiline(value, preserve_multiline): + lines.extend(FrontmatterSerializer._serialize_multiline_scalar(spec.name, value)) + else: + lines.append(f"{spec.name}: {FrontmatterSerializer._serialize_scalar(spec, value)}") + + @classmethod + def serialize( + cls, + meta: dict, + schema: FrontmatterSchema, + preserve_multiline: bool = False, + ) -> str: + """Serialize metadata dict to VS Code frontmatter block (YAML --- / ---).""" + lines = ["---"] + for spec in schema.fields: + value = meta.get(spec.name) + if value is None: + continue + cls._append_field_by_type(lines, spec, value, preserve_multiline) + lines.append("---") + lines.append("") + return "\n".join(lines) + + +def build_output(meta: dict, schema: FrontmatterSchema, preserve_multiline: bool = False) -> str: + """Backward-compatible wrapper; use :meth:`FrontmatterSerializer.serialize` instead.""" + return FrontmatterSerializer.serialize( + meta, + schema, + preserve_multiline=preserve_multiline, + ) diff --git a/tests/vstack/frontmatter/test_builder.py b/tests/vstack/frontmatter/test_serializer.py similarity index 100% rename from tests/vstack/frontmatter/test_builder.py rename to tests/vstack/frontmatter/test_serializer.py From 3239612f576e8d1ea7a53be851958e9d8d4684ae Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:32:31 +0200 Subject: [PATCH 10/19] refactor(frontmatter): remove build_output wrapper function Remove the backward-compatible build_output() wrapper function since: - Internal usage via FrontmatterSerializer.serialize() is clearer - Only used by tests and generator.py (both now migrated) - Reduces surface API to single entry point Changes: - Remove build_output() function from serializer.py - Update exports in __init__.py and artifacts/__init__.py - Migrate all calls to FrontmatterSerializer.serialize() - Update test to check FrontmatterSerializer export - Simplify module docstring All 71 tests green. Static methods remain for true utility functions with no class state involvement. --- src/vstack/artifacts/__init__.py | 2 +- src/vstack/artifacts/generator.py | 6 ++--- src/vstack/frontmatter/__init__.py | 1 - src/vstack/frontmatter/serializer.py | 11 +-------- tests/vstack/frontmatter/test___init__.py | 6 ++--- tests/vstack/frontmatter/test_serializer.py | 26 +++++++++++---------- 6 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/vstack/artifacts/__init__.py b/src/vstack/artifacts/__init__.py index c480f50..3decf7a 100644 --- a/src/vstack/artifacts/__init__.py +++ b/src/vstack/artifacts/__init__.py @@ -14,4 +14,4 @@ from vstack.frontmatter import FrontmatterContent as FrontmatterContent from vstack.frontmatter import FrontmatterParser as FrontmatterParser from vstack.frontmatter import FrontmatterSchema as FrontmatterSchema -from vstack.frontmatter import build_output as build_output +from vstack.frontmatter import FrontmatterSerializer as FrontmatterSerializer diff --git a/src/vstack/artifacts/generator.py b/src/vstack/artifacts/generator.py index 7cb9c2a..583f013 100644 --- a/src/vstack/artifacts/generator.py +++ b/src/vstack/artifacts/generator.py @@ -20,7 +20,7 @@ from vstack.artifacts.constants import AUTO_GEN_FOOTER from vstack.artifacts.models import ArtifactResult, RenderedArtifact from vstack.constants import VERSION -from vstack.frontmatter import FrontmatterParser, build_output +from vstack.frontmatter import FrontmatterParser, FrontmatterSerializer from vstack.models import CheckMessage, ValidationResult _PLACEHOLDER_RE = re.compile(r"\{\{([A-Z_]+)\}\}") @@ -178,7 +178,7 @@ def render(self, tmpl_dir: Path) -> RenderedArtifact: raise ValueError( f"{self.config.type_name}: frontmatter_schema must be set when add_frontmatter=True" ) - fm_str = build_output( + fm_str = FrontmatterSerializer.serialize( meta, schema, preserve_multiline=self.config.preserve_multiline_frontmatter, @@ -193,7 +193,7 @@ def render(self, tmpl_dir: Path) -> RenderedArtifact: raise ValueError( f"{self.config.type_name}: frontmatter_schema must be set when add_frontmatter=True" ) - fm_str = build_output( + fm_str = FrontmatterSerializer.serialize( meta, schema, preserve_multiline=self.config.preserve_multiline_frontmatter, diff --git a/src/vstack/frontmatter/__init__.py b/src/vstack/frontmatter/__init__.py index ba6dc07..ab4dcbb 100644 --- a/src/vstack/frontmatter/__init__.py +++ b/src/vstack/frontmatter/__init__.py @@ -6,4 +6,3 @@ from vstack.frontmatter.schema import FieldType as FieldType from vstack.frontmatter.schema import FrontmatterSchema as FrontmatterSchema from vstack.frontmatter.serializer import FrontmatterSerializer as FrontmatterSerializer -from vstack.frontmatter.serializer import build_output as build_output diff --git a/src/vstack/frontmatter/serializer.py b/src/vstack/frontmatter/serializer.py index ebdb1d5..47222da 100644 --- a/src/vstack/frontmatter/serializer.py +++ b/src/vstack/frontmatter/serializer.py @@ -5,7 +5,7 @@ Fields absent from the schema are silently dropped so generator-internal metadata (``version``, etc.) never leaks into output files. -:func:`build_output` is a backward-compatible wrapper for :meth:`FrontmatterSerializer.serialize`. +Main entry point: :meth:`FrontmatterSerializer.serialize`. """ from __future__ import annotations @@ -200,12 +200,3 @@ def serialize( lines.append("---") lines.append("") return "\n".join(lines) - - -def build_output(meta: dict, schema: FrontmatterSchema, preserve_multiline: bool = False) -> str: - """Backward-compatible wrapper; use :meth:`FrontmatterSerializer.serialize` instead.""" - return FrontmatterSerializer.serialize( - meta, - schema, - preserve_multiline=preserve_multiline, - ) diff --git a/tests/vstack/frontmatter/test___init__.py b/tests/vstack/frontmatter/test___init__.py index bf3737b..fcdd011 100644 --- a/tests/vstack/frontmatter/test___init__.py +++ b/tests/vstack/frontmatter/test___init__.py @@ -8,7 +8,7 @@ class TestFrontmatterInit: """Test cases for FrontmatterInit.""" - def test_reexports_parser_builder_schema(self) -> None: - """Test that reexports parser builder schema.""" + def test_reexports_parser_serializer_schema(self) -> None: + """Test that reexports parser serializer schema.""" assert vstack.frontmatter.FrontmatterParser is not None - assert vstack.frontmatter.build_output is not None + assert vstack.frontmatter.FrontmatterSerializer is not None diff --git a/tests/vstack/frontmatter/test_serializer.py b/tests/vstack/frontmatter/test_serializer.py index 90e2826..b86d483 100644 --- a/tests/vstack/frontmatter/test_serializer.py +++ b/tests/vstack/frontmatter/test_serializer.py @@ -2,7 +2,7 @@ from __future__ import annotations -from vstack.frontmatter import FieldSpec, FrontmatterSchema, build_output +from vstack.frontmatter import FieldSpec, FrontmatterSchema, FrontmatterSerializer from vstack.skills.config import SKILL_SCHEMA @@ -14,7 +14,7 @@ def test_build_output_raw_field(self) -> None: schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) - output = build_output( + output = FrontmatterSerializer.serialize( {"name": "agent", "mcp-servers": " srv:\n command: cmd"}, schema, ) @@ -25,18 +25,20 @@ def test_build_output_raw_field_empty_skipped(self) -> None: schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) - output = build_output({"name": "agent", "mcp-servers": ""}, schema) + output = FrontmatterSerializer.serialize({"name": "agent", "mcp-servers": ""}, schema) assert "mcp-servers" not in output def test_build_output_frontmatter_required_fields(self) -> None: """Test that build output frontmatter required fields.""" - output = build_output({"name": "vision", "description": "A test skill"}, SKILL_SCHEMA) + output = FrontmatterSerializer.serialize( + {"name": "vision", "description": "A test skill"}, SKILL_SCHEMA + ) assert output.startswith("---\n") assert "name: vision" in output def test_build_output_frontmatter_optional_fields(self) -> None: """Test that build output frontmatter optional fields.""" - output = build_output( + output = FrontmatterSerializer.serialize( { "name": "x", "description": "d", @@ -50,7 +52,7 @@ def test_build_output_frontmatter_optional_fields(self) -> None: def test_build_output_strips_extra_fields(self) -> None: """Test that build output strips extra fields.""" - output = build_output( + output = FrontmatterSerializer.serialize( {"name": "x", "description": "d", "version": "1.0.0", "extra": "value"}, SKILL_SCHEMA, ) @@ -60,7 +62,7 @@ def test_build_output_strips_extra_fields(self) -> None: def test_build_output_object_list_without_item_schema(self) -> None: """Test that build output object list without item schema.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = build_output( + output = FrontmatterSerializer.serialize( { "handoffs": [ {"label": "A", "send": True, "prompt": "go"}, @@ -84,7 +86,7 @@ def test_build_output_object_list_with_item_schema_and_list_field(self) -> None: schema = FrontmatterSchema( [FieldSpec("handoffs", type="object-list", item_schema=item_schema)] ) - output = build_output( + output = FrontmatterSerializer.serialize( { "handoffs": [ {"label": "handoff", "send": "false", "roles": ["reader", "writer"]}, @@ -100,13 +102,13 @@ def test_build_output_object_list_with_item_schema_and_list_field(self) -> None: def test_build_output_object_list_skips_non_dict_items(self) -> None: """Test that build output object list skips non dict items.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = build_output({"handoffs": ["bad", {"label": "ok"}]}, schema) + output = FrontmatterSerializer.serialize({"handoffs": ["bad", {"label": "ok"}]}, schema) assert "- label: 'ok'" in output assert "bad" not in output def test_build_output_multiline_scalar_when_enabled(self) -> None: """Test that build output multiline scalar when enabled.""" - output = build_output( + output = FrontmatterSerializer.serialize( { "name": "x", "description": "This is a very long description that should be emitted as a folded block scalar when multiline output is enabled for readability in generated frontmatter.", @@ -119,7 +121,7 @@ def test_build_output_multiline_scalar_when_enabled(self) -> None: def test_build_output_multiline_object_list_scalar_when_enabled(self) -> None: """Test that build output multiline object list scalar when enabled.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = build_output( + output = FrontmatterSerializer.serialize( { "handoffs": [ { @@ -135,7 +137,7 @@ def test_build_output_multiline_object_list_scalar_when_enabled(self) -> None: def test_build_output_multiline_scalar_preserves_content_around_blank_lines(self) -> None: """Test that build output multiline scalar preserves content around blank lines.""" - output = build_output( + output = FrontmatterSerializer.serialize( { "name": "x", "description": "First paragraph.\n\nSecond paragraph.", From 397892d249de42c0ffa7253c46e4789718bb4689 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:33:33 +0200 Subject: [PATCH 11/19] refactor(tests): rename test class and methods to match FrontmatterSerializer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TestBuildOutput → TestFrontmatterSerializer - test_build_output_* → test_serialize_* - Update docstrings to be more descriptive - Module doc: 'Tests for frontmatter builder behavior' → 'Tests for FrontmatterSerializer behavior' All test behavior unchanged; pure renaming for consistency with FrontmatterSerializer API. All 11 tests green. --- tests/vstack/frontmatter/test_serializer.py | 50 ++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/vstack/frontmatter/test_serializer.py b/tests/vstack/frontmatter/test_serializer.py index b86d483..52c19a5 100644 --- a/tests/vstack/frontmatter/test_serializer.py +++ b/tests/vstack/frontmatter/test_serializer.py @@ -1,4 +1,4 @@ -"""Tests for frontmatter builder behavior.""" +"""Tests for FrontmatterSerializer behavior.""" from __future__ import annotations @@ -6,11 +6,11 @@ from vstack.skills.config import SKILL_SCHEMA -class TestBuildOutput: - """Test cases for BuildOutput.""" +class TestFrontmatterSerializer: + """Test cases for FrontmatterSerializer.""" - def test_build_output_raw_field(self) -> None: - """Test that build output raw field.""" + def test_serialize_raw_field(self) -> None: + """Test that serialize renders raw field.""" schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) @@ -20,24 +20,24 @@ def test_build_output_raw_field(self) -> None: ) assert "mcp-servers:\n srv:" in output - def test_build_output_raw_field_empty_skipped(self) -> None: - """Test that build output raw field empty skipped.""" + def test_serialize_raw_field_empty_skipped(self) -> None: + """Test that serialize skips empty raw field.""" schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) output = FrontmatterSerializer.serialize({"name": "agent", "mcp-servers": ""}, schema) assert "mcp-servers" not in output - def test_build_output_frontmatter_required_fields(self) -> None: - """Test that build output frontmatter required fields.""" + def test_serialize_frontmatter_required_fields(self) -> None: + """Test that serialize includes required frontmatter fields.""" output = FrontmatterSerializer.serialize( {"name": "vision", "description": "A test skill"}, SKILL_SCHEMA ) assert output.startswith("---\n") assert "name: vision" in output - def test_build_output_frontmatter_optional_fields(self) -> None: - """Test that build output frontmatter optional fields.""" + def test_serialize_frontmatter_optional_fields(self) -> None: + """Test that serialize includes optional frontmatter fields.""" output = FrontmatterSerializer.serialize( { "name": "x", @@ -50,8 +50,8 @@ def test_build_output_frontmatter_optional_fields(self) -> None: assert "argument-hint: 'some hint'" in output assert "user-invocable: true" in output - def test_build_output_strips_extra_fields(self) -> None: - """Test that build output strips extra fields.""" + def test_serialize_strips_extra_fields(self) -> None: + """Test that serialize strips fields not in schema.""" output = FrontmatterSerializer.serialize( {"name": "x", "description": "d", "version": "1.0.0", "extra": "value"}, SKILL_SCHEMA, @@ -59,8 +59,8 @@ def test_build_output_strips_extra_fields(self) -> None: assert "version: 1.0.0" not in output assert "extra" not in output - def test_build_output_object_list_without_item_schema(self) -> None: - """Test that build output object list without item schema.""" + def test_serialize_object_list_without_item_schema(self) -> None: + """Test that serialize renders object-list without item schema.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) output = FrontmatterSerializer.serialize( { @@ -74,8 +74,8 @@ def test_build_output_object_list_without_item_schema(self) -> None: assert "- label: 'A'" in output assert "send: true" in output - def test_build_output_object_list_with_item_schema_and_list_field(self) -> None: - """Test that build output object list with item schema and list field.""" + def test_serialize_object_list_with_item_schema_and_list_field(self) -> None: + """Test that serialize renders object-list with schematized fields and nested lists.""" item_schema = FrontmatterSchema( [ FieldSpec("label"), @@ -99,15 +99,15 @@ def test_build_output_object_list_with_item_schema_and_list_field(self) -> None: assert "roles:" in output assert "- reader" in output - def test_build_output_object_list_skips_non_dict_items(self) -> None: - """Test that build output object list skips non dict items.""" + def test_serialize_object_list_skips_non_dict_items(self) -> None: + """Test that serialize skips non-dict items in object-list.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) output = FrontmatterSerializer.serialize({"handoffs": ["bad", {"label": "ok"}]}, schema) assert "- label: 'ok'" in output assert "bad" not in output - def test_build_output_multiline_scalar_when_enabled(self) -> None: - """Test that build output multiline scalar when enabled.""" + def test_serialize_multiline_scalar_when_enabled(self) -> None: + """Test that serialize uses folded blocks when preserve_multiline=True.""" output = FrontmatterSerializer.serialize( { "name": "x", @@ -118,8 +118,8 @@ def test_build_output_multiline_scalar_when_enabled(self) -> None: ) assert "description: >-" in output - def test_build_output_multiline_object_list_scalar_when_enabled(self) -> None: - """Test that build output multiline object list scalar when enabled.""" + def test_serialize_multiline_object_list_scalar_when_enabled(self) -> None: + """Test that serialize uses folded blocks in object-list scalars.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) output = FrontmatterSerializer.serialize( { @@ -135,8 +135,8 @@ def test_build_output_multiline_object_list_scalar_when_enabled(self) -> None: ) assert " prompt: >-" in output - def test_build_output_multiline_scalar_preserves_content_around_blank_lines(self) -> None: - """Test that build output multiline scalar preserves content around blank lines.""" + def test_serialize_multiline_scalar_preserves_content_around_blank_lines(self) -> None: + """Test that serialize preserves blank lines in folded block scalars.""" output = FrontmatterSerializer.serialize( { "name": "x", From 59df8a204be21c77c6d9816cafe2dcb3d200e5be Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:39:10 +0200 Subject: [PATCH 12/19] refactor(frontmatter): convert serializer to instance methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - All methods: @staticmethod/@classmethod → instance methods - All FrontmatterSerializer._ references → self._ - Updated 11 call sites in test_serializer.py - Updated 2 call sites in generator.py - Behavior unchanged; semantically clearer instance pattern - All 11 serializer tests + 30 artifact generator tests passing --- src/vstack/artifacts/generator.py | 4 +- src/vstack/frontmatter/serializer.py | 74 ++++++++++----------- tests/vstack/frontmatter/test_serializer.py | 22 +++--- 3 files changed, 48 insertions(+), 52 deletions(-) diff --git a/src/vstack/artifacts/generator.py b/src/vstack/artifacts/generator.py index 583f013..ce81ce0 100644 --- a/src/vstack/artifacts/generator.py +++ b/src/vstack/artifacts/generator.py @@ -178,7 +178,7 @@ def render(self, tmpl_dir: Path) -> RenderedArtifact: raise ValueError( f"{self.config.type_name}: frontmatter_schema must be set when add_frontmatter=True" ) - fm_str = FrontmatterSerializer.serialize( + fm_str = FrontmatterSerializer().serialize( meta, schema, preserve_multiline=self.config.preserve_multiline_frontmatter, @@ -193,7 +193,7 @@ def render(self, tmpl_dir: Path) -> RenderedArtifact: raise ValueError( f"{self.config.type_name}: frontmatter_schema must be set when add_frontmatter=True" ) - fm_str = FrontmatterSerializer.serialize( + fm_str = FrontmatterSerializer().serialize( meta, schema, preserve_multiline=self.config.preserve_multiline_frontmatter, diff --git a/src/vstack/frontmatter/serializer.py b/src/vstack/frontmatter/serializer.py index 47222da..71fea96 100644 --- a/src/vstack/frontmatter/serializer.py +++ b/src/vstack/frontmatter/serializer.py @@ -17,14 +17,13 @@ class FrontmatterSerializer: - """Stateless frontmatter serializer — converts metadata dict to YAML. + """Frontmatter serializer — converts metadata dict to YAML. - No mutable instance state; class/static methods mirror the parser style - while preserving simple call sites. + Instantiate once, then call :meth:`serialize` to render frontmatter. + No mutable instance state; state exists only for the duration of a single call. """ - @staticmethod - def _serialize_scalar(spec: FieldSpec, value: object) -> str: + def _serialize_scalar(self, spec: FieldSpec, value: object) -> str: """Serialize a single ``"str"`` value according to *spec* options.""" text = str(value) if spec.normalize_whitespace: @@ -35,8 +34,9 @@ def _serialize_scalar(spec: FieldSpec, value: object) -> str: return f"'{text.replace(chr(39), chr(39) * 2)}'" return text - @staticmethod - def _serialize_multiline_scalar(name: str, value: object, base_indent: str = "") -> list[str]: + def _serialize_multiline_scalar( + self, name: str, value: object, base_indent: str = "" + ) -> list[str]: """Serialize a string scalar as YAML folded block (``>-``) lines.""" text = str(value).strip() wrapped_lines: list[str] = [] @@ -49,65 +49,63 @@ def _serialize_multiline_scalar(name: str, value: object, base_indent: str = "") out.extend(f"{base_indent} {line}" for line in wrapped_lines if line != "") return out - @staticmethod - def _should_emit_multiline(value: object, preserve_multiline: bool) -> bool: + def _should_emit_multiline(self, value: object, preserve_multiline: bool) -> bool: """Return True when scalar should be emitted as a folded block string.""" if not preserve_multiline: return False text = str(value) return "\n" in text or len(text) > 90 - @staticmethod - def _serialize_bool(value: object) -> str: + def _serialize_bool(self, value: object) -> str: """Return ``"true"`` or ``"false"`` regardless of input representation.""" if isinstance(value, bool): return str(value).lower() return "true" if str(value).strip().lower() == "true" else "false" - @staticmethod - def _serialize_object_unschematized(item: dict, preserve_multiline: bool = False) -> list[str]: + def _serialize_object_unschematized( + self, item: dict, preserve_multiline: bool = False + ) -> list[str]: """Serialize object without schema — accepts any keys/values.""" lines: list[str] = [] for k, v in item.items(): v_str = str(v).strip() if isinstance(v, bool) or v_str.lower() in ("true", "false"): - lines.append(f"{k}: {FrontmatterSerializer._serialize_bool(v)}") - elif FrontmatterSerializer._should_emit_multiline(v, preserve_multiline): - lines.extend(FrontmatterSerializer._serialize_multiline_scalar(k, v)) + lines.append(f"{k}: {self._serialize_bool(v)}") + elif self._should_emit_multiline(v, preserve_multiline): + lines.extend(self._serialize_multiline_scalar(k, v)) else: safe = v_str.replace("'", "''") lines.append(f"{k}: '{safe}'") return lines - @staticmethod def _serialize_object_field_pair( + self, spec: FieldSpec, value: object, preserve_multiline: bool = False, ) -> list[str]: """Render one field from a schematized object.""" if spec.type == "bool": - return [f"{spec.name}: {FrontmatterSerializer._serialize_bool(value)}"] + return [f"{spec.name}: {self._serialize_bool(value)}"] if spec.type == "list": if isinstance(value, list) and value: lines = [f"{spec.name}:"] lines.extend(f" - {item_v}" for item_v in value) return lines return [] - if FrontmatterSerializer._should_emit_multiline(value, preserve_multiline): - return FrontmatterSerializer._serialize_multiline_scalar(spec.name, value) - return [f"{spec.name}: {FrontmatterSerializer._serialize_scalar(spec, value)}"] + if self._should_emit_multiline(value, preserve_multiline): + return self._serialize_multiline_scalar(spec.name, value) + return [f"{spec.name}: {self._serialize_scalar(spec, value)}"] - @classmethod def _serialize_object( - cls, + self, item: dict, item_schema: FrontmatterSchema | None, preserve_multiline: bool = False, ) -> list[str]: """Serialize one object-list item to YAML lines (without leading `` - ``).""" if item_schema is None: - return cls._serialize_object_unschematized(item, preserve_multiline) + return self._serialize_object_unschematized(item, preserve_multiline) pairs = [ (spec, item.get(spec.name)) @@ -116,11 +114,11 @@ def _serialize_object( ] ordered_lines: list[str] = [] for spec, value in pairs: - ordered_lines.extend(cls._serialize_object_field_pair(spec, value, preserve_multiline)) + ordered_lines.extend(self._serialize_object_field_pair(spec, value, preserve_multiline)) return ordered_lines - @staticmethod def _append_object_list_items( + self, lines: list[str], value: list, item_schema: FrontmatterSchema | None, @@ -130,7 +128,7 @@ def _append_object_list_items( for item in value: if not isinstance(item, dict): continue - obj_lines = FrontmatterSerializer._serialize_object( + obj_lines = self._serialize_object( item, item_schema, preserve_multiline=preserve_multiline, @@ -139,8 +137,7 @@ def _append_object_list_items( prefix = " - " if i == 0 else " " lines.append(f"{prefix}{obj_line}") - @staticmethod - def _append_raw_field(lines: list[str], name: str, value: object) -> None: + def _append_raw_field(self, lines: list[str], name: str, value: object) -> None: """Append raw field value (unserialized) to lines.""" raw_str = str(value).strip() if value is not None else "" if raw_str: @@ -148,8 +145,8 @@ def _append_raw_field(lines: list[str], name: str, value: object) -> None: for raw_line in str(value).split("\n"): lines.append(raw_line) - @staticmethod def _append_field_by_type( + self, lines: list[str], spec: FieldSpec, value: object, @@ -157,7 +154,7 @@ def _append_field_by_type( ) -> None: """Dispatch field rendering by type.""" if spec.type == "bool": - lines.append(f"{spec.name}: {FrontmatterSerializer._serialize_bool(value)}") + lines.append(f"{spec.name}: {self._serialize_bool(value)}") return if spec.type == "list": if isinstance(value, list) and value: @@ -168,7 +165,7 @@ def _append_field_by_type( if spec.type == "object-list": if isinstance(value, list) and value: lines.append(f"{spec.name}:") - FrontmatterSerializer._append_object_list_items( + self._append_object_list_items( lines, value, spec.item_schema, @@ -176,16 +173,15 @@ def _append_field_by_type( ) return if spec.type == "raw": - FrontmatterSerializer._append_raw_field(lines, spec.name, value) + self._append_raw_field(lines, spec.name, value) return - if FrontmatterSerializer._should_emit_multiline(value, preserve_multiline): - lines.extend(FrontmatterSerializer._serialize_multiline_scalar(spec.name, value)) + if self._should_emit_multiline(value, preserve_multiline): + lines.extend(self._serialize_multiline_scalar(spec.name, value)) else: - lines.append(f"{spec.name}: {FrontmatterSerializer._serialize_scalar(spec, value)}") + lines.append(f"{spec.name}: {self._serialize_scalar(spec, value)}") - @classmethod def serialize( - cls, + self, meta: dict, schema: FrontmatterSchema, preserve_multiline: bool = False, @@ -196,7 +192,7 @@ def serialize( value = meta.get(spec.name) if value is None: continue - cls._append_field_by_type(lines, spec, value, preserve_multiline) + self._append_field_by_type(lines, spec, value, preserve_multiline) lines.append("---") lines.append("") return "\n".join(lines) diff --git a/tests/vstack/frontmatter/test_serializer.py b/tests/vstack/frontmatter/test_serializer.py index 52c19a5..c5baa8f 100644 --- a/tests/vstack/frontmatter/test_serializer.py +++ b/tests/vstack/frontmatter/test_serializer.py @@ -14,7 +14,7 @@ def test_serialize_raw_field(self) -> None: schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( {"name": "agent", "mcp-servers": " srv:\n command: cmd"}, schema, ) @@ -25,12 +25,12 @@ def test_serialize_raw_field_empty_skipped(self) -> None: schema = FrontmatterSchema( [FieldSpec("name", quoted=False), FieldSpec("mcp-servers", type="raw")] ) - output = FrontmatterSerializer.serialize({"name": "agent", "mcp-servers": ""}, schema) + output = FrontmatterSerializer().serialize({"name": "agent", "mcp-servers": ""}, schema) assert "mcp-servers" not in output def test_serialize_frontmatter_required_fields(self) -> None: """Test that serialize includes required frontmatter fields.""" - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( {"name": "vision", "description": "A test skill"}, SKILL_SCHEMA ) assert output.startswith("---\n") @@ -38,7 +38,7 @@ def test_serialize_frontmatter_required_fields(self) -> None: def test_serialize_frontmatter_optional_fields(self) -> None: """Test that serialize includes optional frontmatter fields.""" - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "name": "x", "description": "d", @@ -52,7 +52,7 @@ def test_serialize_frontmatter_optional_fields(self) -> None: def test_serialize_strips_extra_fields(self) -> None: """Test that serialize strips fields not in schema.""" - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( {"name": "x", "description": "d", "version": "1.0.0", "extra": "value"}, SKILL_SCHEMA, ) @@ -62,7 +62,7 @@ def test_serialize_strips_extra_fields(self) -> None: def test_serialize_object_list_without_item_schema(self) -> None: """Test that serialize renders object-list without item schema.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "handoffs": [ {"label": "A", "send": True, "prompt": "go"}, @@ -86,7 +86,7 @@ def test_serialize_object_list_with_item_schema_and_list_field(self) -> None: schema = FrontmatterSchema( [FieldSpec("handoffs", type="object-list", item_schema=item_schema)] ) - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "handoffs": [ {"label": "handoff", "send": "false", "roles": ["reader", "writer"]}, @@ -102,13 +102,13 @@ def test_serialize_object_list_with_item_schema_and_list_field(self) -> None: def test_serialize_object_list_skips_non_dict_items(self) -> None: """Test that serialize skips non-dict items in object-list.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = FrontmatterSerializer.serialize({"handoffs": ["bad", {"label": "ok"}]}, schema) + output = FrontmatterSerializer().serialize({"handoffs": ["bad", {"label": "ok"}]}, schema) assert "- label: 'ok'" in output assert "bad" not in output def test_serialize_multiline_scalar_when_enabled(self) -> None: """Test that serialize uses folded blocks when preserve_multiline=True.""" - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "name": "x", "description": "This is a very long description that should be emitted as a folded block scalar when multiline output is enabled for readability in generated frontmatter.", @@ -121,7 +121,7 @@ def test_serialize_multiline_scalar_when_enabled(self) -> None: def test_serialize_multiline_object_list_scalar_when_enabled(self) -> None: """Test that serialize uses folded blocks in object-list scalars.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "handoffs": [ { @@ -137,7 +137,7 @@ def test_serialize_multiline_object_list_scalar_when_enabled(self) -> None: def test_serialize_multiline_scalar_preserves_content_around_blank_lines(self) -> None: """Test that serialize preserves blank lines in folded block scalars.""" - output = FrontmatterSerializer.serialize( + output = FrontmatterSerializer().serialize( { "name": "x", "description": "First paragraph.\n\nSecond paragraph.", From bc30b994e48233093da2f2593c5059d04ea7a680 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Mon, 20 Apr 2026 23:44:48 +0200 Subject: [PATCH 13/19] refactor(cli): convert parser functions to CLIParser class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Created CLIParser class with instance methods: vscode_user_dir(), resolve_targets(), build() - Renamed _vscode_user_dir() → vscode_user_dir() (removed leading underscore) - Updated main.py: instantiate CLIParser() and call instance methods - Updated parser tests to use CLIParser() instances and patch class methods - Updated main tests to patch CLIParser.build and CLIParser.resolve_targets - Updated skills test to verify both AUTO-GENERATED and VSTACK-META footers - All 194 tests passing --- .github/vstack.json | 2 +- src/vstack/cli/parser.py | 213 +++++++++++++------------- src/vstack/main.py | 7 +- tests/vstack/cli/test_parser.py | 20 +-- tests/vstack/skills/test_templates.py | 5 +- tests/vstack/test_main.py | 22 +-- 6 files changed, 135 insertions(+), 134 deletions(-) diff --git a/.github/vstack.json b/.github/vstack.json index 25e1ef8..e6ff576 100644 --- a/.github/vstack.json +++ b/.github/vstack.json @@ -1,6 +1,6 @@ { "vstack_version": "0.0.0.post3.dev0+df3fe6e", - "installed_at": "2026-04-20T21:11:26.309777+00:00", + "installed_at": "2026-04-20T21:44:41.028352+00:00", "artifacts": { "skills": [ { diff --git a/src/vstack/cli/parser.py b/src/vstack/cli/parser.py index 3ab79c3..3c9831c 100644 --- a/src/vstack/cli/parser.py +++ b/src/vstack/cli/parser.py @@ -9,96 +9,63 @@ from vstack.constants import VERSION -def _vscode_user_dir() -> Path | None: - """Detect VS Code / VS Code Server user data directory.""" - candidates = [ - Path.home() / ".vscode-server" / "data" / "User", - Path.home() / ".config" / "Code" / "User", - Path.home() / "Library" / "Application Support" / "Code" / "User", - Path.home() / "AppData" / "Roaming" / "Code" / "User", - ] - return next((p for p in candidates if p.exists()), None) +class CLIParser: + """Build and resolve CLI arguments.""" + def vscode_user_dir(self) -> Path | None: + """Detect VS Code / VS Code Server user data directory.""" + candidates = [ + Path.home() / ".vscode-server" / "data" / "User", + Path.home() / ".config" / "Code" / "User", + Path.home() / "Library" / "Application Support" / "Code" / "User", + Path.home() / "AppData" / "Roaming" / "Code" / "User", + ] + return next((p for p in candidates if p.exists()), None) -def resolve_targets(args: argparse.Namespace) -> Path: - """Return the install root directory from parsed arguments.""" - if getattr(args, "use_global", False): - user_dir = _vscode_user_dir() - if user_dir is None: - print( - "ERROR: Could not detect VS Code user data directory.\n" - "Specify manually with: vstack install --target ~/.config/Code/User", - file=sys.stderr, - ) - sys.exit(1) - return user_dir - - if getattr(args, "target", None): - target = Path(args.target).expanduser().resolve() - if not target.exists(): - print(f"ERROR: target directory does not exist: {target}", file=sys.stderr) - sys.exit(1) - return target / ".github" + def resolve_targets(self, args: argparse.Namespace) -> Path: + """Return the install root directory from parsed arguments.""" + if getattr(args, "use_global", False): + user_dir = self.vscode_user_dir() + if user_dir is None: + print( + "ERROR: Could not detect VS Code user data directory.\n" + "Specify manually with: vstack install --target ~/.config/Code/User", + file=sys.stderr, + ) + sys.exit(1) + return user_dir - # default: current working directory - return Path.cwd() / ".github" + if getattr(args, "target", None): + target = Path(args.target).expanduser().resolve() + if not target.exists(): + print(f"ERROR: target directory does not exist: {target}", file=sys.stderr) + sys.exit(1) + return target / ".github" + # default: current working directory + return Path.cwd() / ".github" -def build_parser() -> argparse.ArgumentParser: - """Build parser.""" - parser = argparse.ArgumentParser( - prog="vstack", - description="Manage vstack skill generation and installation.", - ) - parser.add_argument("--version", action="version", version=f"vstack {VERSION}") - sub = parser.add_subparsers(dest="command", metavar="") - sub.required = True - - p_validate = sub.add_parser( - "validate", help="Render templates in memory, report unresolved tokens" - ) - p_validate.add_argument( - "--only", - nargs="+", - metavar="", - help="Validate only these artifact types, e.g. --only skill agent", - ) + def build(self) -> argparse.ArgumentParser: + """Build parser.""" + parser = argparse.ArgumentParser( + prog="vstack", + description="Manage vstack skill generation and installation.", + ) + parser.add_argument("--version", action="version", version=f"vstack {VERSION}") + sub = parser.add_subparsers(dest="command", metavar="") + sub.required = True - p = sub.add_parser("verify", help="Validate source templates and/or installed output") - group = p.add_mutually_exclusive_group() - group.add_argument("--target", metavar="", help="Install into /.github/") - group.add_argument( - "--global", - dest="use_global", - action="store_true", - help="VS Code user profile (agents/prompts/instructions/skills)", - ) - p.add_argument( - "--only", - nargs="+", - metavar="", - help="Verify only these artifact types, e.g. --only agent prompt", - ) - p.add_argument( - "--no-source", - dest="source", - action="store_false", - default=True, - help="Skip source template checks", - ) - p.add_argument( - "--no-output", - dest="output", - action="store_false", - default=True, - help="Skip installed output checks", - ) + p_validate = sub.add_parser( + "validate", help="Render templates in memory, report unresolved tokens" + ) + p_validate.add_argument( + "--only", + nargs="+", + metavar="", + help="Validate only these artifact types, e.g. --only skill agent", + ) - for cmd, help_text in [ - ("install", "Generate and install artifacts (--only to filter types)"), - ("uninstall", "Remove vstack-managed files"), - ]: - p = sub.add_parser(cmd, help=help_text) + p = sub.add_parser("verify", help="Validate source templates and/or installed output") group = p.add_mutually_exclusive_group() group.add_argument("--target", metavar="", help="Install into /.github/") group.add_argument( @@ -107,29 +74,63 @@ def build_parser() -> argparse.ArgumentParser: action="store_true", help="VS Code user profile (agents/prompts/instructions/skills)", ) - if cmd == "install": - p.add_argument( - "--only", - nargs="+", - metavar="", - help="Install only these artifact types, e.g. --only skill agent", - ) - mode = p.add_mutually_exclusive_group() - mode.add_argument( - "--force", - action="store_true", - help="Overwrite existing artifacts unconditionally", - ) - mode.add_argument( - "--update", - action="store_true", - help="Install only when a newer version is available", - ) - p.add_argument( - "--dry-run", - dest="dry_run", + p.add_argument( + "--only", + nargs="+", + metavar="", + help="Verify only these artifact types, e.g. --only agent prompt", + ) + p.add_argument( + "--no-source", + dest="source", + action="store_false", + default=True, + help="Skip source template checks", + ) + p.add_argument( + "--no-output", + dest="output", + action="store_false", + default=True, + help="Skip installed output checks", + ) + + for cmd, help_text in [ + ("install", "Generate and install artifacts (--only to filter types)"), + ("uninstall", "Remove vstack-managed files"), + ]: + p = sub.add_parser(cmd, help=help_text) + group = p.add_mutually_exclusive_group() + group.add_argument("--target", metavar="", help="Install into /.github/") + group.add_argument( + "--global", + dest="use_global", action="store_true", - help="Show what would be installed without writing files", + help="VS Code user profile (agents/prompts/instructions/skills)", ) + if cmd == "install": + p.add_argument( + "--only", + nargs="+", + metavar="", + help="Install only these artifact types, e.g. --only skill agent", + ) + mode = p.add_mutually_exclusive_group() + mode.add_argument( + "--force", + action="store_true", + help="Overwrite existing artifacts unconditionally", + ) + mode.add_argument( + "--update", + action="store_true", + help="Install only when a newer version is available", + ) + p.add_argument( + "--dry-run", + dest="dry_run", + action="store_true", + help="Show what would be installed without writing files", + ) - return parser + return parser diff --git a/src/vstack/main.py b/src/vstack/main.py index 9ecda83..c72fdf1 100644 --- a/src/vstack/main.py +++ b/src/vstack/main.py @@ -5,7 +5,7 @@ import sys from vstack.cli.commands import CommandLineInterface -from vstack.cli.parser import build_parser, resolve_targets +from vstack.cli.parser import CLIParser from vstack.constants import TEMPLATES_ROOT _GLOBAL_SUPPORTED_TYPES = ["agent", "instruction", "prompt", "skill"] @@ -34,14 +34,15 @@ def _resolve_only_for_scope(args: object) -> list[str] | None: def main() -> None: """Parse CLI arguments and dispatch the selected command.""" - parser = build_parser() + cli_parser = CLIParser() + parser = cli_parser.build() args = parser.parse_args() cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) if args.command == "validate": sys.exit(cli.validate(only=getattr(args, "only", None))) - install_dir = resolve_targets(args) + install_dir = cli_parser.resolve_targets(args) only = _resolve_only_for_scope(args) if args.command in {"install", "verify"} else None dispatch = { "verify": lambda: cli.verify( diff --git a/tests/vstack/cli/test_parser.py b/tests/vstack/cli/test_parser.py index 49985d6..c6b66f7 100644 --- a/tests/vstack/cli/test_parser.py +++ b/tests/vstack/cli/test_parser.py @@ -18,7 +18,7 @@ def test_vscode_user_dir_none_when_missing( ) -> None: """Test that vscode user dir none when missing.""" monkeypatch.setattr(Path, "home", lambda: tmp_path) - assert parser_module._vscode_user_dir() is None + assert parser_module.CLIParser().vscode_user_dir() is None class TestResolveTargets: @@ -30,28 +30,28 @@ def test_resolve_targets_default_uses_cwd_dot_github( """Test that resolve targets default uses cwd dot github.""" monkeypatch.chdir(tmp_path) args = argparse.Namespace(target=None, use_global=False) - assert parser_module.resolve_targets(args) == tmp_path / ".github" + assert parser_module.CLIParser().resolve_targets(args) == tmp_path / ".github" def test_resolve_targets_target_existing(self, tmp_path: Path) -> None: """Test that resolve targets target existing.""" target = tmp_path / "workspace" target.mkdir() args = argparse.Namespace(target=str(target), use_global=False) - assert parser_module.resolve_targets(args) == target / ".github" + assert parser_module.CLIParser().resolve_targets(args) == target / ".github" def test_resolve_targets_target_missing_exits(self, tmp_path: Path) -> None: """Test that resolve targets target missing exits.""" args = argparse.Namespace(target=str(tmp_path / "missing"), use_global=False) with pytest.raises(SystemExit) as exc: - parser_module.resolve_targets(args) + parser_module.CLIParser().resolve_targets(args) assert exc.value.code == 1 def test_resolve_targets_global_missing_exits(self, monkeypatch: pytest.MonkeyPatch) -> None: """Test that resolve targets global missing exits.""" - monkeypatch.setattr(parser_module, "_vscode_user_dir", lambda: None) + monkeypatch.setattr(parser_module.CLIParser, "vscode_user_dir", lambda self: None) args = argparse.Namespace(target=None, use_global=True) with pytest.raises(SystemExit) as exc: - parser_module.resolve_targets(args) + parser_module.CLIParser().resolve_targets(args) assert exc.value.code == 1 def test_resolve_targets_global_returns_user_dir( @@ -60,9 +60,9 @@ def test_resolve_targets_global_returns_user_dir( """Test that resolve targets global returns user dir.""" user_dir = tmp_path / "User" user_dir.mkdir(parents=True) - monkeypatch.setattr(parser_module, "_vscode_user_dir", lambda: user_dir) + monkeypatch.setattr(parser_module.CLIParser, "vscode_user_dir", lambda self: user_dir) args = argparse.Namespace(target=None, use_global=True) - assert parser_module.resolve_targets(args) == user_dir + assert parser_module.CLIParser().resolve_targets(args) == user_dir class TestBuildParser: @@ -70,14 +70,14 @@ class TestBuildParser: def test_build_parser_has_expected_commands(self) -> None: """Test that build parser has expected commands.""" - parser = parser_module.build_parser() + parser = parser_module.CLIParser().build() actions = [a for a in parser._actions if isinstance(a, argparse._SubParsersAction)] subcommands = set(actions[0].choices.keys()) assert subcommands == {"validate", "verify", "install", "uninstall"} def test_verify_accepts_only_filter(self) -> None: """Test that verify command supports --only type filters.""" - parser = parser_module.build_parser() + parser = parser_module.CLIParser().build() args = parser.parse_args(["verify", "--only", "agent", "prompt", "--no-source"]) assert args.command == "verify" assert args.only == ["agent", "prompt"] diff --git a/tests/vstack/skills/test_templates.py b/tests/vstack/skills/test_templates.py index feb0f00..6beee17 100644 --- a/tests/vstack/skills/test_templates.py +++ b/tests/vstack/skills/test_templates.py @@ -67,9 +67,8 @@ def test_generated_files_have_auto_gen_footer(self, generated_dir: Path) -> None for md in generated_dir.glob("*/SKILL.md"): content = md.read_text(encoding="utf-8") assert "AUTO-GENERATED" in content - assert content.endswith( - "\n" - ) + assert "" in content + assert " + ``` -The footer text lives in `src/vstack/artifacts/constants.py` and is shared across all artifact types. -Currently both skills and agents have `auto_gen_footer=True`. +The human-readable footer text lives in `src/vstack/artifacts/constants.py` and is shared across all artifact types. +The machine-readable `VSTACK-META` footer is emitted by `GenericArtifactGenerator._build_footer`. +Currently skills, agents, instructions, and prompts all have `auto_gen_footer=True`. ______________________________________________________________________ diff --git a/docs/design/skills.md b/docs/design/skills.md index 58badac..e3ea670 100644 --- a/docs/design/skills.md +++ b/docs/design/skills.md @@ -79,13 +79,13 @@ ______________________________________________________________________ ## file locations -| Path | Purpose | -| ------------------------------------------------- | -------------------------------------------------------------------------- | -| `src/vstack/_templates/skills//config.yaml` | Source of truth — skill frontmatter fields | -| `src/vstack/_templates/skills//template.md` | Source of truth — skill instructions body | -| `src/vstack/_templates/skills/_partials/*.md` | Shared partials injected via `{{TOKEN}}` | -| `.github/skills//SKILL.md` | Generated output — what VS Code loads | -| `.github/vstack.json` | Generated install manifest and artifact index (including installed skills) | +| Path | Purpose | +| ------------------------------------------------- | ------------------------------------------------------------------------------ | +| `src/vstack/_templates/skills//config.yaml` | Source of truth — skill frontmatter fields | +| `src/vstack/_templates/skills//template.md` | Source of truth — skill instructions body | +| `src/vstack/_templates/skills/_partials/*.md` | Shared partials injected via `{{TOKEN}}` | +| `.github/skills//SKILL.md` | Generated output — what VS Code loads | +| `.github/vstack.json` | Generated install manifest and artifact index for all installed artifact types | **Never edit `.github/skills/` directly.** Regenerate after every change: diff --git a/src/vstack/agents/generator.py b/src/vstack/agents/generator.py index 63b3879..dc119ac 100644 --- a/src/vstack/agents/generator.py +++ b/src/vstack/agents/generator.py @@ -13,8 +13,8 @@ class AgentGenerator(GenericArtifactGenerator): - """Generator for agent artifacts, pre-configured for :data:`~vstack.artifacts.type_config.AGENT_TYPE`.""" + """Generate agent artifacts using the built-in agent type configuration.""" def __init__(self) -> None: - """Initialize instance state.""" + """Create an agent generator bound to the built-in template root.""" super().__init__(AGENT_TYPE, TEMPLATES_ROOT) diff --git a/src/vstack/artifacts/config.py b/src/vstack/artifacts/config.py index 6cb4d36..3396501 100644 --- a/src/vstack/artifacts/config.py +++ b/src/vstack/artifacts/config.py @@ -82,7 +82,7 @@ class ArtifactTypeConfig: manifest_key: str = "" def __post_init__(self) -> None: - """Internal helper to post init.""" + """Default ``manifest_key`` to ``output_subdir`` when not explicitly set.""" if not self.manifest_key: self.manifest_key = self.output_subdir diff --git a/src/vstack/cli/commands.py b/src/vstack/cli/commands.py index 2511010..b052855 100644 --- a/src/vstack/cli/commands.py +++ b/src/vstack/cli/commands.py @@ -409,6 +409,13 @@ def install( new_version=new_version, ) + if action == "skip" and out_file.exists(): + existing_meta = GenericArtifactGenerator.parse_generation_metadata( + out_file.read_text(encoding="utf-8") + ) + if existing_meta is not None and existing_meta.get("vstack_version") != VERSION: + action = "install" + self._print_install_action( colors=_C, prefix=prefix, diff --git a/src/vstack/cli/manifest.py b/src/vstack/cli/manifest.py index 88e6039..7368e32 100644 --- a/src/vstack/cli/manifest.py +++ b/src/vstack/cli/manifest.py @@ -11,7 +11,9 @@ "installed_at": "…", "artifacts": { "skills": [{"name": "vision", "version": "1.0.1", "file": "skills/vision/SKILL.md"}], - "agents": [{"name": "engineer", "file": "agents/engineer.agent.md"}] + "agents": [{"name": "engineer", "file": "agents/engineer.agent.md"}], + "instructions": [{"name": "python", "file": "instructions/python.instructions.md"}], + "prompts": [{"name": "code-review", "file": "prompts/code-review.prompt.md"}] } } """ @@ -27,7 +29,7 @@ @dataclass class ArtifactEntry: - """A single artifact tracked in the manifest.""" + """Represent a single installed artifact entry in ``vstack.json``.""" name: str file: str @@ -36,7 +38,7 @@ class ArtifactEntry: @dataclass class Manifest: - """In-memory representation of ``vstack.json``.""" + """Represent the parsed install manifest stored in ``vstack.json``.""" vstack_version: str installed_at: str @@ -45,21 +47,37 @@ class Manifest: # ── Accessors ───────────────────────────────────────────────────────────── def entries_for(self, type_name: str) -> list[ArtifactEntry]: - """Entries for.""" + """Return manifest entries for a single artifact type key. + + Args: + type_name: Manifest artifact key such as ``"skills"``. + """ return self.artifacts.get(type_name, []) def names_for(self, type_name: str) -> list[str]: - """Names for.""" + """Return artifact names for a single manifest type key. + + Args: + type_name: Manifest artifact key such as ``"skills"``. + """ return [e.name for e in self.entries_for(type_name)] def files_for(self, type_name: str) -> list[str]: - """Files for.""" + """Return relative output file paths for a manifest type key. + + Args: + type_name: Manifest artifact key such as ``"skills"``. + """ return [e.file for e in self.entries_for(type_name)] # ── Serialisation ───────────────────────────────────────────────────────── def to_dict(self) -> dict: - """To dict.""" + """Serialize the manifest into JSON-compatible primitives. + + Returns: + A nested dictionary structure suitable for ``json.dumps``. + """ return { "vstack_version": self.vstack_version, "installed_at": self.installed_at, @@ -78,7 +96,14 @@ def to_dict(self) -> dict: @classmethod def from_dict(cls, data: dict) -> Manifest: - """From dict.""" + """Create a :class:`Manifest` from parsed JSON data. + + Args: + data: Parsed JSON object read from ``vstack.json``. + + Returns: + A normalized in-memory manifest representation. + """ artifacts: dict[str, list[ArtifactEntry]] = {} for type_name, entries in data.get("artifacts", {}).items(): artifacts[type_name] = [ @@ -98,18 +123,28 @@ def from_dict(cls, data: dict) -> Manifest: class ManifestFile: - """Reads and writes the ``vstack.json`` manifest inside *parent_dir*.""" + """Read and write the ``vstack.json`` manifest inside an install root.""" def __init__(self, parent_dir: Path) -> None: - """Initialize instance state.""" + """Create a manifest accessor rooted at the provided install directory. + + Args: + parent_dir: Install root that contains or will contain + ``vstack.json``. + """ self.path = parent_dir / MANIFEST_FILENAME def exists(self) -> bool: - """Exists.""" + """Return ``True`` when the manifest file exists on disk.""" return self.path.exists() def read(self) -> Manifest | None: - """Parse the manifest. Returns ``None`` when missing or corrupt.""" + """Parse the manifest file from disk. + + Returns: + The parsed manifest, or ``None`` when the file is missing or + cannot be decoded safely. + """ if not self.path.exists(): return None try: @@ -119,7 +154,11 @@ def read(self) -> Manifest | None: return None def write(self, manifest: Manifest) -> None: - """Write.""" + """Write a manifest to disk in stable, human-readable JSON format. + + Args: + manifest: Manifest data to persist. + """ self.path.parent.mkdir(parents=True, exist_ok=True) self.path.write_text( json.dumps(manifest.to_dict(), indent=2, ensure_ascii=False) + "\n", diff --git a/src/vstack/cli/parser.py b/src/vstack/cli/parser.py index 3c9831c..8dc7739 100644 --- a/src/vstack/cli/parser.py +++ b/src/vstack/cli/parser.py @@ -9,11 +9,16 @@ from vstack.constants import VERSION -class CLIParser: - """Build and resolve CLI arguments.""" +class CommandLineParser: + """Create the vstack command-line parser and resolve install targets.""" def vscode_user_dir(self) -> Path | None: - """Detect VS Code / VS Code Server user data directory.""" + """Return the first detected VS Code user data directory. + + Returns: + The detected VS Code or VS Code Server user directory, or ``None`` + when no known location exists on the current machine. + """ candidates = [ Path.home() / ".vscode-server" / "data" / "User", Path.home() / ".config" / "Code" / "User", @@ -23,7 +28,18 @@ def vscode_user_dir(self) -> Path | None: return next((p for p in candidates if p.exists()), None) def resolve_targets(self, args: argparse.Namespace) -> Path: - """Return the install root directory from parsed arguments.""" + """Resolve the install root directory from parsed CLI arguments. + + Args: + args: Parsed ``argparse`` namespace for an install-like command. + + Returns: + The effective install root directory. + + Raises: + SystemExit: If ``--global`` cannot be resolved or the explicit + ``--target`` directory does not exist. + """ if getattr(args, "use_global", False): user_dir = self.vscode_user_dir() if user_dir is None: @@ -46,7 +62,11 @@ def resolve_targets(self, args: argparse.Namespace) -> Path: return Path.cwd() / ".github" def build(self) -> argparse.ArgumentParser: - """Build parser.""" + """Create and configure the top-level ``argparse`` parser for vstack. + + Returns: + A fully configured parser with all supported subcommands and flags. + """ parser = argparse.ArgumentParser( prog="vstack", description="Manage vstack skill generation and installation.", diff --git a/src/vstack/frontmatter/parser.py b/src/vstack/frontmatter/parser.py index bf48663..2223518 100644 --- a/src/vstack/frontmatter/parser.py +++ b/src/vstack/frontmatter/parser.py @@ -45,16 +45,16 @@ def __getitem__(self, key: str) -> object: return self.metadata[key] def __bool__(self) -> bool: - """True when metadata is non-empty.""" + """Return ``True`` when parsed metadata is non-empty.""" return bool(self.metadata) class FrontmatterParser: - """Stateless parser for YAML frontmatter.""" + """Parse the repository's supported subset of YAML frontmatter.""" @staticmethod def _is_current_object_list_item(meta: dict, current_key: str) -> bool: - """Return True when current key points to the last item of an object-list.""" + """Return ``True`` when ``current_key`` points to the active object-list item.""" return ( bool(current_key) and isinstance(meta.get(current_key), list) @@ -70,19 +70,19 @@ def _flush_object_block_scalar( object_scalar_field: str, object_block_lines: list[str], ) -> None: - """Flush buffered object-list block-scalar content into the current object item.""" + """Flush buffered block-scalar content into the active object-list item.""" text = " ".join(b for b in object_block_lines if b).strip() if FrontmatterParser._is_current_object_list_item(meta, current_key): meta[current_key][-1][object_scalar_field] = text @staticmethod def _flush_raw_block(*, meta: dict, current_key: str, raw_lines: list[str]) -> None: - """Flush buffered raw block content into current key.""" + """Flush buffered raw block content into the current top-level key.""" meta[current_key] = "\n".join(raw_lines).rstrip() @staticmethod def _flush_block_scalar(*, meta: dict, current_key: str, block_lines: list[str]) -> None: - """Flush buffered top-level block-scalar into current key.""" + """Flush a buffered top-level block scalar into the current key.""" meta[current_key] = " ".join(b for b in block_lines if b).strip() @staticmethod @@ -101,9 +101,13 @@ def parse(content: str) -> FrontmatterContent: @staticmethod def parse_yaml(raw: str) -> dict: - """Parse a raw YAML string (no ``---`` delimiters) and return a dict. + """Parse a raw YAML string without frontmatter delimiters. - Used for loading ``config.yaml`` files. + Args: + raw: YAML content without surrounding ``---`` delimiters. + + Returns: + A parsed metadata dictionary. """ return FrontmatterParser._parse_yaml_block(raw) diff --git a/src/vstack/frontmatter/serializer.py b/src/vstack/frontmatter/serializer.py index 71fea96..a4ccb03 100644 --- a/src/vstack/frontmatter/serializer.py +++ b/src/vstack/frontmatter/serializer.py @@ -20,7 +20,7 @@ class FrontmatterSerializer: """Frontmatter serializer — converts metadata dict to YAML. Instantiate once, then call :meth:`serialize` to render frontmatter. - No mutable instance state; state exists only for the duration of a single call. + No mutable instance state is retained between calls. """ def _serialize_scalar(self, spec: FieldSpec, value: object) -> str: @@ -50,7 +50,7 @@ def _serialize_multiline_scalar( return out def _should_emit_multiline(self, value: object, preserve_multiline: bool) -> bool: - """Return True when scalar should be emitted as a folded block string.""" + """Return ``True`` when a scalar should use folded-block YAML output.""" if not preserve_multiline: return False text = str(value) @@ -84,7 +84,7 @@ def _serialize_object_field_pair( value: object, preserve_multiline: bool = False, ) -> list[str]: - """Render one field from a schematized object.""" + """Serialize a single schematized field/value pair for an object-list item.""" if spec.type == "bool": return [f"{spec.name}: {self._serialize_bool(value)}"] if spec.type == "list": @@ -138,7 +138,7 @@ def _append_object_list_items( lines.append(f"{prefix}{obj_line}") def _append_raw_field(self, lines: list[str], name: str, value: object) -> None: - """Append raw field value (unserialized) to lines.""" + """Append a raw YAML field value without additional serialization.""" raw_str = str(value).strip() if value is not None else "" if raw_str: lines.append(f"{name}:") @@ -186,7 +186,17 @@ def serialize( schema: FrontmatterSchema, preserve_multiline: bool = False, ) -> str: - """Serialize metadata dict to VS Code frontmatter block (YAML --- / ---).""" + """Serialize metadata into a VS Code frontmatter block. + + Args: + meta: Input metadata values to serialize. + schema: Ordered frontmatter schema that filters and formats fields. + preserve_multiline: When ``True``, emit long strings as folded YAML + block scalars where appropriate. + + Returns: + A YAML frontmatter block including opening and closing ``---`` lines. + """ lines = ["---"] for spec in schema.fields: value = meta.get(spec.name) diff --git a/src/vstack/instructions/generator.py b/src/vstack/instructions/generator.py index e0d9d77..fd67950 100644 --- a/src/vstack/instructions/generator.py +++ b/src/vstack/instructions/generator.py @@ -1,4 +1,4 @@ -"""Instruction artifact generator.""" +"""Thin instruction generator wrapper over ``GenericArtifactGenerator``.""" from vstack.artifacts.generator import GenericArtifactGenerator from vstack.constants import TEMPLATES_ROOT @@ -6,8 +6,8 @@ class InstructionGenerator(GenericArtifactGenerator): - """Generate installed instruction artifacts from instruction templates.""" + """Generate instruction artifacts using the built-in instruction configuration.""" def __init__(self) -> None: - """Initialize instance state.""" + """Create an instruction generator bound to the built-in template root.""" super().__init__(INSTRUCTION_TYPE, TEMPLATES_ROOT) diff --git a/src/vstack/main.py b/src/vstack/main.py index c72fdf1..48dfb14 100644 --- a/src/vstack/main.py +++ b/src/vstack/main.py @@ -5,14 +5,22 @@ import sys from vstack.cli.commands import CommandLineInterface -from vstack.cli.parser import CLIParser +from vstack.cli.parser import CommandLineParser from vstack.constants import TEMPLATES_ROOT _GLOBAL_SUPPORTED_TYPES = ["agent", "instruction", "prompt", "skill"] def _resolve_only_for_scope(args: object) -> list[str] | None: - """Return the artifact type filter for the active command scope.""" + """Resolve the active artifact-type filter for the parsed CLI arguments. + + Args: + args: Parsed CLI arguments object, typically from ``argparse``. + + Returns: + The explicit ``--only`` filter for the active scope, the default + global-profile artifact set, or ``None`` when no filter applies. + """ requested_only = getattr(args, "only", None) if not getattr(args, "use_global", False): return requested_only @@ -33,8 +41,8 @@ def _resolve_only_for_scope(args: object) -> list[str] | None: def main() -> None: - """Parse CLI arguments and dispatch the selected command.""" - cli_parser = CLIParser() + """Parse CLI arguments and dispatch the selected top-level command.""" + cli_parser = CommandLineParser() parser = cli_parser.build() args = parser.parse_args() cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) diff --git a/src/vstack/prompts/generator.py b/src/vstack/prompts/generator.py index fa24439..59f594b 100644 --- a/src/vstack/prompts/generator.py +++ b/src/vstack/prompts/generator.py @@ -1,4 +1,4 @@ -"""Prompt artifact generator.""" +"""Thin prompt generator wrapper over ``GenericArtifactGenerator``.""" from vstack.artifacts.generator import GenericArtifactGenerator from vstack.constants import TEMPLATES_ROOT @@ -6,8 +6,8 @@ class PromptGenerator(GenericArtifactGenerator): - """Generate installed prompt artifacts from prompt templates.""" + """Generate prompt artifacts using the built-in prompt configuration.""" def __init__(self) -> None: - """Initialize instance state.""" + """Create a prompt generator bound to the built-in template root.""" super().__init__(PROMPT_TYPE, TEMPLATES_ROOT) diff --git a/src/vstack/skills/generator.py b/src/vstack/skills/generator.py index 8f1603c..cf4a6ee 100644 --- a/src/vstack/skills/generator.py +++ b/src/vstack/skills/generator.py @@ -13,8 +13,8 @@ class SkillGenerator(GenericArtifactGenerator): - """Generator for skill artifacts, pre-configured for :data:`~vstack.artifacts.type_config.SKILL_TYPE`.""" + """Generate skill artifacts using the built-in skill type configuration.""" def __init__(self) -> None: - """Initialize instance state.""" + """Create a skill generator bound to the built-in template root.""" super().__init__(SKILL_TYPE, TEMPLATES_ROOT) diff --git a/tests/vstack/artifacts/test_generator.py b/tests/vstack/artifacts/test_generator.py index 2c9b11c..20ea21a 100644 --- a/tests/vstack/artifacts/test_generator.py +++ b/tests/vstack/artifacts/test_generator.py @@ -7,6 +7,7 @@ import pytest +import vstack.artifacts.generator as generator_module from vstack.agents.config import AGENT_TYPE from vstack.artifacts.generator import GenericArtifactGenerator from vstack.skills.config import SKILL_TYPE @@ -105,6 +106,24 @@ def test_parse_generation_metadata_returns_none_without_footer(self) -> None: """Test that metadata parser returns none when footer is missing.""" assert GenericArtifactGenerator.parse_generation_metadata("plain content") is None + def test_parse_generation_metadata_returns_none_on_invalid_json(self) -> None: + """Test that metadata parser returns none when footer JSON is invalid.""" + text = "" + assert GenericArtifactGenerator.parse_generation_metadata(text) is None + + def test_parse_generation_metadata_returns_none_on_non_object(self) -> None: + """Test that metadata parser returns none when footer JSON is not an object.""" + text = '' + assert GenericArtifactGenerator.parse_generation_metadata(text) is None + + def test_parse_generation_metadata_returns_none_when_loader_returns_non_dict( + self, monkeypatch: pytest.MonkeyPatch + ) -> None: + """Test that metadata parser rejects non-dict payloads from JSON loader.""" + monkeypatch.setattr(generator_module.json, "loads", lambda _text: ["not", "dict"]) + text = "" + assert GenericArtifactGenerator.parse_generation_metadata(text) is None + def test_generate_writes_files(self, tmp_path: Path) -> None: """Test that generate writes files.""" tmpl_dir = tmp_path / "templates" / "skills" / "alpha" diff --git a/tests/vstack/cli/test_commands.py b/tests/vstack/cli/test_commands.py index 25c0252..66a729d 100644 --- a/tests/vstack/cli/test_commands.py +++ b/tests/vstack/cli/test_commands.py @@ -10,7 +10,8 @@ from tests.conftest import run_vstack from vstack.cli.commands import CommandLineInterface, _version_gt from vstack.cli.constants import EXPECTED_CANONICAL_NAMES -from vstack.constants import TEMPLATES_ROOT +from vstack.cli.manifest import ArtifactEntry, Manifest +from vstack.constants import TEMPLATES_ROOT, VERSION from vstack.models import CheckMessage, ValidationResult @@ -499,6 +500,63 @@ def test_install_update_newer_version_writes_file(self, tmp_path: Path) -> None: assert new_content != "old" assert "AUTO-GENERATED" in new_content + def test_expected_output_names_falls_back_without_manifest(self) -> None: + """Test that expected output names fallback is used when manifest data is absent.""" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + gen = cli._gen_for("skill") + assert gen is not None + assert cli._expected_output_names(gen, None) == EXPECTED_CANONICAL_NAMES + + def test_verify_manifest_metadata_skips_missing_artifact_files(self, tmp_path: Path) -> None: + """Test that missing manifest-tracked files are ignored during metadata verification.""" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + gen = cli._gen_for("skill") + assert gen is not None + + manifest_data = Manifest( + vstack_version=VERSION, + installed_at="2026-01-01T00:00:00Z", + artifacts={ + "skills": [ + ArtifactEntry( + name="missing-skill", + file="skills/missing-skill/SKILL.md", + version="1.0.0", + ) + ] + }, + ) + + result = cli._verify_manifest_metadata(gen, manifest_data, tmp_path / ".github") + assert result is None + + def test_install_rewrites_skipped_artifact_when_footer_version_mismatches( + self, tmp_path: Path + ) -> None: + """Test that install rewrites a skipped artifact when footer vstack_version is stale.""" + install_dir = tmp_path / ".github" + cli = CommandLineInterface(templates_root=TEMPLATES_ROOT) + + rc_install = cli.install(install_dir, only=["skill"]) + assert rc_install == 0 + + artifact_path = install_dir / "skills" / "vision" / "SKILL.md" + original = artifact_path.read_text(encoding="utf-8") + tampered = re.sub( + r'"vstack_version":"[^"]+"', + '"vstack_version":"stale-version"', + original, + count=1, + ) + artifact_path.write_text(tampered, encoding="utf-8") + + rc_reinstall = cli.install(install_dir, only=["skill"], update=False) + assert rc_reinstall == 0 + + updated = artifact_path.read_text(encoding="utf-8") + assert '"vstack_version":"stale-version"' not in updated + assert f'"vstack_version":"{VERSION}"' in updated + def test_verify_fails_on_vstack_meta_version_mismatch(self, tmp_path: Path) -> None: """Test that verify fails when VSTACK-META footer differs from manifest values.""" install_dir = tmp_path / ".github" diff --git a/tests/vstack/cli/test_parser.py b/tests/vstack/cli/test_parser.py index c6b66f7..5085353 100644 --- a/tests/vstack/cli/test_parser.py +++ b/tests/vstack/cli/test_parser.py @@ -18,7 +18,7 @@ def test_vscode_user_dir_none_when_missing( ) -> None: """Test that vscode user dir none when missing.""" monkeypatch.setattr(Path, "home", lambda: tmp_path) - assert parser_module.CLIParser().vscode_user_dir() is None + assert parser_module.CommandLineParser().vscode_user_dir() is None class TestResolveTargets: @@ -30,28 +30,28 @@ def test_resolve_targets_default_uses_cwd_dot_github( """Test that resolve targets default uses cwd dot github.""" monkeypatch.chdir(tmp_path) args = argparse.Namespace(target=None, use_global=False) - assert parser_module.CLIParser().resolve_targets(args) == tmp_path / ".github" + assert parser_module.CommandLineParser().resolve_targets(args) == tmp_path / ".github" def test_resolve_targets_target_existing(self, tmp_path: Path) -> None: """Test that resolve targets target existing.""" target = tmp_path / "workspace" target.mkdir() args = argparse.Namespace(target=str(target), use_global=False) - assert parser_module.CLIParser().resolve_targets(args) == target / ".github" + assert parser_module.CommandLineParser().resolve_targets(args) == target / ".github" def test_resolve_targets_target_missing_exits(self, tmp_path: Path) -> None: """Test that resolve targets target missing exits.""" args = argparse.Namespace(target=str(tmp_path / "missing"), use_global=False) with pytest.raises(SystemExit) as exc: - parser_module.CLIParser().resolve_targets(args) + parser_module.CommandLineParser().resolve_targets(args) assert exc.value.code == 1 def test_resolve_targets_global_missing_exits(self, monkeypatch: pytest.MonkeyPatch) -> None: """Test that resolve targets global missing exits.""" - monkeypatch.setattr(parser_module.CLIParser, "vscode_user_dir", lambda self: None) + monkeypatch.setattr(parser_module.CommandLineParser, "vscode_user_dir", lambda self: None) args = argparse.Namespace(target=None, use_global=True) with pytest.raises(SystemExit) as exc: - parser_module.CLIParser().resolve_targets(args) + parser_module.CommandLineParser().resolve_targets(args) assert exc.value.code == 1 def test_resolve_targets_global_returns_user_dir( @@ -60,9 +60,11 @@ def test_resolve_targets_global_returns_user_dir( """Test that resolve targets global returns user dir.""" user_dir = tmp_path / "User" user_dir.mkdir(parents=True) - monkeypatch.setattr(parser_module.CLIParser, "vscode_user_dir", lambda self: user_dir) + monkeypatch.setattr( + parser_module.CommandLineParser, "vscode_user_dir", lambda self: user_dir + ) args = argparse.Namespace(target=None, use_global=True) - assert parser_module.CLIParser().resolve_targets(args) == user_dir + assert parser_module.CommandLineParser().resolve_targets(args) == user_dir class TestBuildParser: @@ -70,14 +72,14 @@ class TestBuildParser: def test_build_parser_has_expected_commands(self) -> None: """Test that build parser has expected commands.""" - parser = parser_module.CLIParser().build() + parser = parser_module.CommandLineParser().build() actions = [a for a in parser._actions if isinstance(a, argparse._SubParsersAction)] subcommands = set(actions[0].choices.keys()) assert subcommands == {"validate", "verify", "install", "uninstall"} def test_verify_accepts_only_filter(self) -> None: """Test that verify command supports --only type filters.""" - parser = parser_module.CLIParser().build() + parser = parser_module.CommandLineParser().build() args = parser.parse_args(["verify", "--only", "agent", "prompt", "--no-source"]) assert args.command == "verify" assert args.only == ["agent", "prompt"] diff --git a/tests/vstack/frontmatter/test_schema.py b/tests/vstack/frontmatter/test_schema.py index afdafa5..4ce0088 100644 --- a/tests/vstack/frontmatter/test_schema.py +++ b/tests/vstack/frontmatter/test_schema.py @@ -90,6 +90,11 @@ def test_validate_meta_object_list_nested_schema_error(self) -> None: errors = schema.validate_meta({"items": [{"enabled": "maybe"}]}) assert any("items[0].field 'enabled'" in e for e in errors) + def test_validate_meta_object_list_mapping_without_item_schema(self) -> None: + """Test that mapping items are accepted when object-list has no item schema.""" + schema = FrontmatterSchema([FieldSpec("items", type="object-list")]) + assert schema.validate_meta({"items": [{"k": "v"}]}) == [] + def test_validate_meta_raw_field_has_no_structural_validation(self) -> None: """Test that validate meta raw field has no structural validation.""" schema = FrontmatterSchema([FieldSpec("meta", type="raw")]) diff --git a/tests/vstack/frontmatter/test_serializer.py b/tests/vstack/frontmatter/test_serializer.py index c5baa8f..e6e46e3 100644 --- a/tests/vstack/frontmatter/test_serializer.py +++ b/tests/vstack/frontmatter/test_serializer.py @@ -99,6 +99,23 @@ def test_serialize_object_list_with_item_schema_and_list_field(self) -> None: assert "roles:" in output assert "- reader" in output + def test_serialize_object_list_with_empty_nested_list_omits_list_field(self) -> None: + """Test that empty list fields in object-list items are omitted.""" + item_schema = FrontmatterSchema([FieldSpec("label"), FieldSpec("roles", type="list")]) + schema = FrontmatterSchema( + [FieldSpec("handoffs", type="object-list", item_schema=item_schema)] + ) + output = FrontmatterSerializer().serialize( + { + "handoffs": [ + {"label": "handoff", "roles": []}, + ] + }, + schema, + ) + assert "- label: 'handoff'" in output + assert "roles:" not in output + def test_serialize_object_list_skips_non_dict_items(self) -> None: """Test that serialize skips non-dict items in object-list.""" schema = FrontmatterSchema([FieldSpec("handoffs", type="object-list")]) diff --git a/tests/vstack/test_main.py b/tests/vstack/test_main.py index 627d652..3787bb8 100644 --- a/tests/vstack/test_main.py +++ b/tests/vstack/test_main.py @@ -76,7 +76,7 @@ def test_main_dispatch_validate(self, monkeypatch: pytest.MonkeyPatch) -> None: cli = _CLI() parser = type("P", (), {"parse_args": lambda self: _Args("validate")})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) monkeypatch.setattr(main_module, "CommandLineInterface", lambda templates_root: cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) @@ -101,8 +101,10 @@ def _build_cli(templates_root): args = _Args("install", only=["skill"], force=True, update=False, dry_run=True) parser = type("P", (), {"parse_args": lambda self: args})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) - monkeypatch.setattr(main_module.CLIParser, "resolve_targets", lambda self, _args: tmp_path) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) + monkeypatch.setattr( + main_module.CommandLineParser, "resolve_targets", lambda self, _args: tmp_path + ) monkeypatch.setattr(main_module, "CommandLineInterface", _build_cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) @@ -132,8 +134,10 @@ def test_main_global_install_defaults_to_supported_types( args = _Args("install", only=None, use_global=True) parser = type("P", (), {"parse_args": lambda self: args})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) - monkeypatch.setattr(main_module.CLIParser, "resolve_targets", lambda self, _args: tmp_path) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) + monkeypatch.setattr( + main_module.CommandLineParser, "resolve_targets", lambda self, _args: tmp_path + ) monkeypatch.setattr(main_module, "CommandLineInterface", lambda templates_root: cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) @@ -168,8 +172,10 @@ def test_main_global_install_rejects_unknown_type( args = _Args("install", only=["unknown"], use_global=True) parser = type("P", (), {"parse_args": lambda self: args})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) - monkeypatch.setattr(main_module.CLIParser, "resolve_targets", lambda self, _args: tmp_path) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) + monkeypatch.setattr( + main_module.CommandLineParser, "resolve_targets", lambda self, _args: tmp_path + ) monkeypatch.setattr(main_module, "CommandLineInterface", lambda templates_root: cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) @@ -189,8 +195,10 @@ def test_main_dispatch_verify_includes_only_filter( args = _Args("verify", use_global=True, source=False, output=True) parser = type("P", (), {"parse_args": lambda self: args})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) - monkeypatch.setattr(main_module.CLIParser, "resolve_targets", lambda self, _args: tmp_path) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) + monkeypatch.setattr( + main_module.CommandLineParser, "resolve_targets", lambda self, _args: tmp_path + ) monkeypatch.setattr(main_module, "CommandLineInterface", lambda templates_root: cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) @@ -217,8 +225,10 @@ def test_main_dispatch_uninstall(self, monkeypatch: pytest.MonkeyPatch, tmp_path args = _Args("uninstall") parser = type("P", (), {"parse_args": lambda self: args})() - monkeypatch.setattr(main_module.CLIParser, "build", lambda self: parser) - monkeypatch.setattr(main_module.CLIParser, "resolve_targets", lambda self, _args: tmp_path) + monkeypatch.setattr(main_module.CommandLineParser, "build", lambda self: parser) + monkeypatch.setattr( + main_module.CommandLineParser, "resolve_targets", lambda self, _args: tmp_path + ) monkeypatch.setattr(main_module, "CommandLineInterface", lambda templates_root: cli) monkeypatch.setattr( main_module.sys, "exit", lambda code: (_ for _ in ()).throw(SystemExit(code)) From 4c0bdeacdf2728a3927ec07ac9a3d09a8659ac77 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Tue, 21 Apr 2026 00:30:44 +0200 Subject: [PATCH 15/19] docs: align markdown documentation style - improve README structure and correct non-PyPI distribution guidance - move gstack attribution lower in the README and link to the upstream repo - add repo-wide Markdown documentation style guidance for Mermaid vs ASCII usage - modernize architecture, workflow, and design docs with Mermaid flow diagrams - keep repository and directory structure views as ASCII text where more readable --- .github/copilot-instructions.md | 12 + README.md | 448 ++++++++++++++++-------------- docs/architecture/architecture.md | 67 +++-- docs/design/design.md | 23 +- docs/design/workflow.md | 67 ++--- 5 files changed, 315 insertions(+), 302 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 465dd4d..8826347 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -101,6 +101,18 @@ Update docs whenever a change affects system structure, skill definitions, execu Every ADR must include: context, decision, alternatives considered, rationale, and impact on the Option B pipeline. +## Markdown Documentation Style + +For hand-authored Markdown in this repository, treat baseline docs as a coherent documentation system rather than isolated files. + +- Apply the same documentation style to non-generated, non-template Markdown files such as `README.md`, `CONTRIBUTING.md`, `SECURITY.md`, `CHANGELOG.md`, `docs/**/*.md`, and ADRs. +- Do not apply these rules by editing generated artifacts under `.github/` or source templates under `src/vstack/_templates/` unless the task is explicitly about those sources. +- Use Mermaid for process, flow, interaction, lifecycle, and decision diagrams when the visual structure matters more than exact monospace layout. +- Keep ASCII/text trees for repository structure, directory layout, and similar scan-friendly file hierarchies where Mermaid would reduce readability. +- Keep plain code fences for literal examples, terminal transcripts, frontmatter samples, JSON, YAML, and other content that is data rather than a diagram. +- Prefer consistency across related docs: if `README.md`, architecture docs, and workflow docs describe the same flow, they should use compatible terminology and diagram style. +- When modernizing older docs, convert diagrams selectively rather than mechanically. Preserve useful content first, then improve presentation. + ## Python Docstring Style For Python modules in this repository, treat code as the source of truth and keep docstrings aligned with shipped behavior. diff --git a/README.md b/README.md index e662f9a..deb98b3 100644 --- a/README.md +++ b/README.md @@ -1,120 +1,178 @@ # vstack -Inspired by gstack, vstack is intentionally rebuilt around a VS Code-native, -template-driven workflow model. +[![Python](https://img.shields.io/badge/python-3.11--3.14-0B8A6F)](pyproject.toml) +[![Verify](https://img.shields.io/github/actions/workflow/status/eschaar/vstack/verify.yml?branch=main&label=verify&color=1D6FA5)](https://github.com/eschaar/vstack/actions/workflows/verify.yml) +[![Security](https://img.shields.io/github/actions/workflow/status/eschaar/vstack/security.yml?branch=main&label=security&color=B15E00)](https://github.com/eschaar/vstack/actions/workflows/security.yml) +[![Runtime](https://img.shields.io/badge/runtime-stdlib%20only-5B6C8F)](pyproject.toml) +[![License](https://img.shields.io/github/license/eschaar/vstack?color=5F7A1F)](LICENSE) -vstack is a VS Code–native AI engineering workflow system. It provides structured -skills — executable by GitHub Copilot in Agent Mode — for planning, reviewing, -verifying, and releasing software. +vstack is a VS Code-native AI engineering workflow system for backend services, +libraries, APIs, and adjacent platform work. It installs structured agents, +skills, instructions, and prompts into `.github/` so GitHub Copilot Agent Mode +has a clear operating model instead of ad hoc chat prompts. -What gets built (microservice, API, package, app, fullstack system) is determined -by the product vision. vstack adapts to that vision through 6 fixed roles: -**product, architect, designer, engineer, tester, release.** +What gets built is determined by the product vision. vstack fixes the delivery +roles and boundaries: `product`, `architect`, `designer`, `engineer`, `tester`, +and `release`. + +vstack started as a rethink inspired by [gstack](https://github.com/observiq/gstack), +but was rebuilt around a template-driven, VS Code-first workflow model. + +______________________________________________________________________ + +## Why vstack + +- Fixed role model with explicit ownership boundaries +- Template-driven install model from `src/vstack/_templates/` +- Backend-first verification, security, and release discipline +- No runtime dependencies beyond the Python standard library +- Works at project scope or globally in the VS Code user profile ______________________________________________________________________ -## install +## Quickstart Requires **Python 3.11-3.14**. +### Distribution status + +vstack is not published to PyPI yet. The current workflow is source-based usage +from this repository. + +### 1. Clone and install the development environment + ```bash -pip install vstack +git clone git@github.com:eschaar/vstack.git +cd vstack +poetry install ``` -Then install vstack artifacts into your project: +### 2. Install the artifacts + +From the checked-out repository, install artifacts into one repository: ```bash -vstack install --target /path/to/your/project +poetry run vstack install --target /path/to/your/project ``` -Or into the VS Code user profile (available in all projects for agents/prompts/instructions/skills): +Or install into your VS Code profile so the artifacts are available across projects: ```bash -vstack install --global +poetry run vstack install --global +``` + +If you prefer, you can also run the package entrypoint after an editable install in +your active environment. + +### 3. Open Copilot Agent Mode and invoke a role + +```text +@product Review my plan for a payments service +@architect Review the API contracts in src/api/ +@tester /security Audit the authentication module +``` + +No extra VS Code settings are required. Installed role agents are discovered from +workspace `.github/agents/` and from the VS Code user profile. + +______________________________________________________________________ + +## Flow + +```mermaid +flowchart LR + A[Product intent] --> B[@product] + B --> C[@architect] + C --> D[@designer] + D --> E[@engineer] + E --> F[@tester] + F --> G[@release] + B -. focused procedure .-> H[/requirements or vision/] + F -. focused procedure .-> I[/verify, security, performance/] ``` -No extra VS Code settings needed. Agents are auto-discovered from `.github/agents/` -in the workspace and from the user profile agents directory. Skills installed globally -are available under the VS Code user profile skills directory. +The exact deliverable can be a microservice, API, package, library, app, or broader +system. The product vision defines scope; vstack defines how the work is carried. ______________________________________________________________________ -## agent and skill usage +## Building Blocks -### Agents vs. skills: what is the difference? +| Artifact type | Purpose | Typical invocation | +| ------------- | ---------------------------------------------------------- | ---------------------- | +| Agents | Main operating interface for role-based work | `@product`, `@tester` | +| Skills | Reusable task procedures | `/verify`, `/security` | +| Instructions | Baseline policy and repo guardrails | auto-loaded by context | +| Prompts | Reusable prompt artifacts where direct prompting is useful | explicit prompt use | -- **Agents** (like `@product`, `@tester`) are the main interface. Use them for all primary flows. Agents automatically select the right skills for their role and context. -- **Skills** (like `/verify`, `/security`) can be invoked directly if you want to force a specific check. This is optional and usually not needed. +Boundary rule: -### Policies vs. procedures +- Policies belong in instructions. +- Procedures belong in skills. -- **Instructions** define baseline policy and conventions (for example safety rules, - language coding standards, and repository guardrails). -- **Skills** define task procedures (for example debug, migration review, or - performance analysis flows). +See [docs/design/instructions.md](docs/design/instructions.md), +[docs/design/skills.md](docs/design/skills.md), and +[docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md). -Decision reference: +______________________________________________________________________ -- [docs/design/instructions.md](docs/design/instructions.md) -- [docs/design/skills.md](docs/design/skills.md) -- [docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md) +## Roles -#### Invocation examples +| Role | Invocation | Primary areas | +| --------- | ------------ | ------------------------------------------------------- | +| product | `@product` | vision, requirements, onboarding, docs | +| architect | `@architect` | architecture, ADRs | +| designer | `@designer` | service design, OpenAPI, DX review | +| engineer | `@engineer` | implementation, debugging, refactoring, dependency work | +| tester | `@tester` | verification, security, incident review, performance | +| release | `@release` | release notes, PR creation, release gating | -| Goal | Agent invocation | Optionally: direct skill invocation | -| --------------------- | ---------------- | ----------------------------------- | -| Gather requirements | `@product` | | -| Architecture review | `@architect` | | -| API design | `@designer` | | -| Code review | `@engineer` | `/code-review` | -| Verification/QA | `@tester` | `/verify` | -| Security check | `@tester` | `/security` | -| Performance benchmark | `@tester` | `/performance` | -| Prepare release | `@release` | | +Full skill index: [docs/design/skills.md](docs/design/skills.md) -> **Note:** You can also force a skill via an agent, e.g. `@tester /security` for a security check by the tester agent. +______________________________________________________________________ -#### Subagent pattern +## Example Usage -The product agent can invoke other agents as subagents to orchestrate a complete flow: +### Idea to release -```text -@product Deliver a requirements-to-release plan for a new payments service -``` +1. `@product` to lock requirements and success criteria +1. `@architect` to define service boundaries and ADRs +1. `@designer` to define APIs, schemas, and flows +1. `@engineer` to implement +1. `@tester` to verify behavior and risk +1. `@release` to prepare the release path -This automatically triggers: +### Direct skill usage when you want a focused tool -- @product → requirements -- @architect → architecture -- @designer → API contract -- @engineer → implementation -- @tester → verification -- @release → release gating +| Goal | Agent invocation | Optional direct skill | +| ------------------- | ---------------- | --------------------- | +| Requirements | `@product` | | +| Architecture review | `@architect` | | +| API design | `@designer` | | +| Code review | `@engineer` | `/code-review` | +| Verification | `@tester` | `/verify` | +| Security audit | `@tester` | `/security` | +| Performance check | `@tester` | `/performance` | -#### Use case 1: New API from idea to release +You can also force a skill through an agent when you want the role framing and the +procedure together, for example `@tester /security`. -1. `@product` — (agent, requirements and acceptance) -1. `@architect` — (agent, architecture review) -1. `@designer` — (agent, OpenAPI spec) -1. `@engineer` — (agent, implementation) -1. `@tester` — (agent, full QA) -1. `@tester /security` — (agent with explicit skill invocation, security check) -1. `@release` — (agent, release gating) +### Subagent pattern -#### Use case 2: Security regression in authentication +The product agent can invoke other agents as subagents to orchestrate a complete flow: -1. `@tester /security` — (agent with explicit skill invocation) -1. `@engineer` — (agent, bugfix) -1. `@tester` — (agent, re-verification) -1. `@release` — (agent, release) +```text +@product Deliver a requirements-to-release plan for a new payments service +``` -#### Use case 3: Refactor and performance improvement +Typical downstream path: -1. `@engineer` — (agent, refactor) -1. `@tester /performance` — (agent with explicit skill invocation) -1. `@engineer` — (agent, optimization) -1. `@tester` — (agent, confirm performance gain) -1. `@release` — (agent, release) +- `@product` -> requirements +- `@architect` -> architecture +- `@designer` -> API contract +- `@engineer` -> implementation +- `@tester` -> verification +- `@release` -> release gating ______________________________________________________________________ @@ -122,12 +180,11 @@ ______________________________________________________________________ ### 1. Open Copilot Chat -`Ctrl+Shift+I` (or `Cmd+Shift+I`) — or click the Copilot icon in the sidebar. +Use `Ctrl+Shift+I` or `Cmd+Shift+I`, or click the Copilot icon in the sidebar. ### 2. Switch to Agent Mode -In the Copilot Chat panel, click the mode selector (shows "Ask" by default) and -switch to **Agent**. +In the Copilot Chat panel, switch the mode selector from `Ask` to `Agent`. ### 3. Invoke a role @@ -138,8 +195,8 @@ switch to **Agent**. @tester Run a security audit ``` -Each role agent uses the appropriate skills automatically. -You can also ask a role to use a specific skill: +Each role agent uses the appropriate skills automatically. You can also ask a role +to use a specific skill: ```text @tester use the verify skill with regression focus and report findings @@ -157,11 +214,9 @@ You can also ask a role to use a specific skill: | tester | `@tester` | verify, inspect, security, incident, dependency, docs | ultra | | release | `@release` | release-notes, pr, docs | compact | -Full skill index: [docs/design/skills.md](docs/design/skills.md) - ______________________________________________________________________ -## model guidance +## Model Guidance | Use case | Recommended model | | ------------------------ | ------------------------------------ | @@ -174,64 +229,62 @@ ______________________________________________________________________ Claude Sonnet 4.6 is the best balance of speed, quality, and cost for most runs. Use Claude Opus 4.6 for architecture reviews or complex debugging. -In Copilot Chat, click the model selector to switch. - ______________________________________________________________________ -## tips +## Tips -**Give the agent your project context:** +### Give the agent project context ```text /verify Please first read CONTRIBUTING.md for test commands ``` -**Scope the agent's focus:** +### Scope the agent's focus ```text /code-review Review changes in src/api/ only /security Audit the authentication module in src/auth/ ``` -**Controlling response verbosity:** +### Control response verbosity -Every role agent supports the `concise` skill. Switch response density without regenerating any artifacts: +Every role agent supports the `concise` skill: ```text -/concise normal — full explanations (architect default) -/concise compact — shorter prose, same technical accuracy (most role default) -/concise ultra — maximum brevity, facts and commands only (tester default) -/concise status — show active mode, session override, and agent default -/concise on — alias for compact -/concise off — alias for normal +/concise normal - full explanations +/concise compact - shorter prose, same technical accuracy +/concise ultra - maximum brevity +/concise status - show active mode, session override, and agent default +/concise on - alias for compact +/concise off - alias for normal ``` -The mode is session-scoped — no reinstall needed. Security warnings and destructive -action prompts always use `normal` regardless of active mode. +The mode is session-scoped. Security warnings and destructive action prompts always +use `normal` regardless of active mode. -**Typical workflow for a new feature:** +### Typical workflow for a new feature ```text -1. /vision — validate the approach -2. /architecture — lock down the technical design +1. /vision +2. /architecture 3. (implement) -4. /verify — test and validate -5. /release — cut the release +4. /verify +5. /release ``` ______________________________________________________________________ -## development +## Development Requires **Poetry** and **Python 3.11-3.14**. ```bash -git clone https://github.com/your-org/vstack +git clone git@github.com:eschaar/vstack.git cd vstack poetry install ``` -### quick commands (make) +### Common commands ```bash make help @@ -240,57 +293,16 @@ make install make check make vstack-install make ci +poetry run vstack validate +poetry run vstack install +poetry run vstack verify +make test-local +make test +make tox +make tox-all ``` -### development tasks - -```bash -poetry run vstack validate # validate templates without writing files -poetry run vstack install # install all artifacts -> .github/ -poetry run vstack verify # full validation suite -make test-local # run pytest on current interpreter -make test # run tests on py311-py314 via tox -make tox # run tests on py311-py314 (when installed) -``` - -### GitHub Actions (CI/CD) - -This repository uses dedicated workflows for branch QA, pull request verification, -security checks, commit policy enforcement, and release automation. - -| Workflow file | Trigger | Purpose | -| -------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `.github/workflows/qa.yml` | `push` (all branches except `main`) | Fast branch feedback: format, lint, typecheck, and test matrix (Python 3.11-3.14). | -| `.github/workflows/commit.yml` | `push` (excludes `main`, `master`, `merge/**`, `gh-readonly-queue/**`) | Enforce commit message policy on branch pushes before PR merge. | -| `.github/workflows/verify.yml` | `pull_request` to `main` | Run unit tests and verify installability/validity of generated artifacts. | -| `.github/workflows/security.yml` | `pull_request` to `main` | Run dependency audit and secret scanning on the PR diff. | -| `.github/workflows/release.yml` | `pull_request` closed on `main` (merged only) | Compute semantic version, create tag and GitHub release, build package artifacts. | - -Commit policy specifics: - -- Type validation is configured inline via `CCHK_*` environment variables in `.github/workflows/commit.yml` and enforced by `commit-check/commit-check-action`. -- Commit subject length is limited to 100 characters in `.github/workflows/commit.yml`. -- Branch naming is validated with Conventional Branch format (`type/description`) in `.github/workflows/commit.yml`. -- Allowed branch types are: `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. -- Dependabot commit prefixes are configured in `.github/dependabot.yml` as `chore(deps)` for Python updates and `chore(ci)` for GitHub Actions updates. -- Scope allowlist validation is enforced in `.github/workflows/commit.yml`. -- Release version bump policy is mapped in `.github/workflows/release.yml`: - - minor: `feat`, `feature` - - patch: `fix`, `bugfix`, `hotfix`, `opt`, `patch`, `perf`, `refactor`, `chore`, `revert` - -Recommended branch protection for `main`: - -- Require PR before merge. -- Require all status checks from `verify.yml` and `security.yml`. -- Optionally require `qa.yml` if you use direct pushes to long-lived non-main branches. -- Disallow force pushes and branch deletion. - -### local multi-python testing (pyenv + tox) - -This repository keeps its local interpreter order in `.python-version` so `tox` -can resolve the supported runtimes consistently. - -Install and activate the supported Python runtimes with `pyenv`: +### Multi-version local testing with pyenv ```bash pyenv install 3.11.14 @@ -300,16 +312,10 @@ pyenv install 3.14.3 pyenv local 3.14.3 3.13.12 3.12.12 3.11.14 ``` -That command writes the repo-local `.python-version` file. - -Run cross-version tests locally: - -```bash -make tox # pytest on py311, py312, py313, py314 -make tox-all # all tox envs: tests + lint + type -``` +### Editing templates -**Editing templates:** source of truth is always `src/vstack/_templates///{config.yaml,template.md}`. Never edit generated files in `.github/`. +Source of truth is always under `src/vstack/_templates/`. Do not edit generated +files in `.github/`. ```bash vim src/vstack/_templates/skills/verify/template.md @@ -317,71 +323,82 @@ vim src/vstack/_templates/agents/engineer/template.md vim src/vstack/_templates/instructions/python/template.md poetry run vstack validate poetry run pytest +poetry run vstack install ``` ______________________________________________________________________ -## project structure +## Repository Structure -```bash +```text vstack/ -├── src/vstack/ ← Python package (source of truth) -│ ├── frontmatter/ ← parser, builder, schema -│ ├── artifacts/ ← GenericArtifactGenerator -│ ├── skills/ ← SKILL_SCHEMA, SKILL_TYPE -│ ├── agents/ ← AGENT_SCHEMA, AGENT_TYPE -│ ├── instructions/ ← instruction artifact config + generator -│ ├── prompts/ ← prompt artifact config + generator -│ ├── cli/ ← commands, parser, constants -│ └── _templates/ -│ ├── skills//config.yaml ← skill frontmatter fields -│ ├── skills//template.md ← skill instructions body -│ ├── skills/_partials/ ← shared partials -│ ├── agents//config.yaml ← agent frontmatter fields -│ ├── agents//template.md ← agent instructions body -│ ├── instructions//config.yaml ← instruction frontmatter -│ ├── instructions//template.md ← instruction body -│ ├── prompts//config.yaml ← prompt frontmatter -│ └── prompts//template.md ← prompt body +├── src/vstack/ ← Python package and source of truth +│ ├── artifacts/ ← generic artifact generation and metadata +│ ├── frontmatter/ ← parser, serializer, schema +│ ├── agents/ ← agent configuration and wrappers +│ ├── skills/ ← skill configuration and wrappers +│ ├── instructions/ ← instruction configuration and wrappers +│ ├── prompts/ ← prompt configuration and wrappers +│ ├── cli/ ← install, verify, uninstall, parser +│ └── _templates/ ← hand-authored templates ├── docs/ -│ ├── architecture/ -│ │ ├── architecture.md ← system structure -│ │ └── adr/ ← architecture decision records -│ ├── design/ -│ │ ├── design.md ← generator and builder internals -│ │ ├── instructions.md ← instruction model and policy scope -│ │ ├── skills.md ← full skill index -│ │ └── workflow.md ← execution model -│ └── product/ -│ ├── requirements.md -│ ├── roadmap.md ← milestones -│ └── vision.md -├── tests/ -│ └── vstack/ -└── Makefile ← generic local dev tasks +│ ├── architecture/ ← architecture docs and ADRs +│ ├── design/ ← design, workflow, skills, instructions +│ └── product/ ← vision, requirements, roadmap +├── tests/ ← unit and integration coverage +├── .github/ ← generated artifacts and repository automation +├── pyproject.toml ← packaging and tooling config +└── Makefile ← local development tasks ``` ______________________________________________________________________ -## troubleshooting +## CI and Release Automation + +| Workflow | Trigger | Purpose | +| -------------- | ----------------------------- | ----------------------------------------------------------- | +| `qa.yml` | Push to non-main branches | fast branch feedback for format, lint, typecheck, and tests | +| `commit.yml` | Push to non-main branches | commit and branch naming policy enforcement | +| `verify.yml` | Pull request to `main` | source validation plus install/verify flow checks | +| `security.yml` | Pull request to `main` | dependency audit and secret scanning | +| `release.yml` | Merged pull request to `main` | SemVer calculation, tag, release, and distributions | -**Agents not appearing:** +Commit policy specifics: -1. Run `poetry run vstack install --global` (or `vstack install --global`) -1. Ensure templates exist under `src/vstack/_templates/agents/` -1. Reload VS Code: `Ctrl+Shift+P` → `Developer: Reload Window` +- Type validation is configured via `CCHK_*` variables in `.github/workflows/commit.yml`. +- Commit subject length is limited to 100 characters. +- Branch names use the `type/description` convention. +- Allowed branch types are `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, and `dependabot`. -**Best-practice local workflow:** +Recommended branch protection for `main`: -1. `make bootstrap` once per machine/repo clone -1. `make check` before every commit -1. `make ci` to mirror the quality gate locally +- Require PR before merge. +- Require status checks from `verify.yml` and `security.yml`. +- Disallow force pushes and branch deletion. -**Agent is not running commands:** -Make sure you are in **Agent Mode** — not Ask or Edit mode. +______________________________________________________________________ -**Agent search is noisy (dependency folders):** -Use workspace-local exclusions in VS Code to keep context focused. +## Troubleshooting + +### Agents are not appearing + +1. Run `vstack install --global` or `poetry run vstack install --global` +1. Confirm the templates exist under `src/vstack/_templates/agents/` +1. Reload VS Code with `Developer: Reload Window` + +### Agent is not running commands + +Make sure Copilot is in Agent Mode, not Ask or Edit mode. + +### Best-practice local workflow + +1. Run `make bootstrap` once per machine or clone. +1. Run `make check` before every commit. +1. Run `make ci` when you want to mirror the main quality gate locally. + +### Search results are noisy + +Use workspace-local exclusions in VS Code: ```json { @@ -410,12 +427,17 @@ Use workspace-local exclusions in VS Code to keep context focused. ______________________________________________________________________ -## roadmap +## Further Reading -See [docs/product/roadmap.md](docs/product/roadmap.md) +- [docs/architecture/architecture.md](docs/architecture/architecture.md) +- [docs/design/design.md](docs/design/design.md) +- [docs/design/workflow.md](docs/design/workflow.md) +- [docs/design/skills.md](docs/design/skills.md) +- [docs/product/roadmap.md](docs/product/roadmap.md) +- [CONTRIBUTING.md](CONTRIBUTING.md) ______________________________________________________________________ -## license +## License MIT. See [LICENSE](LICENSE). diff --git a/docs/architecture/architecture.md b/docs/architecture/architecture.md index ec7c360..cd99907 100644 --- a/docs/architecture/architecture.md +++ b/docs/architecture/architecture.md @@ -1,7 +1,7 @@ # vstack — architecture > Maintained by: **agents** role\ -> Last updated: 2026-04-01 +> Last updated: 2026-04-21 ## overview @@ -16,34 +16,26 @@ ______________________________________________________________________ ```text vstack/ ├── src/vstack/ ← Python package (source of truth) -│ ├── frontmatter/ ← parser, builder, schema +│ ├── frontmatter/ ← parser, serializer, schema │ ├── artifacts/ ← GenericArtifactGenerator, ArtifactTypeConfig │ ├── skills/ ← SKILL_SCHEMA, SKILL_TYPE │ ├── agents/ ← AGENT_SCHEMA, AGENT_TYPE -│ └── cli/ ← commands, parser, constants -├── _templates/ -│ ├── skills/ -│ │ ├── / -│ │ │ ├── config.yaml ← skill frontmatter fields -│ │ │ └── template.md ← skill instructions body -│ │ └── _partials/ -│ │ └── *.md ← shared partial snippets -│ └── agents/ -│ └── / -│ ├── template.md ← agent instructions body -│ └── config.yaml ← agent frontmatter fields -├── test/ -│ └── test_skills.py +│ ├── instructions/ ← instruction config and wrappers +│ ├── prompts/ ← prompt config and wrappers +│ ├── cli/ ← commands, parser, constants +│ └── _templates/ ← source templates for all artifact types ├── docs/ -│ ├── architecture.md ← this file (architect) -│ ├── design.md ← component design (designer) -│ ├── roadmap.md ← milestones + vision (product) -│ ├── skills.md ← skill reference -│ ├── workflow.md ← execution flow -│ └── adr/ ← architecture decision records +│ ├── architecture/ ← architecture docs + ADRs +│ ├── design/ ← design, workflow, skills, instructions +│ └── product/ ← roadmap, requirements, vision +├── tests/ +│ └── vstack/ ├── .github/ ← generated output (never edit directly) │ ├── skills//SKILL.md -│ └── agents/.agent.md +│ ├── agents/.agent.md +│ ├── instructions/.instructions.md +│ ├── prompts/.prompt.md +│ └── vstack.json └── README.md ``` @@ -135,26 +127,29 @@ ______________________________________________________________________ ### current execution model — single-call -Copilot reads a `SKILL.md` file and executes the workflow in a single context window. +Copilot executes the selected role or skill in a single context window. -```text -User → /skill-name → Copilot reads .github/agents/.agent.md - → Executes steps in one model call - → Writes output to disk +```mermaid +flowchart LR + U[User request in Agent Mode] --> A[Installed agent or skill artifact] + A --> C[Single model call] + C --> D[Writes docs, code, or reports to disk] ``` ### possible future model — orchestrated role pipeline Each role makes its own model call. Output artifacts are passed to the next role. -```text -User → product (intake) - → architect (design) - → designer (specs) [conditional: frontend scope] - → engineer (build) - → tester (validate + audit) - → product (sign-off) [gate: user approval] - → release (deploy + monitor) +```mermaid +flowchart TD + U[User request] --> P[product] + P --> A[architect] + A --> D[designer] + D --> E[engineer] + E --> T[tester] + T --> G{User sign-off} + G --> R[release] + D -. backend-only path can skip designer .-> E ``` See `docs/architecture/adr/004-option-a-to-b-pipeline.md` and `docs/design/workflow.md` for pipeline detail. diff --git a/docs/design/design.md b/docs/design/design.md index 228401b..2339720 100644 --- a/docs/design/design.md +++ b/docs/design/design.md @@ -1,7 +1,7 @@ # vstack — design > Maintained by: **designer** role\ -> Last updated: 2026-04-01 +> Last updated: 2026-04-21 ## overview @@ -20,17 +20,16 @@ expressed through an `ArtifactTypeConfig` descriptor rather than subclass overri ### execution flow -```text -1. Discover template directories in src/vstack/_templates// (skip _-prefixed dirs) -2. For each template directory: - a. Load config.yaml (agent frontmatter source) or parse frontmatter - from template.md (skills) - b. Validate frontmatter fields against the artifact schema - c. Load partials from `src/vstack/_templates//_partials/` (when `partials_subdir` is configured) - d. Resolve {{PLACEHOLDER}} tokens in the body - e. Inject frontmatter header + auto-gen footer -3. install: write output files to target dir -4. validate / verify: validate all templates; print summary; exit 1 on error +```mermaid +flowchart TD + A[Discover template directories
skip underscore-prefixed dirs] --> B[Load per-template source] + B --> C[Validate frontmatter against schema] + C --> D[Load partials when configured] + D --> E[Resolve placeholder tokens] + E --> F[Inject frontmatter and footer] + F --> G{Command mode} + G -->|install| H[Write output files to target directory] + G -->|validate or verify| I[Validate templates and report failures] ``` ### frontmatter architecture (`src/vstack/frontmatter/`) diff --git a/docs/design/workflow.md b/docs/design/workflow.md index 8130949..0f9881d 100644 --- a/docs/design/workflow.md +++ b/docs/design/workflow.md @@ -1,7 +1,7 @@ # vstack — workflow > Maintained by: **designer** role\ -> Last updated: 2026-04-20 +> Last updated: 2026-04-21 ## overview @@ -61,16 +61,15 @@ ______________________________________________________________________ ## current execution model — single-call -The user invokes a skill from Copilot Agent Mode. Copilot loads the corresponding -`.agent.md` file and executes the full workflow in a single model call. +The user invokes a role or skill from Copilot Agent Mode. Copilot loads the +relevant installed artifact and executes the full workflow in a single model call. -```text -User types: @ - - → VS Code loads .github/agents/.agent.md - → Copilot executes all steps in one context window - → Artifacts written to disk (docs/architecture/architecture.md, docs/test-report.md, etc.) - → Done +```mermaid +flowchart LR + U[User request in Agent Mode] --> V[VS Code loads installed agent or skill] + V --> C[Copilot executes one context window] + C --> W[Artifacts written to disk] + W --> D[Done] ``` **Characteristics:** @@ -87,32 +86,17 @@ ______________________________________________________________________ Each role becomes a separate model call. Output artifacts from one role become the input context for the next. -```text -┌─────────────────────────────────────────────────────────────────┐ -│ PIPELINE │ -│ │ -│ product ──→ [vision.md, requirements.md, roadmap.md] │ -│ ↓ │ -│ architect ──→ [architecture/architecture.md, architecture/adr/*.md] │ -│ ↓ │ -│ designer ──→ [design/design.md] (skip if backend-only) │ -│ ↓ │ -│ ┌── USER GATE 1: approve requirements + design ──┐ │ -│ └────────────────────────────────────────────────┘ │ -│ ↓ │ -│ engineer ──→ [code + unit tests] │ -│ ↓ │ -│ tester ──→ [test-report.md, security-report.md, performance-baseline.md] │ -│ ↓ │ -│ ┌── USER GATE 2: pre-prod sign-off ──┐ │ -│ └─────────────────────────────────────┘ │ -│ ↓ │ -│ ┌── USER GATE 3: final merge approval ──┐ │ -│ └────────────────────────────────────────┘ │ -│ ↓ │ -│ release ──→ [releases/{date}.md, CHANGELOG.md, PR] │ -│ │ -└─────────────────────────────────────────────────────────────────┘ +```mermaid +flowchart TD + P[product
vision.md
requirements.md
roadmap.md] --> A[architect
architecture.md
adr/*.md] + A --> D[designer
design.md] + D --> G1{User gate 1
requirements and design} + D -. backend-only path .-> G1 + G1 --> E[engineer
code and unit tests] + E --> T[tester
test-report.md
security-report.md
performance-baseline.md] + T --> G2{User gate 2
pre-prod sign-off} + G2 --> G3{User gate 3
final merge approval} + G3 --> R[release
releases/{date}.md
CHANGELOG.md
PR] ``` **Characteristics:** @@ -168,11 +152,12 @@ ______________________________________________________________________ Skills are the HOW inside a role call. -```text -Role call → loads role persona - → selects applicable skills - → executes skill steps sequentially - → writes output artifacts +```mermaid +flowchart LR + R[Role call] --> P[Load role persona] + P --> S[Select applicable skills] + S --> E[Execute skill steps] + E --> W[Write output artifacts] ``` A role may use multiple skills in sequence within one model call. For example, From 7cbd60ed6336e5d01e405d25b7fa01b9696f2550 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Tue, 21 Apr 2026 00:38:48 +0200 Subject: [PATCH 16/19] refactor(skills): adopt Mermaid-first diagram convention - add a shared diagram convention to the skill context partial - replace explicit ASCII-first guidance in architecture, vision, design, and explore templates - keep ASCII as a fallback and for scan-friendly tree structures - bump skill artifact versions so downstream installs receive the convention update - regenerate .github skill artifacts and manifest from the updated templates --- .github/skills/adr/SKILL.md | 10 +++- .github/skills/analyse/SKILL.md | 10 +++- .github/skills/architecture/SKILL.md | 29 +++++----- .github/skills/cicd/SKILL.md | 10 +++- .github/skills/code-review/SKILL.md | 10 +++- .github/skills/concise/SKILL.md | 10 +++- .github/skills/consult/SKILL.md | 10 +++- .github/skills/container/SKILL.md | 10 +++- .github/skills/debug/SKILL.md | 10 +++- .github/skills/dependency/SKILL.md | 10 +++- .github/skills/design/SKILL.md | 35 ++++++++---- .github/skills/docs/SKILL.md | 10 +++- .github/skills/explore/SKILL.md | 29 ++++++---- .github/skills/guardrails/SKILL.md | 10 +++- .github/skills/incident/SKILL.md | 10 +++- .github/skills/inspect/SKILL.md | 10 +++- .github/skills/migrate/SKILL.md | 10 +++- .github/skills/onboard/SKILL.md | 10 +++- .github/skills/openapi/SKILL.md | 10 +++- .github/skills/performance/SKILL.md | 10 +++- .github/skills/pr/SKILL.md | 10 +++- .github/skills/refactor/SKILL.md | 10 +++- .github/skills/release-notes/SKILL.md | 10 +++- .github/skills/requirements/SKILL.md | 10 +++- .github/skills/security/SKILL.md | 10 +++- .github/skills/verify/SKILL.md | 10 +++- .github/skills/vision/SKILL.md | 12 +++- .github/vstack.json | 56 +++++++++---------- .../skills/_partials/skill-context.md | 8 +++ src/vstack/_templates/skills/adr/config.yaml | 2 +- .../_templates/skills/analyse/config.yaml | 2 +- .../skills/architecture/config.yaml | 2 +- .../skills/architecture/template.md | 19 +++---- src/vstack/_templates/skills/cicd/config.yaml | 2 +- .../_templates/skills/code-review/config.yaml | 2 +- .../_templates/skills/concise/config.yaml | 2 +- .../_templates/skills/consult/config.yaml | 2 +- .../_templates/skills/container/config.yaml | 2 +- .../_templates/skills/debug/config.yaml | 2 +- .../_templates/skills/dependency/config.yaml | 2 +- .../_templates/skills/design/config.yaml | 2 +- .../_templates/skills/design/template.md | 25 ++++++--- src/vstack/_templates/skills/docs/config.yaml | 2 +- .../_templates/skills/explore/config.yaml | 2 +- .../_templates/skills/explore/template.md | 19 +++---- .../_templates/skills/guardrails/config.yaml | 2 +- .../_templates/skills/incident/config.yaml | 2 +- .../_templates/skills/inspect/config.yaml | 2 +- .../_templates/skills/migrate/config.yaml | 2 +- .../_templates/skills/onboard/config.yaml | 2 +- .../_templates/skills/openapi/config.yaml | 2 +- .../_templates/skills/performance/config.yaml | 2 +- src/vstack/_templates/skills/pr/config.yaml | 2 +- .../_templates/skills/refactor/config.yaml | 2 +- .../skills/release-notes/config.yaml | 2 +- .../skills/requirements/config.yaml | 2 +- .../_templates/skills/security/config.yaml | 2 +- .../_templates/skills/verify/config.yaml | 2 +- .../_templates/skills/vision/config.yaml | 2 +- .../_templates/skills/vision/template.md | 2 +- 60 files changed, 372 insertions(+), 146 deletions(-) diff --git a/.github/skills/adr/SKILL.md b/.github/skills/adr/SKILL.md index 61d0815..588879d 100644 --- a/.github/skills/adr/SKILL.md +++ b/.github/skills/adr/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # adr — Architecture Decision Record Document a significant technical decision so future contributors understand @@ -191,4 +199,4 @@ After writing, state the file path and summary so the architect or product role ______________________________________________________________________ - + diff --git a/.github/skills/analyse/SKILL.md b/.github/skills/analyse/SKILL.md index 0a74368..34bf610 100644 --- a/.github/skills/analyse/SKILL.md +++ b/.github/skills/analyse/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -219,4 +227,4 @@ ______________________________________________________________________ ______________________________________________________________________ - + diff --git a/.github/skills/architecture/SKILL.md b/.github/skills/architecture/SKILL.md index c9de694..003baaf 100644 --- a/.github/skills/architecture/SKILL.md +++ b/.github/skills/architecture/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # architecture — Engineering Plan Review Review the plan before any code is written. Identify issues, give opinionated @@ -66,7 +74,7 @@ If running low on context or asked to compress: Step 0 > Service/contract diagra - Observability is not optional — new codepaths need logs, metrics, or traces. - Security is not optional — new codepaths need threat modeling. - Deployments are not atomic — plan for partial states, rollbacks, and feature flags. -- ASCII diagrams for all data flows, state machines, service dependencies. +- Diagrams for all data flows, state machines, and service dependencies. ## Cognitive Patterns — How Great Engineering Leads Think @@ -115,18 +123,13 @@ Before reviewing anything, answer: ## Step 1: Service Boundary & Data Model Review -Produce an ASCII diagram of the service topology: +Produce a service topology diagram. Prefer Mermaid when possible; use ASCII only +as a fallback when Mermaid would be less clear or unsupported. -```text -┌───────────────┐ HTTP/gRPC ┌───────────────┐ -│ Service A │ ─────────────────────▶│ Service B │ -│ (this plan) │ │ (existing) │ -└───────┬───────┘ └───────────────┘ - │ publishes - ▼ -┌───────────────┐ -│ Event Bus │ -└───────────────┘ +```mermaid +flowchart LR + A[Service A
this plan] -->|HTTP or gRPC| B[Service B
existing] + A -->|publishes| C[Event Bus] ``` Review: @@ -277,4 +280,4 @@ For each significant structural decision made during this review (technology cho ______________________________________________________________________ - + diff --git a/.github/skills/cicd/SKILL.md b/.github/skills/cicd/SKILL.md index 1b7aec4..ae5ed5c 100644 --- a/.github/skills/cicd/SKILL.md +++ b/.github/skills/cicd/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # cicd — GitHub Actions Workflows Write CI/CD pipeline configuration as `.github/workflows/*.yml` files. @@ -193,4 +201,4 @@ ______________________________________________________________________ ______________________________________________________________________ - + diff --git a/.github/skills/code-review/SKILL.md b/.github/skills/code-review/SKILL.md index e0cecd6..87214ed 100644 --- a/.github/skills/code-review/SKILL.md +++ b/.github/skills/code-review/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -211,4 +219,4 @@ Confidence: [HIGH/MEDIUM/LOW — explain if not HIGH] ______________________________________________________________________ - + diff --git a/.github/skills/concise/SKILL.md b/.github/skills/concise/SKILL.md index ffc3480..9f21470 100644 --- a/.github/skills/concise/SKILL.md +++ b/.github/skills/concise/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # concise — Runtime Response Style Mode Control response brevity at runtime without regenerating any agent artifacts. @@ -152,4 +160,4 @@ ______________________________________________________________________ - [ ] User confirmation/status returned in deterministic format - + diff --git a/.github/skills/consult/SKILL.md b/.github/skills/consult/SKILL.md index 63375ea..ae12e15 100644 --- a/.github/skills/consult/SKILL.md +++ b/.github/skills/consult/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # consult — DX Triage and Focused Review Classify the request first, then run exactly one focused DX review path. @@ -219,4 +227,4 @@ reason: [one sentence] ______________________________________________________________________ - + diff --git a/.github/skills/container/SKILL.md b/.github/skills/container/SKILL.md index ba2be01..b0f99d8 100644 --- a/.github/skills/container/SKILL.md +++ b/.github/skills/container/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # container — Dockerfile & Compose Write production-grade container configuration for the service. @@ -146,4 +154,4 @@ ______________________________________________________________________ ______________________________________________________________________ - + diff --git a/.github/skills/debug/SKILL.md b/.github/skills/debug/SKILL.md index e2d6a66..5b4920c 100644 --- a/.github/skills/debug/SKILL.md +++ b/.github/skills/debug/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # debug — Systematic Root-Cause Investigation Investigate and fix bugs using the scientific method. No patches without understanding @@ -271,4 +279,4 @@ Prevention: [any follow-up items] ______________________________________________________________________ - + diff --git a/.github/skills/dependency/SKILL.md b/.github/skills/dependency/SKILL.md index bf74c34..de1740b 100644 --- a/.github/skills/dependency/SKILL.md +++ b/.github/skills/dependency/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # dependency — Dependency Health Audit Audit the health, security, and compliance of project dependencies. Covers @@ -317,4 +325,4 @@ Action items (priority order): ``` - + diff --git a/.github/skills/design/SKILL.md b/.github/skills/design/SKILL.md index bb39764..8136908 100644 --- a/.github/skills/design/SKILL.md +++ b/.github/skills/design/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # design — API & Service Design Produce a complete service or API design document from minimal input. The output @@ -77,15 +85,22 @@ For each resource/entity in the domain: 1. **Lifecycle:** What states can it be in? 1. **Relationships:** What resources does it reference? -Produce an entity diagram: - -```text -┌──────────┐ 1:N ┌──────────────┐ -│ User │ ──────────▶ │ Order │ -│ id │ │ id │ -│ email │ │ user_id (fk) │ -│ name │ │ status │ -└──────────┘ └──────────────┘ +Produce an entity diagram. Prefer Mermaid when possible; use ASCII as a fallback +only when Mermaid support is unavailable or would reduce clarity. + +```mermaid +erDiagram + USER ||--o{ ORDER : places + USER { + string id + string email + string name + } + ORDER { + string id + string user_id + string status + } ``` ______________________________________________________________________ @@ -248,4 +263,4 @@ Output a complete design document to `docs/design/design.md` or `openapi.yaml`: ______________________________________________________________________ - + diff --git a/.github/skills/docs/SKILL.md b/.github/skills/docs/SKILL.md index 659dc2f..ebc9f46 100644 --- a/.github/skills/docs/SKILL.md +++ b/.github/skills/docs/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -159,4 +167,4 @@ Skipped (n/a): ______________________________________________________________________ - + diff --git a/.github/skills/explore/SKILL.md b/.github/skills/explore/SKILL.md index 6096521..d91d4a0 100644 --- a/.github/skills/explore/SKILL.md +++ b/.github/skills/explore/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # explore — Codebase & Architecture Discovery Map an unfamiliar codebase and produce a structured onboarding summary. @@ -189,49 +197,48 @@ Type: [API service / library / CLI / worker / ...] Stack: [language, framework, runtime versions] ### Architecture -[ASCII diagram of service topology or module structure] - -┌─────────────────┐ HTTP ┌──────────────┐ -│ [This service] │ ──────────▶ │ [Dep A] │ -└────────┬────────┘ └──────────────┘ - │ subscribes - ▼ -┌─────────────────┐ -│ [Message Bus] │ -└─────────────────┘ +[Mermaid diagram of service topology or module structure when possible; ASCII fallback if needed] ### Data Stores + - [Database]: [what it stores, ORM/driver used] - [Cache]: [what is cached, TTL strategy] ### Key External Dependencies + - [Service A]: [purpose, auth method] - [Service B]: [purpose] ### API Surface + [Summarize endpoints or exported functions] ### Test Coverage + - Unit tests: [Y/N, count, coverage %] - Integration tests: [Y/N] - Contract tests: [Y/N] ### CI/CD + - CI: [GitHub Actions/GitLab CI/etc] - Deploy target: [Fly.io/Render/K8s/etc] - Release process: [manual/automated] ### Technical Debt + - [Key items from TODOS.md or code comments] ### Onboarding Notes + - How to run locally: [command] - How to run tests: [command] - Key config: [env vars] - Gotchas: [anything that surprised me] + ``` ______________________________________________________________________ - + diff --git a/.github/skills/guardrails/SKILL.md b/.github/skills/guardrails/SKILL.md index 0dbde72..00f9544 100644 --- a/.github/skills/guardrails/SKILL.md +++ b/.github/skills/guardrails/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # guardrails — Safety Mode Activate careful mode for this session. Two behaviors are now enabled. @@ -69,4 +77,4 @@ Explicitly ask to "disable guardrails". ______________________________________________________________________ - + diff --git a/.github/skills/incident/SKILL.md b/.github/skills/incident/SKILL.md index a07a883..132f25c 100644 --- a/.github/skills/incident/SKILL.md +++ b/.github/skills/incident/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # incident — Incident Analysis & Post-Mortem Guide a structured incident investigation and produce a blameless post-mortem @@ -317,4 +325,4 @@ Status: [Draft — ready for team review] ``` - + diff --git a/.github/skills/inspect/SKILL.md b/.github/skills/inspect/SKILL.md index 51990e5..3872141 100644 --- a/.github/skills/inspect/SKILL.md +++ b/.github/skills/inspect/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -157,4 +165,4 @@ ______________________________________________________________________ ______________________________________________________________________ - + diff --git a/.github/skills/migrate/SKILL.md b/.github/skills/migrate/SKILL.md index 41cae32..bcf01e1 100644 --- a/.github/skills/migrate/SKILL.md +++ b/.github/skills/migrate/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -329,4 +337,4 @@ Pre-deploy checklist: ``` - + diff --git a/.github/skills/onboard/SKILL.md b/.github/skills/onboard/SKILL.md index 58f727b..dc58fc6 100644 --- a/.github/skills/onboard/SKILL.md +++ b/.github/skills/onboard/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # onboard — Contributor Onboarding Guide Generate or update onboarding documentation so a new contributor can go from @@ -313,4 +321,4 @@ Gaps remaining (if any): ``` - + diff --git a/.github/skills/openapi/SKILL.md b/.github/skills/openapi/SKILL.md index 944f675..3f12c20 100644 --- a/.github/skills/openapi/SKILL.md +++ b/.github/skills/openapi/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # openapi — OpenAPI 3.1 Specification Write or review OpenAPI 3.1 specifications. The spec is the contract — it must @@ -406,4 +414,4 @@ Summary: [N critical, N warnings, N info] `$ref` for all reusable schemas, and validate it passes linting. - + diff --git a/.github/skills/performance/SKILL.md b/.github/skills/performance/SKILL.md index 4146bd0..b25b7a4 100644 --- a/.github/skills/performance/SKILL.md +++ b/.github/skills/performance/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -250,4 +258,4 @@ ______________________________________________________________________ ______________________________________________________________________ - + diff --git a/.github/skills/pr/SKILL.md b/.github/skills/pr/SKILL.md index 21e1280..373f356 100644 --- a/.github/skills/pr/SKILL.md +++ b/.github/skills/pr/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # pr — Commit, Push & Open Pull Request Push the current branch and open a PR targeting main. This is the final step @@ -132,4 +140,4 @@ CI/CD will now: ______________________________________________________________________ - + diff --git a/.github/skills/refactor/SKILL.md b/.github/skills/refactor/SKILL.md index 16dff93..a8e7a13 100644 --- a/.github/skills/refactor/SKILL.md +++ b/.github/skills/refactor/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -377,4 +385,4 @@ Behavior changed: No ``` - + diff --git a/.github/skills/release-notes/SKILL.md b/.github/skills/release-notes/SKILL.md index fc5dc34..113cf68 100644 --- a/.github/skills/release-notes/SKILL.md +++ b/.github/skills/release-notes/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # release-notes — Release Artifact Preparation Verify all artifacts are complete, write release notes, and update the changelog. @@ -151,4 +159,4 @@ Keep existing entries intact. ______________________________________________________________________ - + diff --git a/.github/skills/requirements/SKILL.md b/.github/skills/requirements/SKILL.md index 632ef74..e72b42a 100644 --- a/.github/skills/requirements/SKILL.md +++ b/.github/skills/requirements/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + # requirements — Requirements Gathering & Documentation Clarify and document what must be built before engineering starts. Produce a @@ -211,4 +219,4 @@ After writing, summarize what was decided so the architect role can start. ______________________________________________________________________ - + diff --git a/.github/skills/security/SKILL.md b/.github/skills/security/SKILL.md index d207d59..c008a32 100644 --- a/.github/skills/security/SKILL.md +++ b/.github/skills/security/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -287,4 +295,4 @@ Scope: [full/diff/dependency/config] ______________________________________________________________________ - + diff --git a/.github/skills/verify/SKILL.md b/.github/skills/verify/SKILL.md index dd43383..fcc29d6 100644 --- a/.github/skills/verify/SKILL.md +++ b/.github/skills/verify/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -274,4 +282,4 @@ scope: [path/component/full] ______________________________________________________________________ - + diff --git a/.github/skills/vision/SKILL.md b/.github/skills/vision/SKILL.md index bb36ea8..cbf9b5c 100644 --- a/.github/skills/vision/SKILL.md +++ b/.github/skills/vision/SKILL.md @@ -24,6 +24,14 @@ When you need clarification, use this exact format — never invent or guess: Never ask more than one question at a time without waiting for the answer. +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. + ```bash # Detect base branch (main / master / develop / trunk) BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \ @@ -72,7 +80,7 @@ Review the plan with maximum rigor and the appropriate level of ambition. 1. **Retry/backoff/circuit breaker coverage.** Every external call: what happens on retry? Exponential backoff with jitter? Circuit breaker state machine? Dead letter queue? 1. **Observability is scope, not afterthought.** New codepaths need: structured logs with correlation IDs, metrics (request rate, error rate, latency p50/p95/p99), distributed traces, dashboards, and alerts. 1. **API contracts are immutable once published.** Breaking changes require version bumps. Plan the migration strategy before coding. -1. **Diagrams are mandatory.** ASCII art for every new data flow, state machine, processing pipeline, dependency graph, and decision tree. +1. **Diagrams are mandatory.** Prefer Mermaid for every new data flow, interaction flow, state machine, processing pipeline, dependency graph, and decision tree. Use ASCII only as a fallback when Mermaid is unsupported or less clear. 1. **Everything deferred must be written down.** TODOS.md or it doesn't exist. 1. **Design for the 3am pager.** Systems over heroes. Every runbook, alert, and recovery procedure documented before go-live. 1. **Security is first-class scope.** Authentication, authorization, input validation, rate limiting, secret management — addressed in the plan, not "later." @@ -200,4 +208,4 @@ Present as: "Overall assessment: [READY/NEEDS REVISION/SCOPE CHANGE] because [1- ______________________________________________________________________ - + diff --git a/.github/vstack.json b/.github/vstack.json index e239d0a..1f6c2db 100644 --- a/.github/vstack.json +++ b/.github/vstack.json @@ -1,142 +1,142 @@ { "vstack_version": "0.0.0.post3.dev0+df3fe6e", - "installed_at": "2026-04-20T22:09:15.150279+00:00", + "installed_at": "2026-04-20T22:37:59.699083+00:00", "artifacts": { "skills": [ { "name": "adr", "file": "skills/adr/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "analyse", "file": "skills/analyse/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "architecture", "file": "skills/architecture/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "cicd", "file": "skills/cicd/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "code-review", "file": "skills/code-review/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "concise", "file": "skills/concise/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "consult", "file": "skills/consult/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "container", "file": "skills/container/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "debug", "file": "skills/debug/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "dependency", "file": "skills/dependency/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "design", "file": "skills/design/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "docs", "file": "skills/docs/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "explore", "file": "skills/explore/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "guardrails", "file": "skills/guardrails/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "incident", "file": "skills/incident/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "inspect", "file": "skills/inspect/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "migrate", "file": "skills/migrate/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "onboard", "file": "skills/onboard/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "openapi", "file": "skills/openapi/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "performance", "file": "skills/performance/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "pr", "file": "skills/pr/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "refactor", "file": "skills/refactor/SKILL.md", - "version": "1.0.0" + "version": "1.0.1" }, { "name": "release-notes", "file": "skills/release-notes/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "requirements", "file": "skills/requirements/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "security", "file": "skills/security/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "verify", "file": "skills/verify/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" }, { "name": "vision", "file": "skills/vision/SKILL.md", - "version": "1.0.1" + "version": "1.0.2" } ], "agents": [ diff --git a/src/vstack/_templates/skills/_partials/skill-context.md b/src/vstack/_templates/skills/_partials/skill-context.md index 2f98362..23484c1 100644 --- a/src/vstack/_templates/skills/_partials/skill-context.md +++ b/src/vstack/_templates/skills/_partials/skill-context.md @@ -11,3 +11,11 @@ When you need clarification, use this exact format — never invent or guess: > **Default if no response:** [What you'll do] Never ask more than one question at a time without waiting for the answer. + +### Diagram Convention + +When producing hand-authored Markdown outputs, prefer Mermaid for flow, +interaction, lifecycle, state, topology, dependency, and decision diagrams when +the format is supported and improves clarity. Use ASCII as a fallback when +Mermaid is unsupported or would be less readable. Keep ASCII/text trees for +directory structures and other scan-friendly hierarchies. diff --git a/src/vstack/_templates/skills/adr/config.yaml b/src/vstack/_templates/skills/adr/config.yaml index 54644dd..8ef8bbc 100644 --- a/src/vstack/_templates/skills/adr/config.yaml +++ b/src/vstack/_templates/skills/adr/config.yaml @@ -1,5 +1,5 @@ name: adr -version: 1.0.1 +version: 1.0.2 description: | Architecture Decision Record writing. Documents a significant architectural decision with context, alternatives considered, rationale, and impact. diff --git a/src/vstack/_templates/skills/analyse/config.yaml b/src/vstack/_templates/skills/analyse/config.yaml index b1bedca..143daa1 100644 --- a/src/vstack/_templates/skills/analyse/config.yaml +++ b/src/vstack/_templates/skills/analyse/config.yaml @@ -1,5 +1,5 @@ name: analyse -version: 1.0.1 +version: 1.0.2 description: | Cross-cutting technical analysis. Investigates impact, tradeoffs, root causes, or feasibility without implementing changes. Use when asked to "analyse this", diff --git a/src/vstack/_templates/skills/architecture/config.yaml b/src/vstack/_templates/skills/architecture/config.yaml index 233d61b..6bb94b9 100644 --- a/src/vstack/_templates/skills/architecture/config.yaml +++ b/src/vstack/_templates/skills/architecture/config.yaml @@ -1,5 +1,5 @@ name: architecture -version: 1.0.1 +version: 1.0.2 description: | Engineering-lead plan review. Lock in the execution plan — service boundaries, data models, API contracts, error handling, test strategy, diff --git a/src/vstack/_templates/skills/architecture/template.md b/src/vstack/_templates/skills/architecture/template.md index 05074c5..99eb685 100644 --- a/src/vstack/_templates/skills/architecture/template.md +++ b/src/vstack/_templates/skills/architecture/template.md @@ -42,7 +42,7 @@ If running low on context or asked to compress: Step 0 > Service/contract diagra - Observability is not optional — new codepaths need logs, metrics, or traces. - Security is not optional — new codepaths need threat modeling. - Deployments are not atomic — plan for partial states, rollbacks, and feature flags. -- ASCII diagrams for all data flows, state machines, service dependencies. +- Diagrams for all data flows, state machines, and service dependencies. ## Cognitive Patterns — How Great Engineering Leads Think @@ -91,18 +91,13 @@ Before reviewing anything, answer: ## Step 1: Service Boundary & Data Model Review -Produce an ASCII diagram of the service topology: +Produce a service topology diagram. Prefer Mermaid when possible; use ASCII only +as a fallback when Mermaid would be less clear or unsupported. -```text -┌───────────────┐ HTTP/gRPC ┌───────────────┐ -│ Service A │ ─────────────────────▶│ Service B │ -│ (this plan) │ │ (existing) │ -└───────┬───────┘ └───────────────┘ - │ publishes - ▼ -┌───────────────┐ -│ Event Bus │ -└───────────────┘ +```mermaid +flowchart LR + A[Service A
this plan] -->|HTTP or gRPC| B[Service B
existing] + A -->|publishes| C[Event Bus] ``` Review: diff --git a/src/vstack/_templates/skills/cicd/config.yaml b/src/vstack/_templates/skills/cicd/config.yaml index bbab73d..9c912ba 100644 --- a/src/vstack/_templates/skills/cicd/config.yaml +++ b/src/vstack/_templates/skills/cicd/config.yaml @@ -1,5 +1,5 @@ name: cicd -version: 1.0.1 +version: 1.0.2 description: | Write GitHub Actions CI/CD workflow configuration. Covers build, test, lint, security scan, container publish, and deployment trigger workflows. diff --git a/src/vstack/_templates/skills/code-review/config.yaml b/src/vstack/_templates/skills/code-review/config.yaml index a8f2c8c..7d07828 100644 --- a/src/vstack/_templates/skills/code-review/config.yaml +++ b/src/vstack/_templates/skills/code-review/config.yaml @@ -1,5 +1,5 @@ name: code-review -version: 1.0.1 +version: 1.0.2 description: | Pre-landing code review. Finds bugs that pass CI but break in production — race conditions, missing error handling, API contract violations, observability diff --git a/src/vstack/_templates/skills/concise/config.yaml b/src/vstack/_templates/skills/concise/config.yaml index fd1a6b8..b61c112 100644 --- a/src/vstack/_templates/skills/concise/config.yaml +++ b/src/vstack/_templates/skills/concise/config.yaml @@ -1,5 +1,5 @@ name: concise -version: 1.0.0 +version: 1.0.1 description: | Runtime response-style controller for concise communication. Switches between normal, compact, and ultra output density without regenerating agents. Use diff --git a/src/vstack/_templates/skills/consult/config.yaml b/src/vstack/_templates/skills/consult/config.yaml index 5b78fe8..a691132 100644 --- a/src/vstack/_templates/skills/consult/config.yaml +++ b/src/vstack/_templates/skills/consult/config.yaml @@ -1,5 +1,5 @@ name: consult -version: 1.0.1 +version: 1.0.2 description: | DX triage and focused review. First classifies whether the request is API DX, CLI/tool DX, or developer workflow DX, then runs exactly one review path with diff --git a/src/vstack/_templates/skills/container/config.yaml b/src/vstack/_templates/skills/container/config.yaml index 2def729..7668eae 100644 --- a/src/vstack/_templates/skills/container/config.yaml +++ b/src/vstack/_templates/skills/container/config.yaml @@ -1,5 +1,5 @@ name: container -version: 1.0.1 +version: 1.0.2 description: | Write and review Dockerfile, docker-compose, and container configuration. Covers multi-stage builds, image hardening, non-root users, minimal base images, diff --git a/src/vstack/_templates/skills/debug/config.yaml b/src/vstack/_templates/skills/debug/config.yaml index d95b682..cc16386 100644 --- a/src/vstack/_templates/skills/debug/config.yaml +++ b/src/vstack/_templates/skills/debug/config.yaml @@ -1,5 +1,5 @@ name: debug -version: 1.0.1 +version: 1.0.2 description: | Systematic root-cause debugging for backend services, APIs, and libraries. No fixes without investigation. Follows the scientific method: observe → diff --git a/src/vstack/_templates/skills/dependency/config.yaml b/src/vstack/_templates/skills/dependency/config.yaml index df0a991..1567c76 100644 --- a/src/vstack/_templates/skills/dependency/config.yaml +++ b/src/vstack/_templates/skills/dependency/config.yaml @@ -1,5 +1,5 @@ name: dependency -version: 1.0.0 +version: 1.0.1 description: | Dependency health audit. Covers vulnerability scanning, outdated packages, licence compliance, transitive risk, pinning policy, and supply chain hygiene. diff --git a/src/vstack/_templates/skills/design/config.yaml b/src/vstack/_templates/skills/design/config.yaml index 562d863..3675d3e 100644 --- a/src/vstack/_templates/skills/design/config.yaml +++ b/src/vstack/_templates/skills/design/config.yaml @@ -1,5 +1,5 @@ name: design -version: 1.0.1 +version: 1.0.2 description: | Build a complete API design or service design from scratch. Produces OpenAPI specs, error conventions, naming standards, pagination patterns, and versioning diff --git a/src/vstack/_templates/skills/design/template.md b/src/vstack/_templates/skills/design/template.md index 6a2003a..28ee24e 100644 --- a/src/vstack/_templates/skills/design/template.md +++ b/src/vstack/_templates/skills/design/template.md @@ -53,15 +53,22 @@ For each resource/entity in the domain: 1. **Lifecycle:** What states can it be in? 1. **Relationships:** What resources does it reference? -Produce an entity diagram: - -```text -┌──────────┐ 1:N ┌──────────────┐ -│ User │ ──────────▶ │ Order │ -│ id │ │ id │ -│ email │ │ user_id (fk) │ -│ name │ │ status │ -└──────────┘ └──────────────┘ +Produce an entity diagram. Prefer Mermaid when possible; use ASCII as a fallback +only when Mermaid support is unavailable or would reduce clarity. + +```mermaid +erDiagram + USER ||--o{ ORDER : places + USER { + string id + string email + string name + } + ORDER { + string id + string user_id + string status + } ``` ______________________________________________________________________ diff --git a/src/vstack/_templates/skills/docs/config.yaml b/src/vstack/_templates/skills/docs/config.yaml index 1ec26d9..057f556 100644 --- a/src/vstack/_templates/skills/docs/config.yaml +++ b/src/vstack/_templates/skills/docs/config.yaml @@ -1,5 +1,5 @@ name: docs -version: 1.0.1 +version: 1.0.2 description: | Post-release documentation alignment. Updates README, API docs, migration guides, and related docs to match shipped behavior. Does not own release-note diff --git a/src/vstack/_templates/skills/explore/config.yaml b/src/vstack/_templates/skills/explore/config.yaml index 09abef1..7347986 100644 --- a/src/vstack/_templates/skills/explore/config.yaml +++ b/src/vstack/_templates/skills/explore/config.yaml @@ -1,5 +1,5 @@ name: explore -version: 1.0.1 +version: 1.0.2 description: | Repository and system discovery. Maps the architecture, understands the codebase, identifies technical debt, and produces a structured onboarding diff --git a/src/vstack/_templates/skills/explore/template.md b/src/vstack/_templates/skills/explore/template.md index ad01823..4a4b634 100644 --- a/src/vstack/_templates/skills/explore/template.md +++ b/src/vstack/_templates/skills/explore/template.md @@ -144,46 +144,45 @@ Type: [API service / library / CLI / worker / ...] Stack: [language, framework, runtime versions] ### Architecture -[ASCII diagram of service topology or module structure] - -┌─────────────────┐ HTTP ┌──────────────┐ -│ [This service] │ ──────────▶ │ [Dep A] │ -└────────┬────────┘ └──────────────┘ - │ subscribes - ▼ -┌─────────────────┐ -│ [Message Bus] │ -└─────────────────┘ +[Mermaid diagram of service topology or module structure when possible; ASCII fallback if needed] ### Data Stores + - [Database]: [what it stores, ORM/driver used] - [Cache]: [what is cached, TTL strategy] ### Key External Dependencies + - [Service A]: [purpose, auth method] - [Service B]: [purpose] ### API Surface + [Summarize endpoints or exported functions] ### Test Coverage + - Unit tests: [Y/N, count, coverage %] - Integration tests: [Y/N] - Contract tests: [Y/N] ### CI/CD + - CI: [GitHub Actions/GitLab CI/etc] - Deploy target: [Fly.io/Render/K8s/etc] - Release process: [manual/automated] ### Technical Debt + - [Key items from TODOS.md or code comments] ### Onboarding Notes + - How to run locally: [command] - How to run tests: [command] - Key config: [env vars] - Gotchas: [anything that surprised me] + ``` ______________________________________________________________________ diff --git a/src/vstack/_templates/skills/guardrails/config.yaml b/src/vstack/_templates/skills/guardrails/config.yaml index 1734bc7..4863239 100644 --- a/src/vstack/_templates/skills/guardrails/config.yaml +++ b/src/vstack/_templates/skills/guardrails/config.yaml @@ -1,5 +1,5 @@ name: guardrails -version: 1.0.1 +version: 1.0.2 description: | Activate safety guardrails for the current session. Before any destructive command (rm -rf, DROP TABLE, git push --force, git reset --hard, kubectl delete, diff --git a/src/vstack/_templates/skills/incident/config.yaml b/src/vstack/_templates/skills/incident/config.yaml index 7bba5cc..d474936 100644 --- a/src/vstack/_templates/skills/incident/config.yaml +++ b/src/vstack/_templates/skills/incident/config.yaml @@ -1,5 +1,5 @@ name: incident -version: 1.0.0 +version: 1.0.1 description: | Incident analysis and post-mortem writing. Guides a structured investigation from timeline reconstruction through root cause identification to a blameless diff --git a/src/vstack/_templates/skills/inspect/config.yaml b/src/vstack/_templates/skills/inspect/config.yaml index f0ed115..0df4f74 100644 --- a/src/vstack/_templates/skills/inspect/config.yaml +++ b/src/vstack/_templates/skills/inspect/config.yaml @@ -1,5 +1,5 @@ name: inspect -version: 1.0.1 +version: 1.0.2 description: | Read-only verification audit. Runs baseline plus optional extended checks, produces severity-ranked findings, and makes no code or commit changes. diff --git a/src/vstack/_templates/skills/migrate/config.yaml b/src/vstack/_templates/skills/migrate/config.yaml index 04b989d..cb8520f 100644 --- a/src/vstack/_templates/skills/migrate/config.yaml +++ b/src/vstack/_templates/skills/migrate/config.yaml @@ -1,5 +1,5 @@ name: migrate -version: 1.0.0 +version: 1.0.1 description: | Database migration review and authoring. Covers forwards/backwards compatibility, zero-downtime strategies, rollback plans, data integrity, and index safety. diff --git a/src/vstack/_templates/skills/onboard/config.yaml b/src/vstack/_templates/skills/onboard/config.yaml index 92eedaf..ed27f35 100644 --- a/src/vstack/_templates/skills/onboard/config.yaml +++ b/src/vstack/_templates/skills/onboard/config.yaml @@ -1,5 +1,5 @@ name: onboard -version: 1.0.0 +version: 1.0.1 description: | Generate a contributor onboarding guide for a repository. Covers project purpose, architecture overview, local dev setup, test commands, contribution diff --git a/src/vstack/_templates/skills/openapi/config.yaml b/src/vstack/_templates/skills/openapi/config.yaml index 324d922..da04795 100644 --- a/src/vstack/_templates/skills/openapi/config.yaml +++ b/src/vstack/_templates/skills/openapi/config.yaml @@ -1,5 +1,5 @@ name: openapi -version: 1.0.0 +version: 1.0.1 description: | Write and review OpenAPI 3.1 specifications. Covers resource naming, HTTP method semantics, status codes, error conventions, pagination, versioning, diff --git a/src/vstack/_templates/skills/performance/config.yaml b/src/vstack/_templates/skills/performance/config.yaml index 62453c2..cbffd6a 100644 --- a/src/vstack/_templates/skills/performance/config.yaml +++ b/src/vstack/_templates/skills/performance/config.yaml @@ -1,5 +1,5 @@ name: performance -version: 1.0.1 +version: 1.0.2 description: | Performance profiling and regression detection. Establishes baselines, detects regressions, profiles bottlenecks, and recommends optimizations. Use when asked diff --git a/src/vstack/_templates/skills/pr/config.yaml b/src/vstack/_templates/skills/pr/config.yaml index 9a43d1e..979a8bd 100644 --- a/src/vstack/_templates/skills/pr/config.yaml +++ b/src/vstack/_templates/skills/pr/config.yaml @@ -1,5 +1,5 @@ name: pr -version: 1.0.1 +version: 1.0.2 description: | Commit, push, and open a pull request from the current branch to main. Uses the release notes from docs/releases/{date}.md as the PR body. diff --git a/src/vstack/_templates/skills/refactor/config.yaml b/src/vstack/_templates/skills/refactor/config.yaml index 6cce8a9..31b8e65 100644 --- a/src/vstack/_templates/skills/refactor/config.yaml +++ b/src/vstack/_templates/skills/refactor/config.yaml @@ -1,5 +1,5 @@ name: refactor -version: 1.0.0 +version: 1.0.1 description: | Structured refactoring for backend services, APIs, and libraries. Identifies code smells, plans incremental changes, executes without altering observable diff --git a/src/vstack/_templates/skills/release-notes/config.yaml b/src/vstack/_templates/skills/release-notes/config.yaml index 92d3aa5..c11e891 100644 --- a/src/vstack/_templates/skills/release-notes/config.yaml +++ b/src/vstack/_templates/skills/release-notes/config.yaml @@ -1,5 +1,5 @@ name: release-notes -version: 1.0.1 +version: 1.0.2 description: | Prepare release artifacts: verify all docs are present, write release notes, own CHANGELOG.md updates, and produce docs/releases/{date}.md. diff --git a/src/vstack/_templates/skills/requirements/config.yaml b/src/vstack/_templates/skills/requirements/config.yaml index 7b461bf..b119c74 100644 --- a/src/vstack/_templates/skills/requirements/config.yaml +++ b/src/vstack/_templates/skills/requirements/config.yaml @@ -1,5 +1,5 @@ name: requirements -version: 1.0.1 +version: 1.0.2 description: | Collaborative requirements gathering and documentation. Clarifies what must be built, defines success criteria, constraints, and non-functional requirements. diff --git a/src/vstack/_templates/skills/security/config.yaml b/src/vstack/_templates/skills/security/config.yaml index 6c5efe4..ff63460 100644 --- a/src/vstack/_templates/skills/security/config.yaml +++ b/src/vstack/_templates/skills/security/config.yaml @@ -1,5 +1,5 @@ name: security -version: 1.0.1 +version: 1.0.2 description: | OWASP Top 10 + STRIDE security audit for APIs, services, and libraries. Finds authentication bypasses, injection vulnerabilities, insecure configurations, diff --git a/src/vstack/_templates/skills/verify/config.yaml b/src/vstack/_templates/skills/verify/config.yaml index adf6bb9..fefb73b 100644 --- a/src/vstack/_templates/skills/verify/config.yaml +++ b/src/vstack/_templates/skills/verify/config.yaml @@ -1,5 +1,5 @@ name: verify -version: 1.0.1 +version: 1.0.2 description: | Verification fix-loop skill. Routes by mode (quick/standard/exhaustive), runs targeted checks, fixes findings by severity, and re-verifies impacted paths. diff --git a/src/vstack/_templates/skills/vision/config.yaml b/src/vstack/_templates/skills/vision/config.yaml index c58ccca..a4f4da4 100644 --- a/src/vstack/_templates/skills/vision/config.yaml +++ b/src/vstack/_templates/skills/vision/config.yaml @@ -1,5 +1,5 @@ name: vision -version: 1.0.1 +version: 1.0.2 description: | CEO/founder-mode plan review. Rethink the problem from first principles, validate ambition and scope, challenge premises, find the 10x solution. Four modes: diff --git a/src/vstack/_templates/skills/vision/template.md b/src/vstack/_templates/skills/vision/template.md index 24b3582..3e3973b 100644 --- a/src/vstack/_templates/skills/vision/template.md +++ b/src/vstack/_templates/skills/vision/template.md @@ -41,7 +41,7 @@ Review the plan with maximum rigor and the appropriate level of ambition. 1. **Retry/backoff/circuit breaker coverage.** Every external call: what happens on retry? Exponential backoff with jitter? Circuit breaker state machine? Dead letter queue? 1. **Observability is scope, not afterthought.** New codepaths need: structured logs with correlation IDs, metrics (request rate, error rate, latency p50/p95/p99), distributed traces, dashboards, and alerts. 1. **API contracts are immutable once published.** Breaking changes require version bumps. Plan the migration strategy before coding. -1. **Diagrams are mandatory.** ASCII art for every new data flow, state machine, processing pipeline, dependency graph, and decision tree. +1. **Diagrams are mandatory.** Prefer Mermaid for every new data flow, interaction flow, state machine, processing pipeline, dependency graph, and decision tree. Use ASCII only as a fallback when Mermaid is unsupported or less clear. 1. **Everything deferred must be written down.** TODOS.md or it doesn't exist. 1. **Design for the 3am pager.** Systems over heroes. Every runbook, alert, and recovery procedure documented before go-live. 1. **Security is first-class scope.** Authentication, authorization, input validation, rate limiting, secret management — addressed in the plan, not "later." From 9df41e09e164fe90bbb59a21b745fb7dcd984992 Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Tue, 21 Apr 2026 01:05:43 +0200 Subject: [PATCH 17/19] docs(readme): add logo and centered badge header - add assets/branding/ with light and dark wordmark PNGs - use picture element with prefers-color-scheme for automatic light/dark switching - center logo and badges together in a single div block --- README.md | 8 +++++++- assets/branding/vstack.png | Bin 0 -> 172555 bytes assets/branding/vstack_dm.png | Bin 0 -> 356500 bytes assets/branding/vstack_lm_logo.png | Bin 0 -> 147899 bytes assets/branding/vstack_logo_nobg.png | Bin 0 -> 36683 bytes 5 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 assets/branding/vstack.png create mode 100644 assets/branding/vstack_dm.png create mode 100644 assets/branding/vstack_lm_logo.png create mode 100644 assets/branding/vstack_logo_nobg.png diff --git a/README.md b/README.md index deb98b3..f07ec6e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -# vstack +
+ + + vstack + [![Python](https://img.shields.io/badge/python-3.11--3.14-0B8A6F)](pyproject.toml) [![Verify](https://img.shields.io/github/actions/workflow/status/eschaar/vstack/verify.yml?branch=main&label=verify&color=1D6FA5)](https://github.com/eschaar/vstack/actions/workflows/verify.yml) @@ -6,6 +10,8 @@ [![Runtime](https://img.shields.io/badge/runtime-stdlib%20only-5B6C8F)](pyproject.toml) [![License](https://img.shields.io/github/license/eschaar/vstack?color=5F7A1F)](LICENSE) +
+ vstack is a VS Code-native AI engineering workflow system for backend services, libraries, APIs, and adjacent platform work. It installs structured agents, skills, instructions, and prompts into `.github/` so GitHub Copilot Agent Mode diff --git a/assets/branding/vstack.png b/assets/branding/vstack.png new file mode 100644 index 0000000000000000000000000000000000000000..ca17dfe2e0046add679bc46ce495372d47216022 GIT binary patch literal 172555 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℞?B3hE@mbQYmJZG-190k9?%5_piD#Ted)I95O4 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 lxBltYVXw=u_-MoNQ|hxM+sUr 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�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%0AS5PTwS){4E&XRz@Vx)5MzaSILB zlq~nwlGVTe^IVJyKFXwuI|LQGgbct{|4P2pw}gxWhqU(D_ryk)4PUM#WZOQgE9Vq^ z0k|-191kfcXj-u4*Y4hRpgojzf?}z;jf?tM{e8Rnh`?3+DWyETu3Cg<$HdrY?)p9P zusXza!RZQ@ziPKC(NI5!I%y9lv-J_&e*USC*MEL_qKabkxW#?zx7`H*(-i#OP(<4R ze4Q<&WhPr1HIJ9Mt~HeOoa_&Ch~&`AyX;gA<=R$COa5J|*4`U#JiH1nT`B;MEO!KZ z`P^H_3~4o}DwmkB9MOf#Nm)raxQB|;p+z}1g;h0D+2lk2Qdbv8_7+fIqa$nxh`L+a zKmddD+heY&dKe`@9(`=JK;D!8M@89&A}0Z8a~ddHZ#@ejN@rtYQ$Oy$u@JR*!*r9C z|LOUTSPgGU#i#bkBumlP1IoA;{u@%DzBS!OYveYo8BM9&Ey{4YyQj~rx=d(ktpvp5 zv>B7{9+#RMel=9+aHR@)Nu-8}+Cj>p>KAKMRarFzlj)lHaBeqd z!|a@;3axOeV}0;W-s~e>7Mwh_=^0lX#b+*C31=0QTJlZx>FYlzfvtw_VgjryC0tP) z3_&@Q0WWfuy`Ds=i2%(CD&seICxN_7Uw!u1%55Qo zvq!1JtYe_=PR}O+qVHn*9rkm%m^OY6d@{KWECBr($^jSGP9U(a36P8DexNh=@}?G% zKzJ?AvNq|^SDoY_ZjWsK;Mzo9>%3L4&4=nxw!>v!3Em%^mxak6Ek3_dJL5^|G67}c zcIZ%M33_vuTd41ud0{wz5snR2K1w9dwj}4+=fr*;scWW3u5caSXf(hti#qmU6_7%{ zQbMe9!DhNPQ6@&b+5a_4;1&HO_{{XNTMH2;I!fQ${$1JJ^?JRvcq|&nX9?A2A9#4M^Z@dB zVRp>OJVwHJSZNT1+NnbOT?>+?_HBqR_7bzGD&BQ4#Rso zSBOT_px;xLBERlfho=i%_Afsng1gOyN3Vi?RofoXB6ITjj^ohjlL1mqfmw;YG{iJ zZ931e>G{~*A;m2j#y3B?2&iO@Dt}rggP$l!c_6#wJbHU+tOybTv%;$s{ z;xZcD#rhK@m%41d;woIOjSGcXHdB7&8ff6x(?pe+cu~w&`s;ecK4P<5f87Q&DA+%f z<*3R_JjMjf>1r2a6Qg%9#X86VQYfX@(xC+oamlz7s`A2tam_jL%KUV&#AB2&Z)sKJ znLE&Rg>4e?zeT7#zIpLB-&F6Gw5_<-Ai4J7Y|?hb)Qr>}r4nT|3tB_nE>7S_C?kLn zweV;XaMQBJwrkoJob*Zla#1?m^VrHmoXC`#1XIK#pt{6CVu{h#Ug|GyN9Bq55d zQdCaq;A{&Oy;O)$4l9(zEXNtMJ3f);wzTG8KMKhB7@7|YIv z7_gd*gkl1rhch)IwcJ)5e`(zA&S{{#%4d%sJu9Qjk2b46KPdKgQV$a*A+d$O`+6yv zWSyH>PE~4|FRB-?8xhnJOg17;~jylUDmo9}J1`s9lG*s9IG7gVsl#c+;53QMh zI+LRynbRC)q4~gF)w}=XuB5n|GYW0hN=auqP3NBM9y*e)vrHI)4mzhKx!??*ocGpB z`FZe~S?Z5@L$*>8%j9xTOPlY9be|Ss415ME43`r!u^aS*(0VjX9tt z+P^?5O`Y2lG#}#J7D-t}3ymL<^R~=C$R{Lub6#}!*E$%+^|MUup<(G{w~*Ml@RydZ zjz-TPg4__Dstd_RQ-5=GewOaU>AlrEC>{`%qJ^?FHNYj4jT?n6zn`KkET76sI?2QY z=EKj~QucjJ8&}?(4tcDI@y_F&*qOO|4lEj2a4dbYaDnv{kLhsj^(WIv_lxmQT?7sIa{ zi5ro=j=J_6#%+%4WA=-p5L1!EY7bBp)@68?N0u>~7j0M(@1gDU-)Bt2FOBT|p_Qo9 z8CpjA;d8G7i1$CJM|C?E`U5gb0v^_>TrYc1%cfxy?mR#q>r2r5H#)Vf+1?uDSZ1Zu z1`k2*^Q`s$Ys3Z#V24dXWjH?LQ%Ja;)VtT3I9Weqoa&|P}Gt z_H(u2ADLQp6F01d(QiUgsC*&NXH0}Wtb@>+_(4oczPl8%Z(J{IeHV{Q7MMvYlxN1t z?Ty#8`e^eXDR>ren>Jr5S(z~n_MB=*+!TDMx1Jl&^#39H{Nz8g>t1z-S7sO{HmQqk zyj95~RnFkxs);Y_Yr@Da@tp+Zh7QUmK;doUw8IQ%TL^rp-Ewb<6k?Cvo#mM0DDM$q z4gS{|VbKuzh|ndYZ25Q3Bd^tOs+xa1l?+IHJP=MXrY^$`<vgg6}LsW77j}9g6 zUSwgRu{cUtG-qStQ^eJcg5j)%=~QO9FZf!0C7|v5Iv>T8KXe0y;a~xC1Gy(etY-A+ zdNjaqv#{}&VFF+4tA)zjSKiO7WhtGon#}RD%XR%`DhXijto~C<^%;*+c~8SmSCI++ z(vgZfQMPx|r=C??p}etT?(A%8<=d@##hF0*YRZX$ZjGD25-8T6>c4wijO`FkZNhc(g{|_6&%h;UE%`6Yq37-LAnsU7z^M4MRMO+k`bV$%t|a|6y#gMXuS^G9^E#jI%W zPvk;I_~{*4)=%A2?MoQgH`)bpSk*y~!;g<*AN_C`cG?H=UAX*+GxTx$QADa+^bAZ3sCVvb=MVK0W z^#+#Daf#VJdjgp2<4_( zoJ%e>jF3wyM2yKGZw$k$?Tb-@76g2xU-vAelM<(Id+#9Y&6{8h6~^ms&~nCc)HmY~ ziOK0qSe~!%?186Qd+@f!jZHKjV1^kVUua7fc_j%Ln?Ah3unL{amev2=c#{B6i1-z5?hVDBDS{36c|BKL*-(QTg;cb$+b?&vBw1UpXFGAAcWP9}3 ze`YPBJ;F210Kn|QOJG$~BA33I7NnvDz7XY3L->QsFoB0t00Or$r}dg=9! z@mP7#(p$y>7F^eS(?TMI|NQg<{?`TIgJ+~-<G^`|uc?yTITKGd z&}1!+wXYmWHWtO-9>lmWAKXYV;6fw`PsEIk3WtTk`TtZ=d`*#anzpQ zw~Oyq-l=4GUY*M#$Binq(bJqM&Hzt-=VJ5A6K-P>9`7tcv#r**lV3K5&fo~7d4IxMC}ReVoG3R5NOHN+#+J?Bx<$D8Iwj=Z zpDS0ZevqvC<0Ja0lhiDL>s&8>`fgpK-qYeg@%XW_ySHMe=&x(8*%G}rOFAUXNxXi=XPlR5#m`jl`Q>FxY=8UN{x(wcW_x=%A3CK6#lFz{?2Q#ST@9cfIgemf za7V)iruB1QQ+T!|oAS*X6-@6skH__w2s#5l46>ayjs@j=5P|Ci$#wBt#((5PPWg?^ z`Qlg$CR=GuuD}0^v47%C9S)$fW`BYoADq*4`t#2@9l2W=thrje@v)1X)}JHJ9i(V^ zyDn7}iR7X(Rq%^Rk|8cz3&{8Y79EXRMQ&ns0yP{Vp-Ok8Q1*^UDP{8fg)~2o`%kj* z!utOC%~lj!VPXx$mSGh{R`pqjOXMG?V)m%$Moc#+y9m7{R9-`i-rX$Fg|O5$Q@zX<6`AgT3G za&2|_nPzn!!obJv*=fYc``H@-U5jB^_IC?5i{zT!x{n@>jat5S+_;-FRX(nL*`q&y60+RD62*#hMlB*2slIq@NCT&MfqqEx<}%$*c8m;!cEtZv0uk z)>3ri!2#%$WXQ?Po1w!m*tLiC6&@AI=vgA}f@?iuA_j``<&ecHl3Ntr7ZTePp7Th5 z`y+M8iJevBX{z9-W&Jx}J)8!A*`5#TgUfzKL7lAMt`rW>JY%O&cT^K5!FX%{ z%%WsYQmz#DJ8z79Bz+af6+*69amMg}i_d3n<^W$O3RT&?Fi?Fw;&enSjc!+X2M-4a zMdv^AtG5+^1Z2TB%D&cXxnVui&jihN{U>^~w-fmk4v9rD`p)TOYMZt-QLjJ)I8Xhs z9Tn|pz)D_H9~=H+^EIXW?=mxPHQGtz7rj4$%*DQAE_L^^w(e@eW>WcQwaS% z!^dQ_-7mG+@Ui4J^FiIc^@c+#a}x#TyqwKXwrIxJ4i80@1-L9XMN4}?r~akH_Pd_A z@G9`ATIgrEN|5K|6Fl+PIqJlwPJojeZx5_H)s1c;+9mzZW%B8r=C}s&atz|mr_Ht0 zT(8ZZYDb#d(K@EIrepqZRMR(P*WsY?MPKKLZ(%B)0e5>6_|Eq|qk_K9O|)TAKnHDYtn zC@yM35=moB#wkpWuYHbA8IP5+!_T~U=@;*Q2?wJE54#7IiiEO>*BtJf;drQLDHp7VdZwRm~t6U1-Iby%K4e^!6)cTh<# z;hVqYHl^vCt#`}45I$voV@@9{-N*=pE&Y)pEHBWnDqU}i(nKd{ycZUS!T#5#GVyPL zOPHrW3A~nRFuaILKF;|G`-LBlRH0OmrD#(6Us4+6EJuURB_AIA@_zHpI308tvCu8J zNjJ#UYrL#)1wfY{;@{P_^>#8pp1w25UNr21|HOt+mKEv&?h&S=5kCZMO?;L+%Zn$B zep2H0l=FA4Ktt8b#%^H)fy)Kvi5s^hoQBqdzN_hQWRv2>T2LkZstYr37JMfK{BqK! z6Cknz4q9cN{N>HdVcWabKVL*$2^+)k9U}{=yvGqOn+VNA0l%LffKO?GkTDTm_W3hA zG~;>ydLV_Ydo#@~c|-%#A5n;wOI_t?nfPxZ$i1f2VdNT|kC`6wA33&_UhdNvn->6$ z9#(<>o(|}mN)l}VyL=-zep$!9@6%AvZ4vP8%Cq5*{FmU@g~yh6DE(61?@z5fLrOncax{Kmn_ftLnIl4zK4Nm+l0D8u3Em~3A zOa_)b51po+^>}L@87(}CF=OawMMVm&YF$x|17qWHm52v9F9ofIiXWME50mI>wkYXp zZxh?b__XfFxIJz`AXP|e;C!MHXd~XY^G*8157Zo-+A-teGj~{WLG5Yl!~IT!(7-ws z!&zY1Xu<@balLKkn<6CIOZ5%JK=ZWIzHtA-9tC-Y1nGu4JkQj>Gr-qJ+4Ip1Eg7PB z!Y7B*{>_*3=Z2o|0cZx=1(_Hz3KmE~e)$K=wRTJ`_Isp&v0^tLG@7wXbB7c*+dlW{9tQp68Iw@wC zfUbsKky*=V(fxhq)DBtTBW#u7|Iu>6zHZk*NC}GycW#VZ#tlhGVgP(Qi7f=gL(dOL zBBkVjzPl1;gjgSv|8=GnlWxA-y*zh@n{KhPE4^GYYBt9zC`NKSsBVgw4-V^Deo%5r z*%R)?)Hw$GYe+Wdrx=a)`rf<$>5`XCOzx2><4vb&o-!#cgF|tu2(~vY^;+{Z3%Qte4{=Pp-DebJP$;Ojw5`tE0C4uQ67&pUPhm2_!={|Xik2eS&O^c2G z+M==tGu&?Zz?Ju9^KJixK8E{6(7=d_Ntj#^Y~5u1NiZD}Vt2i{VH-#J?dGmO*YClo zsxO=H4<9*HsuDI2#D(u7U8@isGw}_(v?dvh{4^JMC6_1=B?#`qmewDQtxu)3UxOa` ze73G5KpL$JdC#C3PrD1^>u{en^z6z$ExjArzh#sJ3B$NXsGf88<|tj6T&|a$%qDTA zt8bc`x4oC6xW09YYf#fkG{4hzBNsYV1MSmh2-D+w%iUn{1XZJz-;lD^w9-CzD?#+b9xt^_8B{7{Zc4f;0ZZ)JPl7HTR2(SV$uRJ6Y37Dbd(qU-g zojgvBS2wGADtFPb;sH&&u#)>zTpN~<%I%n>@zLw3OT@}jiK(jw>R(Ug&cM~su|R3D z7K7)7$SD?suB-CdmK2cmzbU-#G;kk!|C2`ca+s4jGH1mx7tt{OoPC`-m(Oe*hfTl0 zML}L}Ui{fN=X%C#>J-zYQ&8JNw&K6wve(8ZAa#?A{Pi=aHPn$`D6^%Y=yt6IOqY|F zcf1N3c;dc&Li_2cRDfre+@}3dC%%MRCcc!d`@hp(_bMtb{6O;FKVmg0XT=RKNPdgT zjg8xWG?f_f7H3pW@x+62shvoP=6l_C5bD&M;~8e$?7@EFH>oaGDq0L!?Dbo zD|r$G9s$Bn8=qGS(LTJ)>&lD;Y%Dcu; z1aBqits{^_*JepmZ@_*a)1efX^L{^uSAUq?Fu23L9nDLaumQ2pQG2b2u_4);=Eqsz z(5%MvO1nO|$u!!Q20(Drs(nKyET9gNoa8L}VpMbcs@N051 zae=!T$IPC83OkjWA~)xwW#{GT^#^hn@BkHd$10$=Lw@T@an4MJ4yes7kdRQXkDn>O zjNbXfdZ<&bp1^~yW@@{TJ?|fBV!_X;mP-v9>K&TxiDM5*Y8QsZLFr6`{!RRIR|{bw zsT-m$Us#OL@X>wbziYU$LlJOj3!q*&U78_AJoCD>F$n+0d)B>>W8S7tb3w5n@owzK z6C#tI4L#GFy6~XN=1C{Gu)pO z##c)EG~Z8T`1x_%U7U>YZ8e#)*h z$Rfs5eEg%y*XASBZe~>%KWcSYp8SDTwd(zSQ~lNhzwORTO$up3>B|A4p`ONY4plD? z>BQL9AS~?MZ4TY+nSpi9Q10BeOI^=Cc<;pH?AQBh(r@29B~RHaPr-$*J&y>b1%Np3 zi|ZGv>C+g*mmXaxaCJoDytJ>r+J2vyu`y4(CymFDhey9t=KCiSKpXq(BKlOopMqrC zP=#$ybS7o%o)e11o1zIm7_T&1PXt&GvlW8`HPxN(W^a#EH^cU*DnU;9CtAFoDzf#i zzd#07Ud5zBww-?J<%jA*D0=nYTsE}-J*`+58`rL$Z0Yz`HO%uUeT`+vBBT>)Z}rjO z`3c|5O_68k=Sn>N_Up!fQp}wr?0??!O-p!Bu82AuShZ0K!Txi#w9~vkze0^BJe|89H{6zkdy)wcU9D$~BFq-{}VIKy7#~Euu&Q8qEQNww%8bi2u^{kO# zBM?Gf5-7{~Z{Lo&TaV7vANvTtcpMEuI}e+2qpdhr09Az(qgVaj)_$OR_eX8ppx+8h z6QIU}aYphHmyz7&!8Z%)I3lk_82^N6N?o1BBqu~Ww10+79KK(u!B5DUCn!x=8g3*G zH;$GYyxy<_=B)1pw~;8kumi~{?dWtAGDDEj^>1#tfoMYg>JIL@dG3_&+Vu|R{zv}w zO^XC+tPXM+G&zS{cA5~*htSeTl?l&YwPW%^jVnw9bD%(+DV-# zX9T0TZ!)n;{*8ug zaAya6$#D?bjTFi4N#lEky`fp9%Y%m1)qNgo3n7um%U8I~X9d-ZqXaqv#yo+Fc;z=8 zR5&6>{$^4u1H3Fv0?swgl19OGkZj|XoCr25c^Z2JsOYd_SN*qWZcRq8S_G{4OWdaw zK}kdIdp0h8)EMrMW{8j87pH)vJ_1#UQS4G>v~9)hSg`f@u5jP0day^g?jLyLeblyu z_+n{#`C)Bg^sD4N(awaZ6CWfyTiUA*D&t=Gl;SDlqHYMr?#`~Se&+a#A141dHp~My zH2*54Cfb^awj7_PHLl7r8it#CCPT;9kTK`lV7>t=H8T$Lbgk=0D{5D>N-NNOR&j${1cRlK+jxJT zw0koMA2k><4B1pFi4i~8KtnJhsGm{nKp5Q=Fb_3pL!oQpJyh`c|CBuLDKAL{;cwo! z&UUzDZ&81n+@OKsW(eve zcg}HDca!!5#~zF%o!~T&Y#i&pD2zW`-T{n|g&QRSMg~7Ww?J8Tc%OS?^HjyrfZkT! zXDw*E{TS20?VQc|SXq6Xe0A#NS{?(2TIZlB_|2wLUWyf*huay0_;YrYCU+qE4Upl# zhVvPd)Mn|(GBCs7PUFG#F?Dj`^VE+94-kGD--5K-vfIzfQ8L+^H`qxxUcEEX@hBO0 zpjj6pW#olq!^AAPbR={9>*~GQLA%jzRx{kPjr~>O?y4Rxvx$3!x-N5ms7=MDCgTfy zT%^wjK0jgb{5gR${WueMhL}4~>|Ieu;Kvjr%Agj947Z+oTrjl)?5%+mcVWV93H~RH zSFZAiYLu$Ek^Xp1AcFricGz(Xe`@jBr5ifCM#mC-I=s?c3tbASlIP$mdp^b_MbN?4PZ|7Z(3p_{a(Kr$HxUQ{w$%mvqO|x&lNYnpIN! zA@$t&7(%b*MCkm>h+bObS=Za(KBxY{#iJ>uHx>%z%rAtF2KW>Kf};Jk2YN$!+&3HQ8Z7y%vJ+Y9y@A%5(1O{S z%YX>N(J#@)er2C8%vuVE9K2G+UrarA82=O<2Os&q8PV8@{|Py*_a_L?8qBcQ2}ErU zW0GKOw7&kV?(3e9+CSGgq7(Yb8r>0trBkaJ+LKG3wQ7qB{SehmH274iR$oY}Xg7|0 zMtZxgRA=BE^QMOr+mqoF7`IRSdtb&6Q9H?Obj2d3pSNkD`tsIpm!@=-AgvR z_dC{rqv7leZ|sHn-Z32SQ`crXVGMhOme(`XVwIgB>Pex|Qxeu9hJ7dh(xD_B|Coq@ z5x864IE#dXtbC{Ejh~&N8Ur6zzZrql!|Vz9?aQNmd^aI)Q$s!dPhRhCz@;|!DCl-q zrvzB8%U63t&MZT2DThGDUQs8tY2B~woy=}uQ_Xan5n90{-Z}s7dS6gUx%R+Ukq%-; z$jYy9>tduMnSC6Qbd&;M<0irpA0b$VD~lh^epVLNBTZYLJ3yRe-piiUF`XIaLSK%G z3FMhdw<_~SC9II6l@2Rf#|3}a>TsnM4P#C0E6_j&fuuV5MT?AkSITUye27L|Ad2p^ zYbh{w|I8_z0M7;SzwE)t9{@3!uAp&F8_8p|YQdagZG&itSRoPmQHq^_=;!|QAotB$ zXmJQyBBZZYX@cJ*K9McpPde;^p3d&V5E3?JdN^6z&3V3&Wj9Elr2r^zX92|RkZcU15c&$qR-&i-vD||D1YH`?_ z|9p5{j(i^T!>4!W1mX~^NdQYAgpHP#ID4jl?kdoe$kWNapm#Q{De^elHpael?RyfmCSS9KWlMy>?4-?nh zm_Knwq>wCVXuGJfLbPz93NVIIg9Y5a`~Vbl78C-*arW?NE}6Dw^?q$P&d)Lh&wb`@ z`RXdf%}6jE3H!-Xbvpm_FE#GZObHWJn9KH2?N}dF(w;IDL$n%9#a6fw1_kd12#6ih zJJS=86ey=={8|Qi0v^Vf7;kLH+Bl*CKF}# z>}HVPTq3*Nxb^e|6~y&)%uvOHpl`;HwFFv&M_>~2ls;550ILDypJSkDVfmb)I{b<- zGJ6)!YXUUfzUJ947$esV+o1D6{Mk1pse)^i%R~_`bz7+bk{Aiy6 zjak}P_s?Vs55aK;ih(PFraA7WPGK|~0h^`t^KKj16kLfEUC`zbSK`Y6D&U+TGo<#y z_K~j5l()oU?7LE%ZT$q}xJAkbZ`b)edKoDgDj>pyi|GuA2VKWrB^zuym5*BX-Uff# zY_Pn}mKwfflIb5v!m*8DJ6LYWYJa3VYtxp_fhKA>E6j5rm<4>vnKjR){p*bjXI_Z) zyiWgmefH^?-GPNCfeKUaB)9F=wFf@@TYQmklLJ+HDpdey#OZKxf`_(=A)tzjU}M?9 z7O)$dzfP((UGwP+wDxfiy7Ql33}|bDefbz%`HS@Os@=njtdUz{Z@?cRt0Hf7)&9#o zPDo{!Dmq|OD&ve|#;$XX#>63#wKY19U&Lx?d){CoNsb0G!%l&fI1J#A3Ri0F|5eWk4DIghOhRp#k8QYE*= zL0h^G2K{P(zzYXO;rj)68wgUf?MC{3B~`T6z}$_Pkf|F=eIP_e%%ZWL&O!H^4Kr`z|6=cPlpoPLBdV6XhVWtF<1WAH>={?WeHF{1&N)t z@jAQ0;3VTfW*R88jR>4^-*`iKPT(2q1S+^bf8}!1^Lr|Hnv@?H^}~R&$xOiZHjJ-cvn6R5&A$(KKH?kFd^Y^Xcd27$>CW4d3 zD}#!SgXi^NEP27I3VWT%3RAJc!v2k|a}aoR6hd)6Y3HSOFR$)^fda2iuVv6#h4Jn( zpWA#0+zf=RG)+o^nRj8^_ee0ygDRoM9V&wUV^vze@>hSS>H1irALFSG8zV67c_Ch~ zis!z=;1Wz`1NgoCZZv5X^l4h!nd!Zs8)f}|(?DIfunBN!%#x+M2{r@8NRVwf(23aW zI{Y??>g(jbJjKhCZXj|e(uGgNnXgnQ z_Yb_K1AI$QtN*?dI;qowh+03{TtEF<}Jn-GSeGeP(<^M9!T5=(`F?Gq$% z#+>kGaqzUJh+%C)Z)bx#;J?61l|14po|wv9_QVck7^hk{Ma`qDp0)hE+f4Rcv5v^=f5MJi#A-FFCwo&%Vg61c&U*3FPK`bi*^iDHODcm!YVN&k1U?7h|LXux^5Vekd*}Z#SUt}Iu20G> zyXI^TYEPB<*1B1W8aEReYojYW_PVf_61^DI+6pxWz)j=WgdJ4mK21wQ{Fj+&(7qWfj*uu zT5f6ZosHmLxb{_M_My{gLQA*)3y;u=sw4?2O(^o6P7qQRt}C^6CsCUz4qGY)^Py{F zYc%U=8aL9ExGyE#IeB)I6Hs0k`JD+xX|UG9wiD-gdT_`?^5@FUw$eOCn}{ zS^E#Q`kqGp+{&mU3{S#4pBWKso2>#Qe9gAsw;2HY<}_llEphDYuqJ}wXOJ*1L0q0f z1_y(>w)-2o6pJ?M$~}eifZjl^>;ZmlYotzO>^L?^e__ACHM%{Gc<~MT$072MheDy) z&n>ZI8ty-UJFoiK((L(G|61_S+_ZFf&fW|egqu}Y;|HmZjKhicS|z;8OBj8|mAs+{ zcH}G4&pg+CeZcHrfOO9A0SZaznVGw zemaPw0ehhr?i%)=nLFg*gT$@q?hwW$ZT5?oe zDD}Dc&Zayqx7u#XQndG^0D%2n18N+KT(Aa*I3d@R9R3Ki=~l8yp`_FJ?Q$p%>dFFB z$4UHD+)mcY(}{!is+Ots|BLd_o5cC-A=1ChzVKU+(jvOF7s%ox5e|L#ds7?~*L^d( z!8*u+KGQa6DBQDyU^A?r`c3bp8ch+f^5z-x1HGtn5qh}HX!$ZD71lU>+$5|+VSnKD zNshWwaE$iiCo7$oo-2TxR6W-BIF?%4 zleJmon0G+2t;5~2a>ml8U>nFCqlE*o9XR9pc) z`UUw_hYPN}7~hE%()tm`CK~=RVpbN}X1Z8u6TC8=#(N z%rd2IUuBe$m~M-a zQQFAjy5b@&z(xBB*XfgwA5-ZJ7l+dJ6JE1(e3XD8xcfKUQ2q{=Bp7rf*jIeZ8SrA= zH0<;Yl^|VCPW=8(-9NA|Vk&6@&lB%JXMg?q*d+{~CiR!7SIsj*4&K}T9@^!+;mJNK zQ@0reDigX|lT|Obi=cu!LI1KMnCs2!XeoE;?HQzr%1zX^NqNL;hfm%#%kgDHRK#4C zF9t>?ZQm8l93utWcqply%XlbN;-NIBG$Xz2SZ??~VuF*PK?!IqHL2=T1tQtbKNTqR zv>{2IZPNE?mUH>-?Va1PnJ|UA#g~O41|H7jK^fU!N7} zQFvCkULmmo$+P{`ty=drF+v)0Boei3DOyPDChR`LlrT}45dKZKV3CWKe3B2}=n64K z(h}eBOUXtM!f|$HlU@Y|e4Oh=H{N_l9@T~0Ij!?w3*%_KHb5mRK1crY8tjP>qF?hcj z_)5kVrc`7OOa@$5s)vKE?Etov4FgL#`2tp@aoBnRXUiK%n-cJ)aSR#SnW^o(?g>GtBVznbd1lsb;eZ11aK1=wlnU0AQ-hYEv~qU7Y^#+U z|D~O$KH(m2NZBeHVZmjFYOUs!haC0T|WAT|HN{hcKkjCLC`EfF%p~`QgWl%Sc(X?&Y1$YMn6anmaZ!O?{m& zb?xWjx-Y7SC4*`Mbk3eIJbraYJPmW;nXyas+M|khx|D7adCFO0Y?kv%fOYl!i+6v; z-ZT#gBPnmj9+2DHaXRf$|A`->qrh_y@WTmfSC_&DqS*Is32JG{6(``^Bg|{I$_mHl z0V3@u#oI!ZXFoqJ z^%bUHJ3mj*SeE~K$h*XC$w|D^5reHKe{{p&rICur8_sS$pQWlur%NrT(r!#U540$? z?SrcD7IP&rySm3~d=;7qt&<$QG=q>}@~XXJY~M43yt9n=iqKbtlK|R!j{Yha_jGC( zLfGb3BtlQqIrtx71MwSEa;fpJ^b%&99dNr(>b}6p{L!!P$BljV@LGK_A;tM2`offQ z+Rw*(Jd=W?`YcmPk=l{(h3f?xcfX>m%2mh3GZJ&spQ2Tmc2HmJ0P7gOsz<-kC~*F} zpojn3g(b222(|*LV{0tVl>U_iy-@-xzhas39kGWWN4!0*2UxyRw*YSg;Md)F1ny@+ za75_Z$xF*bka%gFQ97N_a%_Y(K~JQ1pQOGs-fpbrX^ z!%E2B$_ z)D)uP6GAI7=(eIU3LtTQfJcy?c%DwE;`f6%rv;BLkru#1p1I`P4m&nSM`>PG%6s7M zTPMbcI}w8;db>{7iTa{;u{sNCf2fWmdt7?kW>>O8|1Ve(rBx(ZORzmcaW4!wTzI5i zLe)AdIZLebh}WjG7x2=^k=PXL<0a7JB_NS)h&kKYaJyjSe@FVtJhXLh&B#b<%mdf( z7k8>NKIZ@HhJ7}rf9juzQvkh4Bq(tQAE17eI~>^hJmxnan-Xz$0J;I@aYl*2NiCPk zR~~ub+Y09Rn-dG$&jVS9_k`y`KJ^B`8v0)e0fWd4flI0F&;5<(K3i(P!9Jwgm00Ij zbU2l^4u<{ntyFp(r59P{vm-b6VxMPvS_+P|@1IzHQl)bm-DwISgg>#5yY-pUPA!95 zsc@$gp0;;W;8%8(^mA!Y=bcaLCNYV`@eWX}0;@F^;ioz9Ls9Q4@0-W9vy#Wq!|?Qc z%VB?9Z*D-ZX}CP)_ZKaN26+wrdJudWj2(yKCdbp{Pu`k=UTQc|D)HlLmwYtg>me#7 zGLpOh#l(r%)2_EjUN3o(yPcacHLDU3>82+~5jD98<9ZaJr)Cdzw>0}GV}cZ3Xl(A; zy?I{V^{=;SsOV{RL|QxgnaPsj%B)B(Xlt4%z^*wm{(&N}E>(WzI;R7A@2W&|t9|Vn zzTKI_<zetU5PH%8|46hDymU%3(5`Or4&S3A!b*{iC%DY}CdSX<|86eVw?9KAhN$xy- z3v1;)JC?>Z!=8B`wh|!0*MBi4dlM>IqH}51iIj3+&&6kc7bDVoJPWtOvLb7UxQCCc zqr9B|-!&U<>w4;JyrtB9MEB{(wg`1gE$!oG>dx1uF#nc`>9qfFEE8DEt8Ct|8|(Zr zg(9CAO{Kg$^GYdiz8^LDF4U-S3CP!ak~4(5wZY(%^EtoV+@*!YO50WFzxw|v+Hu?2 zy#Y?(pmIVMHOcQ@&Zd)k>99jAOmo1Zd2%l#%y%lGExhtkYTIehzxvL0EUd6XpLRfg zi3?PCW_ecMeM=m*DEI+e6XVtV=T_!KTYx9L^xRd_ZekLDYR6ANTIa&<0`RMz)DD^R zOC5rT>KhvKk0)sZn~JqEvk%&8g{~{Y@yQ$505!qAcRB-osvH)yr>n)J5rDR{o1<0W zS%|tUkFBpZi1xK&^NgUY^RR5+BbO?GPvq~Ga6GK@f`IfDrt@pYwr%BfB~A4csM9oX zsQ^9fiQ@ZE1uRqs)*CoiHwmc|oSgu?;CZ2%NQ3qAf0$OUdzr(0#cj`V=m|lmzu@Fa zQ~pbdB@jEE;D2@?JMiv;+Cq^W1vydgTzo1S;}IystR1P-^&N&4NTzhfPmLNh~WVpRA)8AC3pdH0<}{RZPnc#UBFR9Ul8UX@;H z*cW1AnQd{jWBZj+Yoi~;YksY?2m`c1F~&wnX59LtK=H6|4IfAZ(-fQVUlFHTvaJ4K z^Jv&gzlA4^OX%=7s}7Dq#^x8?_1XI5D2-=5D8 zW9Gx1J8taVd3^1z%;y=Vg9A(EZ$$N%$Oq3X-~%uH$3_0_`40Ro8`pF}E$EJ`(i`yE zy1nW4p9Rq!!!(%!bjI*rO83CTtvd&vo-oR@?>f9NR1lyWdLn|T)_98 z)pi^h{0rLUKa0s@r|f|~KeaK2&riLVoowW+N4iFJ%HI|dIGL#zmugk5Zxo#fefBh2 ztYG1B$KtDpEMLcbYOSAPU*vRE_oNV1?x(AL@Pf9IWa z0}edf=c%AF9NzNIIwP_d&Ja>liwtfLZUkKWV@uZ$X(24;`Stnz^=F>ve~r93aP17} zm$3I@%|R|$$a+!~IUQ|M95{c-dg7jw+d?RHVy1%dDB@p#2>#uAn8ZxeTlL$&G?w=R zXjip=>~@<@mlg_ipOe@^EZCaH=%>cMb18XhFg&?XhQra;bA|eeFJTF#6rbOhFRKZw zW0;YYm6M>(C)x-meMjiO1MuizmU+`oDNRj56nF5mdG5*kuHO?pcqVm-K_6@o4KTyL`eS24531YDEz3sm#@hjmwv&Q@%kOM z)Mgy*mn-I|GaB>I_%G-7TV$ws=Z^y9kpawcSy{QdqQe_ak9BY8s)$zqx%}cz#mhf= z3uN}M{186Dy^f7(MhW-A9jA5wMqT%NjO^T(jYBjaZsoJ0s1c#DokJO}2v)LL5M+Ka zr0M_nh?+USBQfawCoH7kwtJ#f+pC3*_Kp9s(sKYoH?<3j=$;H+fmH8r7$udP%B@sB zcZ>^jEZMw0<5B1?ztS+RBFRcRousXTEs-do@B1ZO1D2eeu48os@?+%*&=3HYJIBW~ zGC@BgZ{0(Rc9}PIH5m;k?wU5}S6;xRZm4nIh?^v~&)*OL7^~3lVD5f=oZ>!L*K1W_ zaRK`sV70xTT@Gz8Q4XI(GU}tYHpIeRFy@n2uLA^H#{|8M`vMM&YFS631f>z1vJ%1% zB&4tIoF%--Pu{8NDowle{=L0szE@xb{{d4SxP2c+9pW^|+L%m2K7D*_S{b~2j`|LR zXu_@4j(>eVQ%Wf#CIeEg+ec|T#Qh&jXW`KF_x*nwkrGKIMzEAqib}G*v8oQ+xzqV{Rey9dw0*d=RBW}qqHlyv}_d8i5sjr z5(;Z*cw1hvazgbPS^sxHTw1&2N20$m8tji3S0Mm#k3|ZOme0C}uc1mO9LUdU2qCR? zag*!kb}!QhUO8X`$>Fz6PtRqH2EKz-JkjOM*Q5(fcYg!%7l_u4?CLWNVBNB2V7il` zPO`-EIi1CKEt_-J=6zJfGylTGfsB-9lUV>SUCf!#meEK3E19(<2eG+hEk&PhW$%m1 zqeNp+|DpQN6__V5CKG_PWZQ|_)V$t}CR|||2(7*%D^EAs?nVRJRzgpKt;#DdkLLec zOv9=V#vnI6u;yZketLZ$MG^U5-WFwF`hbA5IyrJ$SqbN))#^8eNX7G$bwlrbW74rP@ zwfJTpakzy(XUMbGL>{^2FtfTYywobu-d)uCqDl@+FElVaFgWnNEYXQ|G9zd)HI}a^ zFeDk~vyVaTnXjs@uNnKvAGP)!E_V!I^SAQRh4xHIBa*fhefL>+;=bD?R|)^k45G0< zK_2V1j0Y73A9WEqf>IJwn7Xgd1cRdd@fhir!8N|(EjAtju&qlO#Uf3KpUa)seixk~a6Wo0C z;o9a|_cD%$(NFpP{4VrkTDU-z`!7J_oA13D*Fv~R&i{!6@Mz=To>N~Eu<)j*XQG=$D11 z^ppg!s&4v3Q4B17zSZVS&bpUVp;d7BYhyVfOPRDo_+3SBF0|ke=nC4Rvg?leN+f3= z!l60tbOaM#-4Nn22}LrxJud-0Bw)2fr--|7eI2*&8GvQv3SbNwgtaMi2j0XC6MVel zW{ZAQCwbgFgzd2ODLU9c$?|>ATVH-=V*7RAG4CA%_BVcD;V5_ZVxVtgv+~s!-@ehF zG^goP6)K7eQ<5vvMjm?C;dAM!hlo34@=-gvA?=|Dvj%`Mu+OPCNz%Jqo@(!`ZdZOEs14WMH z*(}J$JTs^IZIOG@%u)e8l5ZPRL05gK&x)_ zWdAF%*BZKb7J2l{Go)%okXxa(D6Da2l34CS8b7@YqMK-qdDexydeE}LpA0q&-A@-d+B*hr6rwksT3H8b%fAS0LRohG zF*(S4!*96}AGqW1_I8@J-Cg5%R$Xazo31=chk)uk0}!i^HOKQbBkhTes*J^D@La9_6Xa{*1&(-Tdl6j~J!DGwz7-NU<0Ax!v! zo8cPaIW?AuqhJ_y8&S_Gek`)`uy_Ixc0ox4sa0v_m2>NOxS}!>$bb156dGJ-Qie&t z=?@knaxR$@Qw4~kUBGk0LVOj>U*!2|U+kQc_(br?1*KGq1h}})ad+ql0|U#ja;%Nw zhx8_F*mkGo`5v^^#9!UEOW{}EJ(c@=sE$9&>Db6V{b(ySC91EuB53gfPjkg(l9S1! z7C$Bc;ZsL+ySdQKj_?^T^^E4p5*@w2*YE_u>=$`)`jT*Y&$M{6AGDe1!;% zkp9Ini&`9opo-{X+X<_=ICJmSS<1aI7GT4nylMAh(C>i29HL?HWzC%`lN^7kh#6g4 z#HX6oeQGv<<2bVw~qRx&`_69bX==Y*xrI#4GesBDdC+XVz4rrYmZ5_O) zZdW=h*4N&5^+3E*lwARY%rzTrNnbs))ce<@X#y^Dc+bmuZwyj*XD!ZWFu;D$dc=Mr zbn(SX`i@0K9?35d)8;jY<5hY}gARQC(~sl3HBK*;nAUw6`pEkBD=7PTBkbkGJ1bAe zhN?*YqMFPPKZfaM?=O4e84q|cLx~2 z-u~|C8}%THmhgL9wE+Y7UOkmVetgyZw)feDU|A5Y(tA>#z-7N8uXPu5jr{c^LMFt| z6Vn0qg1a;fP%0COFwGwDMSt^%6N?Rxp423N>}zQG_yB8haU*4iv`PIbjRW7{+s(jne)Rw#i(^N$e+nSbE%rNcFW#{e@izd*&Cg( zgj!qgYrVjh4)s68IUK+X@UuUCWb6kA4?QP@s9t!p*LnZ5x9Xd6!1|>3mZ1|Nr`)wtXFz z8*BBTmsw*JaOUc&mHpBErW_&hvN}*2J8Y3rWT%qO&2zWvHb|XIKUN8Rlei!;pa*hql3j#F1L zma|?xpogsc@{60`C&*ahnClv~UD+1oA2YFTr*v+o_DB7C`@^DTy^FUusDGV#=!CGl zKjNKtNOyO%ECQ(=8(LQHH@%5!d(|)d_n4wZ9;aX2ZQ|rq!}N;Rr06C~gp9#ejYo~a zZNs!1*^)eD&7tl(u*Qw0xE+{Aosz2^IEBE(Qak=w(jX1 zT$tYf^!`pf`l10`r6$#99~ryz&X6DT7QZqE#b76i#VG9G*;+rM*(8A2v_bY^{by}B z6EDxF(VggREiE3LFC+KEL!VY-!Hc?z^;j`A1DcJr{+LAequ=uP*Hd^_WRJh)1&qDJ z798~^@vLUo%&p4%ANYP?{qXFvP%l;A?;rK^k)EHG3}=t337i!lY}&T{THX^gE24gH z65JF7Ch9RQci^@gJR~GuL63Db&C&OD>7KT(N+kISvo#1>uY=WT3p9SM5T3noI~CZ6k}v+^c!rUEdEKKc zIi_lN?}^&vDN&oSZhKh|^~YXvpSUr>#5|KW+W|#)8%G?UvLcK(5aK8h%PY`B8)AJiEXxYiTY2;+6IPsCh&byKk03Vg z9D1=V55c-P*}$GYROy_T9gjoCda?UQL?t~mTcM7T$eW;t*ZMjYgnEJr5%a8jPFKAO zw^o#6vCo&Q>8~&dm8ULC;TKiQJE@ByRWQ;^KB9LY?y|OjOx9P{Y>BAtU0JUk140j} zP^ECfK=^7nfQTEZ_AL)uIz{c>B>oBhS*8E@)Oe!%Af6v+*EAn-cLav}rE``s z=uqY7Cww_wFYK7ky7vUyM1NaOQK;fjqwyJ!BMLniL|btvt10(OfxC%>ARuaM*26CE z$6wV`X!+h7_V+U&qtH>c^c7(KS!J1lo3M*{~iEHaVh*iq>8eN*3G zlwaBNqorg>e>uGP_f20RGG2xT5qZKlIiJ-*)M=~XcaMm#Hd=gb9r}rsr*qrfHhR~7 zbYMb#=GOp+)N_^g;=UN~Rf1l3ANY-Lzaq-V&4^D~KBg)OR5;DH$2TB8RW~=VVw!(# z+iu_0u^RPsX{B@h(Gk|d=8%DB)jpfx^!Z|7MJ;pW1=H`mFfr@0iqy6qLBOBch)#s> zlMlGti*df6?E7m2kC%4?o*zKbTeWQn=m});>K+0M{y3)-yGs=nzGiQYMa&i}6fPV8 zRab`@sf^(IeG8A9Ga2xI)#0ykrDPC+dEpI~0m&5a`Zi>qgZJi`9V$mU^rKaKSh#J4 z{@9gzervy8koA0EH;P0Z!6<-UW`qPEWD+U!XeMwAmRvUbx(V&&U$Aj+#Wm5Pvfrq5 z;HM5i8tWP*wU@ab)J1T`c87N?l|)~E#Bm?_%0fZ=Eref77d(u`){C1)D!YD2iEArT zLRrFq*|rP2d;X>>CglplZo7v7)K-GHg^GHw>D=s_^^l?Io6(*F`zKBBvHt3QPUD@{ zUBY-s$W(kk5TSd|71w}p1Qt8#hQvTlKl-<|kK&Ok#T>{*{4cE383K45t(0@cNOtdC za#h`C7{c@2N&Kcf(fhEp4Z7X{bgY1g>M5chWM}4d7T?7^&ZC8WAoI#jDtGRV-+@za zS*%RPJhd2wNRz{R8bl|F()$l*-LI*=3jMw&`ev= zyV2M_5qzTb)GLdv^5)7|H4kjD2h)08Bb!(9&N%z+#_?_bsM<~B_Bn;PJLY|R*zZ!} zQRzD>1z=mH7upmSw7ZYLMCHm`ul+bJDV}Riu?4c%who{+CC<86oqIh^m>OS|>Mu9G z;I!zT=VmuqtID{Z4&aer-mwMssS~C0<4>1fA(jUSGogKdN4kSmpklblOB*Jruq z-Z(J1CpoMS2<4NbZx#{=rzynw(h@CWaVQlOErjp_wKlA-$9d+FRZ5LxeTwHUhtLkF zr;@Tyg+WOZELa^<%a?CZx6-3N&iPn@DYN8;h_TMQBk;&ey>mPMNS$!zcJ!~|Skw36 z9Q(HAAVAFEsg?{o$$&%pFs1Se-5&ZQXXP7cEp`|h5{vDZ#}6OE8)gsZ8{pt*A(jQw zW>aZz$A{#poUd ziEClx7xF4B5pDb{k{aD#(f6mMSoYV->2sC|Oh>-~_*}y9AJtG4x;Dv|v{!y^qi&<9 zXiz0hrYiB=GHk+4DgeE|4ZdUtZ)9Id?D@ze#i4Ob+s`nzMt7}<@g<~Vn*GqtNbNT< zdof2%s-Mvwc>*s&P}8;Glo?3g(sCCT*QNTt{nJ7D#UBI!GZ-x5Fzof?C7}BLDdu8& z&gD8@;yW~_XXA13NUZcg0`anJ@yvl%ZeH%Uv`JqNKs(r>=ddN*5y1<*68m*nzWtGT z46<_rimo0NdX5el=ojl`M@A4_)}xZ7{o^5vd!BlK)ooUbOeuTa);=J9LKk3*e<6*_ zOCdWXJrF-Ncn6#iv#BFKr8pZ!KcZL+VK4KSNh>O9yOCO~wbWv#*aPg=Cx`9dD+g|N zV}L8d1TK}lb96Gz7^Pm+k6`c!71hivDiTor6*r&QfJk5ktYU13Ly(^$(^r{p zS&^HWwJyF{_P4fgdnOxwLAB(2*L5Vz^#ce~PK#KzptevHR{dZZv&`5A4uerIDKB4; zq8N{bcTNwFL)29t0KATiQOg*j6r^JX#fR!<4Eqzl8V&FV@ZSO8=E@hT)vt|@k{gb< z3Cy$m#%it|ugAi#&hsL|R0nAjyeP%OT6=(2*5SxkcvM#BX*&@j;0L|v0I#Z@q=S7d z(g?~G5%WYnbqD5~jk&?0e@DgGD(59}f?J;Ba@N@k2`S;$omH|2Ea_ydnTZ~BO&e87 z&totWrF8~t_Hl%x_@riT<$yM~$Nh|z#lgey<&8r8KFmJ{zbUZv_k~mIR#o#@ZvJ+X z`e^j3JV6eKNDq-ceZ^spf49*KEZ^o2kVqMRxv)x1+P=vIpG5O);I}Y?VAJFqr5q=t0ayOV*=2kNK_I0Y4*dq{J_eUXE=0!==Jg= zqDBw=aIMMnni|zQK=|GHQ;Z3Akw+s7t)HAi14a6Gg4qv=PZz#xS?NM}+ z_gyRe3^n+M7j2DZKC`lmHR_6714&>`pY9#I1`d#g538r;X}Vx(_- zA&g42fX;Uzn>@Y2*afI>Eof<_ZPo-n+jZ)3bRi1>qT*WG;KC$2Lyab-@kSaYpWj(3_;@U%r@8>B3 zD?hgO&=5od?Zwi|^30z07U#l}OZvDnrYXhnX@;=}b{B;&m#w&B&TJW6*%Quy8o?7E z#b-<}-#AwDzrG|{p!JVq-Jj)|Dkr0~d!BK`FM30Ej?7h^R9I^8Qs$@3d$Nlnwpb8L zsba6xn;TQLys0geea?GmW_fK91#*>2t*p){SAnbnzEQCSl|n<>i9NGXuYp?2uo^edWgHJ}JWNL;A8aHF|Gl20d+yA1-ge%?21N#>#0`!MxN7t-t^%@*L4B zqKc7U{AdB13|~|4K2W=;1p5<%q!Q2o7`SwCWJSQ)1a4f&$9jsN$TOq!=&oyG(1#QR z`q=Z3TIHWb^V)d_oRvQpj%r?hmZDKhf2GL<6GqXWCeS1MwI`{@_Q{y-ogf?>RiK8Ce^ za02@b>Wj~yp}UwoUhBcrc*BmJboH@S{?s$nFag7g+NuRj6BB6L9o))KyDGxZRUJZ! zG5X{$P|>Ngre}FCnD@_Dq{Z)nw;&?#$&B>(#-J{2d&Fv~7Qf)T7_a6N8_Lc4pa_qE zg<=CUJ+Dh>SAM0^`gU88LY6MzKYWWY{}4;@QrHh2*S`V&5PX|ROrC3cO@{Gx#VqJ) zA((VZDn3l}14K>Fj_Y?k$c}yuQB|p7)8^Wsypf!=L?ox)3OtQPm4DeUIO0AIDGC*0 zbzZ@ZPNx#6P8Qs1eg8x75L>+AMg6Jj$!S%!Yv1b;H+~;;6M;*npyQ?8ZcL458{vxR zYCI0ZhT^q5!I&25cEt5|(&8}`ExjnMin;Ut@NOc_7P5YeQ?&f|$Fr2{ksE(qnw6zx zdq3`Oa;nDV8pRFTwq2Q{m;+yL9r-yaQQuSS<8H|s)u&jAIBfl+)DknQNJeP18>*)# z{t?=gSAv_MrX_@Mg&_to<3gYz`73p>RHB=332d^kS_4LV5iz)$S3Pm{^mL1{X?|uS zRe2ta-53pfFLdO`Rp2`WDQYEZltj>{qi$qGJ9is%6AEFMI9ZVWqg=t1%b6}mvUK1p z3%fmQ-*o@@x%4x>6l|KDorzE&DR^2jT#=Ta!rK^LvWF88CX!R01tgPC5w z{SL~el#_gm;?sjCtY@O3_xYm%^skNeg+-_COi4#X-4}c8$(AM;LWednG)y~uMx47r zGci!yOy;_x!$;odoT`!Zg1Z9DpV|^(|IqAT0#sekw%0v|Zo2LkH6F0)pI1=~H+26( zfA$W<%``1hEa27ik z4RRX$wA zk4z!K8KJU0fV*pgo;xpf1YJ`&DS^wcDb?em+wIi3WE-w-<$ zd%odVfq@u#sDulb(cG$>2~SbSMdABL9F!+a5ifq>VHQeJs2);bTQyz`8^(h}#J zSV~jy2$it6IkTRH%4$VJ-_l^?_#N%XClCK<6`5V#cG&SR*h0v_hh^6Mt5>If3BxGQ z^NTN8OSp&a)SpLkT?mGA*Wr2fw$kT#$6hlR z`xjhaq7m%qQ0?j!Lx}hF?JS9WCu;)%g709VChsc_7ORxTI$YeFw>e%vE-3!W?5s`xpAOG_}>yt~*{3Hl$+^p`TZUw&klgTCRC&HDAdLDWU2)@&5M>&L0-nQ5`L{F@4; zsik=S4iwERdrtok?#EVPw(*UR)4JDHwKKW=s^eT4%rBix)MS*PoBkn1a@t{UW6tio z|H9mqCQzjlpgD*cMf{U#8go(PNbbubpKRqwxy?Y^ev71;@eQTGMIu{v9BSLX%+0X4z}d90@9WGJsj*S2oB6PZ_P>P} zs+sdW^W6>}68@~UzAZP24E?N}a5MPwjHnl(xrE@pEh?rfjYfca;5+_LX{#;m7 zp}M<0&e{?w0KOG_J^E9PZ|~~QY(|4x;W@{T#O{cUz#`!h`^AQTG?Z%8!gBU&lYJGT zITBzoQF$oQFVWQx${AEFPx)^A&Fy*TzsoZVHQNi8@Qt zHRth2fiRy-$af(7AGH(^pxG?sp}X>zmylh7L%Lx6Q`@Ya{PhbRXg2D0x3SQq^kr5~ zcM)vdra!{t1mL@`VDlBKS5!rH;$dE}Z;!Jez2TN}!8C$P)XKdI4ubzgCw9 z``!z1@KJ(Nl ztwW+Mwt;+0h>MFZToZRapR)2wF7=Ag5+AL&O zj>$Zhb+o{evHg_!e#1uz>jDo=TlC&Jpsn{$9m}I(^n7>gR3T%nB&al3QsGtlJmsW1 zlTSNE)7!Lz!8s8(u|hXK?xx~PwlSVL({1n|t-)XJj%HqS=oe`50#aa0GLF_O(&w`r zoYF6uHghU&^92URu{0#b63tdE`P6gX#>b3#;bn;H{eZ8nW2Jw@S&m9}dSWhb&$|Be zvp(FXIcYBCpsAy88j)wRcRG2-3~GVFFuCaGm`tA-h^`_&obY<+^3YOVHG{s%VHGYL zan-2RjqSco&dr>3WTC%IjhI)kv>Bpe&S7y&x|?$@3cGNN1q`D_(X&&9rw%!OXQ5Y$ zS}h{xTmzK*fyxXZw__UYjDJUMQZECCf9hEgMo)uoN1SAQ!`hyk^FkD_XgqH z7`_2B=p8!`WCS{^E(ax!Yz`(ERRqb-KTkT2#^np&kE02OHPiA26Xk`e^(R+Hib8zquxd2M3I=q%Y+Q|R+&A@7WH^IY%ko8okRdvXrn1^;xoo@(8wcA*68Ot@L z_607kb+i#AWXRC;L&AV6vuQHCNyYFJVtU$iD46fK%3u5eeCn=Ayjr|$`q0~CF7msX z?;IHfY;L|aQyA|@JIeeiBeR%fgFXHrX9W~ed(nvmO$+nS4Gd2E9+N}M51h1shx%JN zjdf+0x8aq=xO@sh{ffia=)*Wvu}v zqHeuRMyLI*hKx>D_(vnMd7W6LN68E`6R*qM%%L})F9J$MeEshJZ~e69-+AcE(EL#| zSiY4(Z!lYJa{2F(oyw_RU#emz3UC}FC$vdXV?5*2n>|4F-CA7pkl7`gB=_>M62|3R z%N(mkC$Sq7*0n2g$or9NGId-HximTtnuAYkv}SHu-xBkYrP@IOt5 z3ByP6ufC}Wr#*{FHDmfMXATq$y*2Zm3|qCKdzh8%%A5|Li#Y<`_W9P_RTpU8ScI#v zkJ)@FdEO43t8mCmo7+F7pKHdT&j&~JaP*?^bZ~S=d65Lu{~C?5k&b>MfQ?*)GlSuc&$C2|^=PUW!w~7AVE;{7sc?gh`17WS zb!RcGSb@%aO#ZFEa{^YfL)dt%Zv}Kbj@= zaSk)V8<9=e{p=0~3-M5ebCtH z-QFx!MzkpQCE}C0SLu5G(2p+JJ;_DPW?NFZ^C{u4|&&Yd|{uw$F3cJ+0*-2il7- z5aCPH&BS>7b4w@oyKcZJ2a;v|2mQZ>r3c;!^MiMZv&RNd;JJw6Sl;eSLeQF_< zw1{+n{>%O)>xK}$$X+*ZDDz+-chwxj(2L}ERYDE^bd8=LYi9_2&Y!MSaUrgaHKsa0 z8T(>1>HxH5#sVIG@GpSNU1v?7a)v4WBB%NXT?YKrM-LcRc64WMr z8td+34iA~iqKEwWl{s92(aksxCf`C$N>rI6LORPz{MhIT#PTKg3?z9JOEUFR!)7-!6z4KJYmTqE+lQ*Zr zuZk10%(pwmM zPf2($T(By}m{<@EaJ&|d_S0PVo-%gchg^v!2JI<~N-QkPIA_hL`4*(%S)I8gEnm{g z8QpB0-zCeKrf~#PrN*Y3@iyx#T@`N)`c~8`&s@HWcAqF#s~P6mkc+A<2X~ z{e!N-autH_LD)XE5|oZ~sF1#b!;@@?_x!V-x30teEc<`LHId1k*1&&azX^Y7Z?o}l z_KN#)>MX0t+doh1zHxI@J8n;v&_(faU8ibmuv}l#&kqV9;rvr zo(3*7@?cnW!)}H4&!xe@t-J0!iQHAO6!QavGVpFzv1Y5aCSCQrY3|WYZGTePBl~5e zujr*FWCkxWdNX14uJSAy<)hLSCpO8>MYmIAWCu*a{mt6Nph>|=PuzEnGg4T`QSsR` zi?mJ`yNlBoAnRoL^kDrUn@pztq4}>>!%x9K zHMM2-Zim8ukPH>FyZ>XV0McHsOz}az{-v@Z>x5UZe}-EId}JEO8uL59#lJpSJ*ArB zr*S!TGjT6Zn45U=vkTcncIC`{$rQDDv!d(kfzw9q5S%~w(FY*?TnZ!E#Xfz#^zW-z z@q5wdbYFAmNo8Ns($`N$T}?+NzHcnlFb4>7MjYHrKTRw?WogBIh*hc&29?M-Q(WxQ z4#{k!CNB3SUeu_?ZHG@;IKbUZu&>hQO9m9mbJ?AjFGvb}+oLw0C0Pf87}>3}1b(_3 zH~(0hGk&5N@Y$JKu-P=+cV5QR#Fk07Wb{KRhoY_iyokIrU3JY(jxw?Ov8#K_sh4y6 za<>FSZGXxDw6eC6eB+j@e#t1muIO(|))%n{3t}rsCA06`6WNsP7L9Arg2)t$9apK; zaVQ$pzJZ6N8Im@&6oWkEXblQA51P9CWx5#p3DX?|mITy@#@ zFIQT$i2tXFQ{&ieHCt*|U`^RPnud%<0P)wx~I9R zSS?)R0qYE&>U^7cMc1+q_LFUvQ=MzJ3kwbD%DpjJzQ;1ytz<%os#ch-cvO}>$2L?$ zI{&J7LlE+4&in1PjD#D<;H9$cn`_ga4$GmirwBvM^*75cIN9bJ%8O5|pYFLP(>vS# z3Z5nR!)q3IH}LLA6PXF@oBnSwh3@xgy>(BEvfLLX+ZEUi^PXh?WzRBB|E$%;Vr?J& zMe~sSb->#LL0%li-9Ik(pW4`*;B#bJ2C>aG)I&DT=X2sj2T}CsoVhDyoi(IR=plvD0ou5S^}YECZhDuCUls&DQMpZS>JT5c zTjQy219dgz81Li<>?S=O9Ce@I6Bfn(kFIO* zd-pnL@{;7Z1J`&!bNcn52{LU|%K6S6exQ14_ay@(uQ<-+Y|?($|~ZGOiTp|b5Y`op_7FSP679L4afPOnXb z*Qpp7aKZWM4%>b(-k*G^t{9Z?S<&(fJiw(kAv_H)CA&8@&=KKi&f=>DD-YHkfrNNP zj%LLM0@Jz~el9V|ve8Bp7bJ=4MTGz#Z~E=O-Yi+d<|{6e5yaIHuXC7T5_RjZ;Bxu$ zcV&0;Iq#rRNP3r{%5q<-;8P~Q!P5wp+3&7U0P;@M`h1b?nQ52mXv}HQN6qfH!=)U z<$I+h$7I8QwB{6yLa-L9G}VMLsv-89!EC-i@)=C2CsuT#Jq{JCux=*soA+iP&S1dq z6V_D4m*ys=`~_mP$KAZ)+zE1l^QADVj}oFH0_GK^qpZ68LgM9i8lO$V8)7pysf20Q zdGk_VhN)bUIR3jmvqG9LKgl^rHQ3j7B|hI1BwexpZGER_{&hc z4+yvVrb-j`ch9Q_IyGXwfJhZLvN=-CaOF3n>60RR+RamT2ih3%LGL9sULV;Cn_qtm z(4FdX^Vc4H7gdRSN5pKlg{Q`i#BpD8FD}5ausA=tk!{Z~-7sNQmQIhe&hxb>-&~G!;nC|7v{wO%lan#3giYE5|zaV;^%2cbq<2&5RgGs#M z5(pow{bk)8mydACK z6F>1L{vy2jPdLT=T$72@&uS*qw#dX|;{8*@%lTR3!RPykf%#kh{GpOVYQpFGZHa^a zH!X$9hIABLc*`D9^fZ4))#G2-Ep-{_@5p(0Jfim)nt3&Qiz8D+R9;}jg$gd32Es;}37vskz zYV^E>Z?yN)x@f|?Mk;?1hjaKiN>K(a86Hzw|`3M_xRuXU0_UK}`tB4zVG+(f4Lh^S4o-95=#P z_Y4Q=&12-#w_Y$CcsfO>JPojQOv`tA(``p0h zP$j}M>}U|lEt=#92f5$%ORLG8$;~W9GHiV-F)JDM0~DwJ>3;F+)?Bu5hK+$p6r6!_ zh%-;-B3LoxnxtYyatst=wJAfLf;q47k(rNkZ`rwIc5p}o%*wgCcNp;k_e2jK6su`{ zV?VDUg^bIV=+?9UUGDFF2_SMkV~d*?*uI?C{JDI5KBG>m>idOB5Uge5{X^`^v2Bz@ znN#z@YmERR;B(&KgmP;UJ*GmzSwJ=>pQMPiD&D97_t$BuiZmq9gj63lXctHib^p*+ zirz}08)P;oKHZAQ%G_=kG`|^5pp9?(np#gpbKcbmk53yam~LxMmDRu3KN{njIaJ@* z*5AyXN5$>v^oVd8WLT6N>WnAp7n{1nlBVRR&Tl2_))Vk5!@7)}?=U{fF?DF}s*_7O zHOfVqw$YQu(TXGm<5%f329FEVFu;zdaTGiB_m}Xh?-^W9^>`QpR$x(AGtmRiugCc3 zKaGjZe@?WDyEdG2U|M4Td#kbfZbbEB?d_?7NefgN-5|}43{|p%MBkD@f2z5KJ8+<_ z8-~ddCdkX(~*R>POc-S6g9{?qxR} z$xuO-V@?`&IcYiAu5$DfkE17dH)Dn(|9uOxf+U|3;aPpnO%YWx=MG-W4#^6}Tt=!X zr`tEVMUUT+ZZ#Jc`M-fXKn=I6Y0nwbQl=MS;h*TU0z*JEe1|*Uy;?RTJb`Gx-cM3aweYCuP4Y`+*O-TA)HG54Q2d6KO~05#l2m|o;IHT0hx{IB%+ApbCPclO zU+9l%TV^b!oqw1`v{LAVeoE)h!=&jLg89*`=p#&%K5m!~9 zVr_*|@812}xS5nM^Oix^eeeb*)q!6c>3ax%1sqQg|?yPB4_u0Du42=y;tH zjiZH#0T20wAN5GOo|0#fJ)BsJv(g^nD*Vvs;*hKc=`@BELm`}85C%twB8awU+Vx|Z zW|iOiNz@P%~+@yZ$%BrwuJq!@N)q7b%}GZ&JSAb3I$SP(%~YI zZ|F9LX)2&DBkZ51jIAY-OU(WK89n!LQZ{uumn(F>`PGi6oA2mYxf)%Lqo_I3?d0*O6PsD9};ueqwnmfDFHk zI8&y@4jn(?Ge#i7A_p2IwxaH6c#y}^S8BZYzfV5;?~}(a z1IDR$`JDb)Ya!XAB7G^gSjjHvIhF?HboQbh1E}X05*NyfQ&RL=MpoMrmOV>vYND!Kr0v$8da?aS=%Qlm_X0llJ3r0+Fl8&fsgLAApM6a9XeY6~OTZ?`#ft;CfM< z-xDl%I|Iw(KIu*x>P|WjxsN+nVdU+iFT+%bA%v8G(~(yq6N+MEl_t^|{bp1G5exR> z+;4el+nn#m**j7fEEEoDbTDTRPpRmfq$%!(*75hX7CH@ zJ-}Ey>%zBx#O}-aWmb?pW=JOy9eWM45QK^9(UL|;}bMNBLc!R zhpXrj>K7n3Me$;eWcrD`v0(n%X>Y+=>DRVe`vrg#g@6)kN%9I0hWgT!(Qvb#r!t;8 z7k9KK1bDfh{Q((VHb!1b-XcfDkCw}s5F%z62M?Ij@{f423njr{<;0w|OUFI*OL8~J z>ZeKMz36%GB;L}$OP!~mo!(!?^VLoAOV{9WtWY5=eWX<5RMw4;c#b#4of|Yh02XR( zySYo*I49|H9aK-wZZT~Ngt9R>mVfDy{xqv-pik?}-Ex+pf%q=P`|8qKc2Z)`Ab=r5 zf2W6oTqyKp^%+UxGtV^OSxlmLV3eomyEE-ayCsaGY{c59uwUWeeh}Tz=d3b|u`6~S zl{gzQcEd#}>UmTBXy?{Rtei44K|HbW9jiU~k4kXZR;OQYG28-Xa9tVGOs=8nlx z)You-w)k%sAO5$CiHgfH^{;Gyr&!Zhf>r0yQ!?whcFEl`ALImz*t3Jw^yMH_edaX@ za||(~UAdmL1|I<|F5dI z{%iXG-hjywqm+)p2w_q(Vl-^zP-2L0B}8h%fFW;E0clVqwh;y;LlCASB_SbVzy{Jx zYA7mGTBHR8@7MeDy??mx{Q-MC&g)s{T-SB3L!E-Y3V|B>)f z0w;7Z8#tjP!%V`*+#gYwNJnX(-%s!DtO%sJ_HIxH%T0b-QX)V4Y&)K9VjOh*dLLof z7$Ze;WM$|i;)<#1^UggSOJ+7uV)3cokp*#iVkw0QeYIsd_>cizV?#R%Znr-~EwFJK zIYssKZ$5|^>b8JzQ62?lF+b+^jer@hI3P)&s*g4-b8d#p!hHGgp(bL;h9bGm9_W^M z4;EkJ2uzR#cP5xrfq7)9OUZa|j0gX6K87;_HZc5T3OfAJRSWGX-l$Lt50@_AMgOQt zZW)A6%Ycrp+_x&lp0Ot%?7Rc++5sER5S#>KC_g0VfDOMvYtRg#o_g<`V@I4_w0Pxs zjvlZTc@nKT_F9V)VbB;=gvOV9ZrMGQ&KHWmz42wE`+%72Ybb!8{Nwy$fv`CL@-K^b z?$F3SGI{79&-(C_KT33(Eg*e?iaV3SH`KKcRY?#qN^)L|Lvp3b>~CF`6~ohIhY%3Z2L(!A;O~1Y`i_N5ro~2 zY}P!t;kVgWM~bI?{S2sNwwo|?*X?igtk2f+U;RRv^dxGSJgKCo&10(e8yh&%T2@-I zTJQ-vpkUyl@88p-5-Mps<+zHFGMy;|u{nm@UDo;8xm0FT1(hP_|86Y(f;|}h^BY@F zq&msWVcPb4>R@3P$)qwO`a-Z~Q>gp~+y*f$7;}YtG@3asWc67ggKFVSKwT$w_N1=f zeHwH5mA-bp!F_5h-kE?r($3bX5M9pacuvYvURTPv+(QRlXWNu$MI}JJs1`jz2DG1< z{(o~jW5xVUQa`_y6&W^U7iHw9Y%~34l0RGfaP&Q8C4R5T{a-lGZ(8@X*|cgfw@-<- zW#=)_tH#<08@3?u3G82QNg){w{+f$Qh8)IBaJ3B(tK}L;koEiz(G|rSP zvG3R(_yYo(^7ySJqE2I+8Eh-%PPAg;Ed}ig0qh4z=}o@&R4n8jMr29Kh#F}n{(ZBv z8N;}iz^?tP&pVshC@*gow zoVs}c`e%-{k6`AKOiJdO-RbS$zauNJqbR=`E;ULa{S4wFhl1X2yuJ2aO?61GJw!f$ zJD$qfCy{KDAn_l-Sr)@O&5*w5$3)1lnWAMuIS$tcdLQT1paVz)JzSY9l~7Y|y1q~Z z>-V$Lbit(}jW+_gxlWd~hjQMIP;+HeZ(r(~0Z1y#pOnp+4))qUwr~+y079}C_8x{^ zqOTx|J(I#m-$OEK_8g|Pdoc>ca}cKBX3Y6USNX_dqy7Y%6L?u1X~bq35vtC6h_PP~ zx`1;!`{cIoyGjGSkydCEw2(#j7MN>j4v0Yoh~Xa(=>Ns=fMnu7NIottRQg-R-`J|J zPNhA!oKYrq`j7mMWXF3i!+4`WeV1>N9{@zBGw_&a>?eg+5vI773L!o@YaxdNsFq=1 z@-5O_83}|DVqgQ6%S!4DWeh3I^y*VT9uq)D#GEC4HX~(ERJaj5P{2{tZ$*eaD`l_{ z#M)?_)XV!$TI@w~pn}?%q*BC2s_zV!(hDA?3N~i?V3|6xo-lo4Vrrl_hI7WeB#`#Z zJ1*xaUqRb+>XskJwks|8$YAo{uUVhV#4{C2%eOwzq5Iv0WMJ%1iN>PY8W_}3?KyV<4uC!_fIL}eB#M8_z{2^ai5Di7fL8U)c7RRC`iw#HULw7+m; zRZLQ6GI>K4C0!^+*aUd;-{lWx_SEeN#QP>T+hOc^dK^k|(P^ft16widGjpY?Kh%T6 zW1>W2NoOoE(O~pnxR{|{`qFG}W@MVXC6#5djEoU~i?z@$q8-|fq?K}LFj7MTtw8J$ z59rgWz=ATEnCG3aWx{r#LX&k@q)%Sgi$@t;nQIEHqF+3bjTT|m^W(^B3n3P4--E@C z+=YB{6gTD510~P?gzJe zRS%LKG)) zRmrgPkNS*GD;Ot-1aff7HG8l;l~8yz4ATsG@5+M)5TU0nW37bqy`wf_Tq2B$wB2u) z$v1H4vx9!EkxD=$8Md5ZA<`~MQ^%6%G9d=E&_ekcC*8a|xB=As z1lcH0t8QbPn&sVDd7-(qi@CzmBbj_Kk-PUeta)M1?lhpR+T@WB3He(%^7082v7K=s zS>ps4EPZvgzeH!BBF1jE6$2Bw?IgA+g8THlO3&Dqig^>RZ9{jy8&)7Ap3QeIpY!Zw zhT*GDT^~)_g!=T})KWUPgx8?&_l%fZO`F>$3y*VHPGmPKxU*tUhQW#0W~v`U4b zV)WP1qC7yR=8UL8m6%dQB*sKYZwn{$=uhFY2u=p`c~}}AP%oHF(*K8nAn|2Oikl-S zo_2SKozHAO7nrmCzzsF67<<;82gsLNK-hN~*^>IE0zidjYpNwEq4h(EF1xMbS&wOD z_bywZc4gF{gxk~?pnOZ48550Mw z4|8)JgOO<$6La%W0(-t9#Xcy}$s9|ujQ|H@%gKf|5_PMwi@YI3nXH<7bF zRA5X;H8oQW9OUsXW9uvxCj}qZW+0D-6@KdIct;YX9XOFhVox> z#U`V@J%U)1pISSbpogq*(^B-7N136*FdMde9=7JwexfUIF`P-7x<6ZQ4m8^SRQLgHJzD` z7@5eMSZtVBVqrjuqBgCQUb_x{PpGlyk=N`keqP$sgfRkhRz*ohu64M!z1HC z#>!h~2ZR?b@7W%8Z;I%pTd?iG3-;~XUwLiM9{LmYQzNqlHk-w+)uBS9B;Zu%PJmJZ zt~+s3O+}G{xUT=KDW&xBYHNLZ`;`a178+++@wOUJbk1)(DvMj{Xt)L?-cEEudDDOg zeFf6)h5Vq7(mt>ZL;Crg_N78&=5xO#g>MP49-8r>t2F3ON(s%ZIp+X!Ts3hgBBnGI z>&RZ|k$Rx6OB+IvN_6kX4Mi!LSIGYrQ|UkRH)F=?!WG8L9J`2;cN?8fGUtHl+$EJr zs`E9zp2K`pg4T$6dg$$gOVIdIq?yy(jEx}32j?i(5!V6vukRY$+t4APl<$E9H(ZSf zg8d8S(EWMgcuO-tdwB2d)7;!}nVz%AwL@U*vG%oFVwmrR>>t8FqRV1R6@;g98ZzF= zQrT`K4y>gj6#YC~cSF@mnXQ?+2w&#S8@D>mPE1Y0ZY%b(=A@p=Do(-@Y%|&WN88fZ zK9Ui@)x;u~k09YWnm;xm$YFu(eW-np^ShRtfDCnz+ydrlYydpt5oK`$K(wQ3f5lFe zR3vmw?S1pBRORb+t$@dLR`B1OLZ}d`uP}l~tPfH|muYoI5sE%-em#tpIlk*rMlXcoF4b6h*64UabfS%ob!@lHnjdmkh(7g|#~W zS>PEe*A*PSTr;!%m@z9bKk`7j-ixPyp$pnJo*JL^>*lw;&eu{2P6VFWE)}~4EliCr z@Fq8{&p8>pBNr%_0qtW+#+Ny zJM%-}cZ$E11jD`DjMl|1RcwSwta-utQEsVF8T_P!Cq(?#d=)B$gx9Uph>=s8)PVu} zLFQ77ZWlws0sL&zZ%sEss?W|ZYhph`6B(SvPm+rtZMo=L7R&P8=aUe#nysfNSEzM zOw$1>35W+GU}c#mwFJe&z_nXcf^VY<>U|0BYvK}%cx8?*J4i)wSH7lU^Gco?(vS~V zOrD3}JXU#QIW*wS?}ewGovMhacz>|0G>CYcvu`z|3ZI_~R=Iq3logzcUgX)UvzavxKh107OXn&#V%6ehA% z_>FdsK;3QB8nyequ}@Ycf6$pGNN6{)dDWR~^&h{)jJ(h{jV#fZbt&=eurd`N%H@!8 z+_uKcSf>7FIlof%8T7TJaN3WCQ!N_bGuJ;InJ?4Atu5h8$oO)zNF9gx=eg;4!9}(1 zU8!p>PV4D)w%sSuL%8~z6=#;NV#=m{}SwG*l z|BT*v8Zfh2Sg)c!e+|5)jFHoLrZ_5w54ir+FeJlB9c`nC5Huls+G4IaiA$&cGHVP` zSPtT%wO_BPk5 zC;scF`)BWsHsiid6}iSmj+$~Py-3D!wKT{nJVP#>0L5#OzN4^35djwp{<>tCzNd0^ znzO9tWA;x{2=Z>0Bii{uSDm!8O*%8jMs7T0A8XM=KVUoJl5XVk>bhUl7X)vm4^`ccH8);(})c%88u?7u0fbM;^@cI1Tph_ckL_x5|Rk0^*@>i zeh?rp;HlihS$~s@w{4IrR-Y)s^J|fJIr7#gqvFk0-*POlu} zy~lZ++Zsl1W!dY@DZhV$^S~JhKE`^%g$Sd5amd;GS~rM~BYe`@Dsnqp3^nUiEWWV{ znQrlJtEB#+0pB6UGN~P@F5eJ(`cgQ0A=gAszqOZ~i4q866kZ6{W=04~@kVKJdp2mF zpp+%eT;~8$?j$FtHrlW+z8G*0uLz?l$MA=rwAN{7 zE?6O)X(I^Xiv2k&cMl0~7nMgfpqevMbTgmGe>RL&^5p7HNzbt~e#a^AnfG$^@H%f( zjQ|Q-oAkLt@@_utieG+@JM72ngluwx)sxhT>ycORzHcMgQt{^&ZwRvXWkWqox}7fE z+>`IKI1q!#OrlRjT(|*D(ymF~_B*_ldvh#dX)nXsOymJdcJWV3j5#;tdg_F6DAJ3U zM$BH8$TQ^7&{<+_NPC~~`0|h<>UA|^fUE5!%Mh53Pbipg*n2ki>5 zv(nK`Ob%zxRq(h5-MK7bv2&SkATV{$>)^ox#gwe7(2?JVHfmT;xu(yXUvtK-=Ir|` zE2+J^Pqf-Ig!E63vA6JZOx?j7x;J#~^#u!(lD7c`HWvEIR;T~ENF98%{p9nlE6u2* zJC~g|qC0nDK5KixP-#zvCKBjzWR%ZQcik!H|4aK5^DLC!<N!Lq2`z~nAI4!UblEq20e*R%RpcdTgFF$#8=uXt{h{xVnBiX0f zP+gI%eVNcWlW}$WLS*77v3?kLB{A}A2x=|vi`G1C{Nm`)CnOnaK7*qvVsBUb=ilB{_w2*w2-P*${$O`^c-_fi!7g=$WDHV) zqr~MDMJQA;A9axH6vFJ%D%Mvcy{!E3usz%i9vq2 zvZqZdF}h%`)+)L@cUW@vXghdZt|yqUNkDMBn(Oqny94LzO2CRPMwf!5rBDfU)<41| zen~xPBhZ=$aMH;`r<4EGvF}h9f7^^m*n=O7GxR0h6CP7j4hfu6a{SBVqDp7vgB3E3 zQ+$1{LQBEv&Chx0uTSW<7UDmtAIg6^J()ShOL5{H(;-3`z(jE_dF%FsT7w|oowpnE zzsXbYjiqd8Lk|V z7@upXBV`r2{ILMmowdw+`SL53gs9}8+gKRsr(5c3BRSzYIVOiCSh-RD_BVWQ2iToz zl8OhM6UV<$VDwx+U<{7lxrd9cj)^xOS@A+ZS`7ra9NKI~<~iALjN|`SQ(;9eq@m^d zsl9-9=n()dZ|5Xx#H#DmYh>kUUyCnyCBKZp9Liu_faTPu-E+qr0s!lz5bw0`x*W?{ zv&M4Y*ae%AceeEN*H=cdM*qdg!^!3$|}%>B3Imq2{3X1Wi8*v zI-X!oVMgxo=c*Xp`zQ!NzY1fOzN8Yr0Wj>68g2;sWmXl{a|2?XI7VF6cw>0+KwCh8 zvAkk?*jXQ|hO9a8rRpSyxZw-nE9bJgvLQibsdxacDC4Aw{SRjtA)5g&>#4PcLW}5i zQ%lyzpMagFBJym1=Gm`(?8BAI((HML#VKyvxPKXN zyZPjs0T-kJF3;Uj;iDun)S}r^I|zvwNO>}q^y7xGf9WJ5CuaiKgT)MFcrUin!gKEq zw9SRh5Frv7ZmD}JCeg~KU^49*_^Lz7U2}fOb^O!L$1$l%ThBN|nNiI6j)B4-GL)MV zg3l_<2NA)fbi7rC%Idmzv(Ykpf!AcFMQAJjh?e|NA9HL&u7R+J-0ZeQ0|MGY&*ui zm_~;b&`|Tq3#7^1ot^du2Ugu(3tYv*X9?!PArkQ>MxJaob&FTHu68Qy0#sT|*uXJm zN4$CTeY7>7Gvg%IOBy`{v~vQ5^=Qh$UESdd`zrH=3OI!4F?d=V+{6#eAdgDzwO$9u zT59`WuGE2nfSO0G^55?zPpTUr{ja-7GWa>&2ah%N#AxejLAFrCki}!k^IphTDZp79 z5ZdTD(2x33653s}GeLy+t;%rcsgZYq{{X7$9P4xCL*zT%$_|Z=0-(vMSV4(+OgGkOkwI`>$MaOLNoBMhrSgt5HhTz{PMB;BYZXgrDRT_C8 zZ{5u$&9E&wPtpM#lM}I-~u)Udbcxa zwRyppUMJ`-CPM|@MQ*H9D3%{Z4MMi?4f-i1h7U+hajcq4V@!aqgS$y@85q%*hEMpV z#?5ZT&{`TA%*cp&Og7i12e4CX5RriLy_co^yTo!wH`J?|x9G44Po!Rm&prB79!8@P zgH7|jzY|VL_pJfP`Sf2kr$3s%usDSl#joRRhGXFRY1^I~;!S*lW0Tx_l0f^+|Dm*I zln?wzT|QKiks+pGqv|2Z`I^&*Q!gEO$8uSJ;58_(*_P^TzfIVD z7F_bgXUN6JzgRoxI}o(_f~OJ)HyYATyay+`GE9Hm%s$vbeNgTFS0r12rSX|gpaz`W zV)dj9Z?&&RXTtMLql|v*t6}WhldyVos6wnTxROY#MsD>&%0DR|9B^HJI(+{&?& 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

-ghgV>Dt>G2`Q~Fsp0$V{Zi- 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 z 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%0D-IE|)Ya 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 Date: Tue, 21 Apr 2026 01:24:42 +0200 Subject: [PATCH 18/19] chore(ci): centralize commit-check policy - move commit and branch policy to cchk.toml - add local pre-commit hooks for commit-msg and pre-push checks - remove hard CI scope allowlist enforcement - update changelog 1.2.0 to reflect policy changes --- .github/workflows/commit.yml | 86 +----------------------------------- .pre-commit-config.yaml | 8 ++++ CHANGELOG.md | 22 +++++++-- cchk.toml | 47 ++++++++++++++++++++ 4 files changed, 74 insertions(+), 89 deletions(-) create mode 100644 cchk.toml diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml index 44b2491..182fea8 100644 --- a/.github/workflows/commit.yml +++ b/.github/workflows/commit.yml @@ -17,31 +17,6 @@ permissions: # Read-only is enough for commit metadata checks. contents: read -env: - # Commit-check message/type policy, configured inline in workflow env. - CCHK_CONVENTIONAL_COMMITS: "true" - CCHK_SUBJECT_CAPITALIZED: "false" - CCHK_SUBJECT_IMPERATIVE: "false" - CCHK_SUBJECT_MAX_LENGTH: "100" - CCHK_ALLOW_COMMIT_TYPES: "feat,feature,fix,bugfix,hotfix,opt,patch,perf,refactor,chore,revert" - CCHK_ALLOW_MERGE_COMMITS: "true" - CCHK_ALLOW_REVERT_COMMITS: "true" - CCHK_ALLOW_EMPTY_COMMITS: "false" - CCHK_ALLOW_FIXUP_COMMITS: "true" - CCHK_ALLOW_WIP_COMMITS: "false" - CCHK_REQUIRE_BODY: "false" - CCHK_REQUIRE_SIGNED_OFF_BY: "false" - # Branch naming policy for pushed branches. - CCHK_CONVENTIONAL_BRANCH: "true" - CCHK_ALLOW_BRANCH_TYPES: >- - feature,bugfix,hotfix,release,chore,feat,fix,docs,refactor,perf,test,ci,build,style, - opt,patch,dependabot - # Repository-specific scope allowlist layered on top of commit-check. - COMMIT_ALLOWED_SCOPES: >- - api,auth,permissions,serializer,viewset,orm,migrations,admin,settings,deps,ci,docs, - build,style,test,tests,cli,agents,skills,instructions,prompts,frontmatter,artifacts, - release,workflow - jobs: validate-commit-messages: # Single gate that validates message format/types and custom scope policy. @@ -57,69 +32,10 @@ jobs: - name: Validate commits with commit-check uses: commit-check/commit-check-action@v2 with: + # Commit and branch policy is read from cchk.toml in repo root. message: true branch: true author-name: false author-email: false job-summary: true pr-comments: false - - - name: Validate allowed scopes in pushed commits - uses: actions/github-script@v7 - env: - ALLOWED_SCOPES: ${{ env.COMMIT_ALLOWED_SCOPES }} - with: - script: | - const allowedScopes = process.env.ALLOWED_SCOPES.split(",").map((v) => v.trim()); - - const before = context.payload.before; - const after = context.payload.after; - - if (!before || !after) { - core.info("No commit range available; skipping validation."); - return; - } - - const compare = await github.rest.repos.compareCommits({ - owner: context.repo.owner, - repo: context.repo.repo, - base: before, - head: after, - }); - - const commits = compare.data.commits || []; - const conventional = /^(?[a-z]+)(?:\((?[a-z0-9-]+)\))?(?!)?: .+/; - const errors = []; - - for (const commit of commits) { - const subject = commit.commit.message.split("\n")[0].trim(); - const sha = commit.sha.slice(0, 7); - - // Allow merge commits created by git/GitHub during branch sync operations. - if (subject.startsWith("Merge ")) { - continue; - } - - const match = subject.match(conventional); - if (!match) { - // commit-check-action validates message format and type. - continue; - } - - const scope = match.groups.scope; - - if (scope && !allowedScopes.includes(scope)) { - errors.push(`- ${sha}: scope \`${scope}\` is not allowed.`); - } - } - - if (errors.length > 0) { - core.setFailed( - [ - "Commit message policy failed.", - "Allowed scopes (optional): " + allowedScopes.join(", "), - "", - ...errors, - ].join("\n"), - ); - } diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d8fb74c..a65d9ce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,4 +1,12 @@ repos: + - repo: https://github.com/commit-check/commit-check + rev: v2.6.0 + hooks: + - id: check-message + stages: [commit-msg] + - id: check-branch + stages: [pre-push] + - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ec805f..6249145 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 1.2.0 - 2026-04-21 + +CLI provenance verification and documentation system alignment. + +### Added in 1.2.0 + +- CLI artifact provenance verification against the install manifest. + +### Changed in 1.2.0 + +- Refactored CLI parser flow into a `CLIParser` class and simplified install and verify control flow. +- Refactored frontmatter serialization internals (instance-method serializer, naming cleanup, and reduced nested parse/validation flow). +- Aligned hand-authored Markdown docs toward Mermaid-first diagram usage, with ASCII as fallback where needed. +- Updated skill template guidance and regenerated installed skill artifacts to adopt the Mermaid-first diagram convention. +- README branding/header refreshed with centered logo and badges plus light/dark logo switching. +- Centralized commit and branch policy in `cchk.toml` and wired local `pre-commit` hooks for commit-message and pre-push branch validation. +- Removed hard CI scope allowlist enforcement; commit scopes are now guidance-level in documentation rather than a strict gate. + ## 1.1.0 — 2026-04-20 Runtime response-style control via the new `concise` skill. @@ -95,8 +113,6 @@ Community health and release workflow update. - Release workflow title format updated to `Release vX.Y.Z (YYYY-MM-DD)`. -______________________________________________________________________ - ## 1.0.2 — 2026-04-17 Release workflow fix. @@ -105,8 +121,6 @@ Release workflow fix. - Release workflow: corrected Poetry setup order and opted in to Node 24 to resolve runner deprecation warnings. -______________________________________________________________________ - ## 1.0.1 — 2026-04-17 Tooling and release hygiene update focused on making local and CI verification match. diff --git a/cchk.toml b/cchk.toml new file mode 100644 index 0000000..2d3faa3 --- /dev/null +++ b/cchk.toml @@ -0,0 +1,47 @@ +[commit] +conventional_commits = true +subject_capitalized = false +subject_imperative = false +subject_max_length = 100 +allow_commit_types = [ + "feat", + "feature", + "fix", + "bugfix", + "hotfix", + "opt", + "patch", + "perf", + "refactor", + "chore", + "revert", +] +allow_merge_commits = true +allow_revert_commits = true +allow_empty_commits = false +allow_fixup_commits = true +allow_wip_commits = false +require_body = false +require_signed_off_by = false + +[branch] +conventional_branch = true +allow_branch_types = [ + "feature", + "bugfix", + "hotfix", + "release", + "chore", + "feat", + "fix", + "docs", + "refactor", + "perf", + "test", + "ci", + "build", + "style", + "opt", + "patch", + "dependabot", +] From ecff1d08821ebf4d5b1836e467c8d60a9e57d1dc Mon Sep 17 00:00:00 2001 From: Erik Schaareman Date: Tue, 21 Apr 2026 01:49:07 +0200 Subject: [PATCH 19/19] chore(docs): align markdown links and policy text - fix relative markdown links under docs/design to resolve correctly on GitHub - update CONTRIBUTING commit-scope wording to match cchk.toml enforcement model - strengthen generated skill footer test to assert footer structure at end-of-file --- CHANGELOG.md | 5 ++++- CONTRIBUTING.md | 5 +++-- docs/design/instructions.md | 2 +- docs/design/skills.md | 4 ++-- docs/design/workflow.md | 16 ++++++++-------- tests/vstack/skills/test_templates.py | 10 +++++++--- 6 files changed, 25 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6249145..8731914 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,13 +10,16 @@ CLI provenance verification and documentation system alignment. ### Changed in 1.2.0 -- Refactored CLI parser flow into a `CLIParser` class and simplified install and verify control flow. +- Refactored CLI parser flow into a `CommandLineParser` class and simplified install and verify control flow. - Refactored frontmatter serialization internals (instance-method serializer, naming cleanup, and reduced nested parse/validation flow). - Aligned hand-authored Markdown docs toward Mermaid-first diagram usage, with ASCII as fallback where needed. - Updated skill template guidance and regenerated installed skill artifacts to adopt the Mermaid-first diagram convention. - README branding/header refreshed with centered logo and badges plus light/dark logo switching. - Centralized commit and branch policy in `cchk.toml` and wired local `pre-commit` hooks for commit-message and pre-push branch validation. - Removed hard CI scope allowlist enforcement; commit scopes are now guidance-level in documentation rather than a strict gate. +- Fixed multiple documentation link paths under `docs/design/` so relative Markdown links resolve correctly on GitHub. +- Updated `CONTRIBUTING.md` commit-policy wording to match the current `cchk.toml` enforcement model. +- Strengthened generated skill footer tests to assert the `AUTO-GENERATED` and `VSTACK-META` footer structure at end-of-file. ## 1.1.0 — 2026-04-20 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a97dd13..ffbadf1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,7 +60,7 @@ type(optional-scope)!: short summary - `chore`: repository maintenance and non-feature housekeeping. - `revert`: rollback of a previous commit. -### 4) Allowed scopes (optional) +### 4) Suggested scopes (optional) - Domain and backend areas: `api`, `auth`, `permissions`, `serializer`, `viewset`, `orm`, `migrations`, `admin`, `settings`. - Tooling and workflow areas: `deps`, `ci`, `docs`, `build`, `style`, `release`, `workflow`. @@ -95,7 +95,8 @@ Allowed branch types: - `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style` - `opt`, `patch`, `dependabot` -A dedicated CI workflow validates branch-push commit messages (non-main branches) using commit-check, and enforces this repository's allowed scope list. +A dedicated CI workflow validates branch-push commit messages (non-main branches) using commit-check with policy from `cchk.toml`. +Scope names are guidance-level in this document and are not currently hard-enforced by CI. ## Pull Request Expectations diff --git a/docs/design/instructions.md b/docs/design/instructions.md index 14085e7..a3a8783 100644 --- a/docs/design/instructions.md +++ b/docs/design/instructions.md @@ -25,7 +25,7 @@ vstack uses an explicit split: - **Skills = procedure** (task execution workflows). Canonical decision record: -[docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md). +[013-instructions-vs-skills-boundary.md](../architecture/adr/013-instructions-vs-skills-boundary.md). Use instructions when guidance is: diff --git a/docs/design/skills.md b/docs/design/skills.md index e3ea670..61f2e10 100644 --- a/docs/design/skills.md +++ b/docs/design/skills.md @@ -30,8 +30,8 @@ Boundary rule: - Policies belong in instructions. - Procedures belong in skills. -See [docs/design/instructions.md](docs/design/instructions.md) and -[docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md). +See [instructions.md](./instructions.md) and +[013-instructions-vs-skills-boundary.md](../architecture/adr/013-instructions-vs-skills-boundary.md). Key benefits: diff --git a/docs/design/workflow.md b/docs/design/workflow.md index 0f9881d..ac4587a 100644 --- a/docs/design/workflow.md +++ b/docs/design/workflow.md @@ -13,9 +13,9 @@ security, commit policy, and releases. For authoring boundaries between reusable guidance mechanisms: -- [docs/design/instructions.md](docs/design/instructions.md) -- [docs/design/skills.md](docs/design/skills.md) -- [docs/architecture/adr/013-instructions-vs-skills-boundary.md](docs/architecture/adr/013-instructions-vs-skills-boundary.md) +- [instructions.md](./instructions.md) +- [skills.md](./skills.md) +- [013-instructions-vs-skills-boundary.md](../architecture/adr/013-instructions-vs-skills-boundary.md) ______________________________________________________________________ @@ -34,19 +34,19 @@ and easy to reason about. ### commit policy enforcement model -Commit policy is intentionally split across two components in one workflow: +Commit policy is defined in `cchk.toml` and enforced by `commit-check`: -1. `CCHK_*` environment variables in `.github/workflows/commit.yml` define commit message conventions and allowed commit types. -1. `.github/workflows/commit.yml` also enforces allowed scopes for pushed commits. +1. `.github/workflows/commit.yml` runs `commit-check/commit-check-action@v2` on branch pushes. +1. Local hooks in `.pre-commit-config.yaml` run the same checks at `commit-msg` and `pre-push` stages. Additional commit workflow policy: - Maximum commit subject length is 100 characters. - Branch names are validated against Conventional Branch format (`type/description`). - Allowed branch types: `feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`. +- Commit scopes are not hard-enforced by CI; scope naming is guidance-level in documentation. -This split keeps standard message validation in a purpose-built action and keeps -repository-specific scope policy explicit in CI. +This keeps CI and local checks aligned through one policy source of truth. ### release bump mapping diff --git a/tests/vstack/skills/test_templates.py b/tests/vstack/skills/test_templates.py index 6beee17..a7c6748 100644 --- a/tests/vstack/skills/test_templates.py +++ b/tests/vstack/skills/test_templates.py @@ -2,6 +2,7 @@ from __future__ import annotations +import re from pathlib import Path from tests.conftest import SKILLS_TEMPLATES_DIR @@ -66,9 +67,12 @@ def test_generated_files_have_auto_gen_footer(self, generated_dir: Path) -> None """Test that generated files have auto gen footer.""" for md in generated_dir.glob("*/SKILL.md"): content = md.read_text(encoding="utf-8") - assert "AUTO-GENERATED" in content - assert "" in content - assert "" + ) + assert re.fullmatch(r"", lines[-1]) def test_generated_count_matches_expected(self, generated_dir: Path) -> None: """Test that generated count matches expected."""