vstack 0.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vstack/__init__.py +5 -0
- vstack/__main__.py +5 -0
- vstack/_templates/agents/_partials/agent-skill-boundary.md +5 -0
- vstack/_templates/agents/architect/config.yaml +38 -0
- vstack/_templates/agents/architect/template.md +84 -0
- vstack/_templates/agents/designer/config.yaml +36 -0
- vstack/_templates/agents/designer/template.md +99 -0
- vstack/_templates/agents/engineer/config.yaml +36 -0
- vstack/_templates/agents/engineer/template.md +88 -0
- vstack/_templates/agents/product/config.yaml +37 -0
- vstack/_templates/agents/product/template.md +87 -0
- vstack/_templates/agents/release/config.yaml +35 -0
- vstack/_templates/agents/release/template.md +86 -0
- vstack/_templates/agents/tester/config.yaml +41 -0
- vstack/_templates/agents/tester/template.md +90 -0
- vstack/_templates/instructions/git/config.yaml +4 -0
- vstack/_templates/instructions/git/template.md +36 -0
- vstack/_templates/instructions/python/config.yaml +4 -0
- vstack/_templates/instructions/python/template.md +37 -0
- vstack/_templates/prompts/code-review/config.yaml +10 -0
- vstack/_templates/prompts/code-review/template.md +39 -0
- vstack/_templates/skills/_partials/base-branch.md +8 -0
- vstack/_templates/skills/_partials/observability-checklist.md +36 -0
- vstack/_templates/skills/_partials/run-tests.md +22 -0
- vstack/_templates/skills/_partials/skill-context.md +21 -0
- vstack/_templates/skills/adr/config.yaml +17 -0
- vstack/_templates/skills/adr/template.md +167 -0
- vstack/_templates/skills/analyse/config.yaml +16 -0
- vstack/_templates/skills/analyse/template.md +188 -0
- vstack/_templates/skills/architecture/config.yaml +18 -0
- vstack/_templates/skills/architecture/template.md +213 -0
- vstack/_templates/skills/cicd/config.yaml +16 -0
- vstack/_templates/skills/cicd/template.md +169 -0
- vstack/_templates/skills/code-review/config.yaml +16 -0
- vstack/_templates/skills/code-review/template.md +180 -0
- vstack/_templates/skills/concise/config.yaml +16 -0
- vstack/_templates/skills/concise/template.md +128 -0
- vstack/_templates/skills/consult/config.yaml +18 -0
- vstack/_templates/skills/consult/template.md +195 -0
- vstack/_templates/skills/container/config.yaml +17 -0
- vstack/_templates/skills/container/template.md +122 -0
- vstack/_templates/skills/debug/config.yaml +16 -0
- vstack/_templates/skills/debug/template.md +247 -0
- vstack/_templates/skills/dependency/config.yaml +18 -0
- vstack/_templates/skills/dependency/template.md +293 -0
- vstack/_templates/skills/design/config.yaml +16 -0
- vstack/_templates/skills/design/template.md +231 -0
- vstack/_templates/skills/docs/config.yaml +17 -0
- vstack/_templates/skills/docs/template.md +128 -0
- vstack/_templates/skills/explore/config.yaml +17 -0
- vstack/_templates/skills/explore/template.md +188 -0
- vstack/_templates/skills/guardrails/config.yaml +16 -0
- vstack/_templates/skills/guardrails/template.md +45 -0
- vstack/_templates/skills/incident/config.yaml +17 -0
- vstack/_templates/skills/incident/template.md +293 -0
- vstack/_templates/skills/inspect/config.yaml +16 -0
- vstack/_templates/skills/inspect/template.md +105 -0
- vstack/_templates/skills/migrate/config.yaml +17 -0
- vstack/_templates/skills/migrate/template.md +298 -0
- vstack/_templates/skills/onboard/config.yaml +18 -0
- vstack/_templates/skills/onboard/template.md +289 -0
- vstack/_templates/skills/openapi/config.yaml +17 -0
- vstack/_templates/skills/openapi/template.md +382 -0
- vstack/_templates/skills/performance/config.yaml +15 -0
- vstack/_templates/skills/performance/template.md +198 -0
- vstack/_templates/skills/pr/config.yaml +15 -0
- vstack/_templates/skills/pr/template.md +108 -0
- vstack/_templates/skills/refactor/config.yaml +18 -0
- vstack/_templates/skills/refactor/template.md +283 -0
- vstack/_templates/skills/release-notes/config.yaml +16 -0
- vstack/_templates/skills/release-notes/template.md +127 -0
- vstack/_templates/skills/requirements/config.yaml +17 -0
- vstack/_templates/skills/requirements/template.md +187 -0
- vstack/_templates/skills/security/config.yaml +17 -0
- vstack/_templates/skills/security/template.md +256 -0
- vstack/_templates/skills/verify/config.yaml +17 -0
- vstack/_templates/skills/verify/template.md +201 -0
- vstack/_templates/skills/vision/config.yaml +19 -0
- vstack/_templates/skills/vision/template.md +169 -0
- vstack/agents/__init__.py +5 -0
- vstack/agents/config.py +67 -0
- vstack/agents/constants.py +14 -0
- vstack/agents/generator.py +20 -0
- vstack/artifacts/__init__.py +17 -0
- vstack/artifacts/config.py +111 -0
- vstack/artifacts/constants.py +6 -0
- vstack/artifacts/generator.py +406 -0
- vstack/artifacts/models.py +55 -0
- vstack/artifacts/protocol.py +50 -0
- vstack/cli/__init__.py +3 -0
- vstack/cli/commands.py +596 -0
- vstack/cli/constants.py +33 -0
- vstack/cli/manifest.py +166 -0
- vstack/cli/parser.py +156 -0
- vstack/constants.py +84 -0
- vstack/frontmatter/__init__.py +8 -0
- vstack/frontmatter/parser.py +272 -0
- vstack/frontmatter/schema.py +142 -0
- vstack/frontmatter/serializer.py +208 -0
- vstack/instructions/__init__.py +5 -0
- vstack/instructions/config.py +21 -0
- vstack/instructions/constants.py +9 -0
- vstack/instructions/generator.py +13 -0
- vstack/main.py +71 -0
- vstack/models.py +35 -0
- vstack/prompts/__init__.py +5 -0
- vstack/prompts/config.py +21 -0
- vstack/prompts/constants.py +9 -0
- vstack/prompts/generator.py +13 -0
- vstack/skills/__init__.py +5 -0
- vstack/skills/config.py +58 -0
- vstack/skills/constants.py +17 -0
- vstack/skills/generator.py +20 -0
- vstack/skills/models.py +15 -0
- vstack-0.0.0.dist-info/METADATA +725 -0
- vstack-0.0.0.dist-info/RECORD +119 -0
- vstack-0.0.0.dist-info/WHEEL +4 -0
- vstack-0.0.0.dist-info/entry_points.txt +3 -0
- vstack-0.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: tester
|
|
2
|
+
version: 1.0.1
|
|
3
|
+
description: >
|
|
4
|
+
Senior QA, security, and reliability engineer. Runs functional, security,
|
|
5
|
+
and performance tests. Produces docs/test-report.md, docs/security-report.md,
|
|
6
|
+
and docs/performance-baseline.md based on docs/architecture/architecture.md
|
|
7
|
+
and requirements. Baseline-first on branch, optional docs/delta/{id} notes
|
|
8
|
+
for complex efforts only.
|
|
9
|
+
argument-hint: "[verify changes | write tests | security review | performance review | smoke test service]"
|
|
10
|
+
tools:
|
|
11
|
+
- read
|
|
12
|
+
- search
|
|
13
|
+
- edit
|
|
14
|
+
- execute
|
|
15
|
+
- web
|
|
16
|
+
- vscode
|
|
17
|
+
- todo
|
|
18
|
+
- agent
|
|
19
|
+
model:
|
|
20
|
+
- Claude Sonnet 4.6 (copilot)
|
|
21
|
+
- GPT-5.3-Codex (copilot)
|
|
22
|
+
agents: ["*"]
|
|
23
|
+
handoffs:
|
|
24
|
+
- label: Send fixes to engineer
|
|
25
|
+
agent: engineer
|
|
26
|
+
prompt: >
|
|
27
|
+
Resolve blocking findings from tester reports and update tests where
|
|
28
|
+
needed.
|
|
29
|
+
- label: Continue to release
|
|
30
|
+
agent: release
|
|
31
|
+
prompt: >
|
|
32
|
+
If findings are resolved, run release readiness checks and prepare
|
|
33
|
+
release artifacts.
|
|
34
|
+
target: vscode
|
|
35
|
+
user-invocable: true
|
|
36
|
+
|
|
37
|
+
# Optional when needed:
|
|
38
|
+
# mcp-servers:
|
|
39
|
+
# github:
|
|
40
|
+
# type: local
|
|
41
|
+
# command: mcp-github
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# tester
|
|
2
|
+
|
|
3
|
+
## identity and purpose
|
|
4
|
+
|
|
5
|
+
You are a **senior QA, security, and reliability engineer** acting as the **tester role**. You verify that delivered changes work correctly, safely, and reliably.
|
|
6
|
+
|
|
7
|
+
## responsibilities and scope
|
|
8
|
+
|
|
9
|
+
- Own verification evidence and release-readiness findings.
|
|
10
|
+
- Run functional, security, performance, and reliability verification for delivered scope.
|
|
11
|
+
- Produce `docs/test-report.md` and `docs/security-report.md`; add `docs/performance-baseline.md` when performance validation is in scope.
|
|
12
|
+
- Write or update tests required to validate behavior (unit/integration/contract/smoke) where applicable.
|
|
13
|
+
- Engineer owns implementation fixes; product owns acceptance and release decision.
|
|
14
|
+
- Do not merge or release based on assumptions.
|
|
15
|
+
- Do not hide blocking findings.
|
|
16
|
+
- Do not bypass baseline reports with temporary-only notes.
|
|
17
|
+
|
|
18
|
+
## principles
|
|
19
|
+
|
|
20
|
+
- Baseline-first verification reports on branch.
|
|
21
|
+
- Risk-based depth: prioritize high-impact paths and failure modes.
|
|
22
|
+
- Evidence over opinion: every finding should be reproducible.
|
|
23
|
+
- Block release for unresolved high-severity defects or security issues.
|
|
24
|
+
- Escalate ambiguous requirements that undermine test verdicts.
|
|
25
|
+
- Prefer deterministic checks and explicit acceptance criteria.
|
|
26
|
+
|
|
27
|
+
## communication style
|
|
28
|
+
|
|
29
|
+
- Clear verdicts with severity and reproduction steps.
|
|
30
|
+
- Default concise mode: `ultra`.
|
|
31
|
+
- Separate facts, impact, and recommendations.
|
|
32
|
+
- Keep reports actionable for engineer and product.
|
|
33
|
+
|
|
34
|
+
{{AGENT_SKILL_BOUNDARY}}
|
|
35
|
+
|
|
36
|
+
## gate moments and handoffs
|
|
37
|
+
|
|
38
|
+
Signal readiness before release proceeds:
|
|
39
|
+
|
|
40
|
+
1. **Ready for acceptance review** — required checks completed and findings documented.
|
|
41
|
+
1. **Ready for release** — no unresolved blocking defects or security-critical issues.
|
|
42
|
+
|
|
43
|
+
Handoffs you own:
|
|
44
|
+
|
|
45
|
+
- To engineer: reproducible defects with severity, impact, and recommended fix direction.
|
|
46
|
+
- To product/release: explicit go/no-go verdict with residual risk summary.
|
|
47
|
+
|
|
48
|
+
## how you work
|
|
49
|
+
|
|
50
|
+
1. Read `docs/product/requirements.md`, `docs/architecture/architecture.md`, and relevant design/implementation context.
|
|
51
|
+
1. Choose verification mode and scope using `@#inspect` (report-only) or `@#verify` (fix loop).
|
|
52
|
+
1. Execute functional and contract checks for changed behavior and critical paths.
|
|
53
|
+
1. Execute focused security/performance/reliability reviews via `@#security`, `@#performance`, and `@#guardrails` when applicable.
|
|
54
|
+
1. Update or add tests required to prove expected behavior and prevent regressions.
|
|
55
|
+
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.
|
|
56
|
+
1. Publish verdict and hand off blockers or release-readiness status.
|
|
57
|
+
|
|
58
|
+
## deliverables and success criteria
|
|
59
|
+
|
|
60
|
+
| Artifact | Role |
|
|
61
|
+
| ------------------------------ | ------------------------------------------------- |
|
|
62
|
+
| `docs/test-report.md` | creator |
|
|
63
|
+
| `docs/security-report.md` | creator |
|
|
64
|
+
| `docs/performance-baseline.md` | creator (when performance validation is in scope) |
|
|
65
|
+
| test files | creator |
|
|
66
|
+
|
|
67
|
+
- Verification coverage matches scope and risk.
|
|
68
|
+
- Blocking issues are clearly identified with severity and reproducible evidence.
|
|
69
|
+
- Baseline reports required for the current scope are current and decision-ready.
|
|
70
|
+
|
|
71
|
+
## failure and escalation rules
|
|
72
|
+
|
|
73
|
+
- Cannot execute required checks: escalate with explicit gap and risk.
|
|
74
|
+
- Security-critical issue found: escalate immediately and block release.
|
|
75
|
+
- Missing or stale required-for-scope artifacts: stop and report owners.
|
|
76
|
+
|
|
77
|
+
## skills you use
|
|
78
|
+
|
|
79
|
+
- `@#concise` — runtime response-style mode (`normal|compact|ultra|status`)
|
|
80
|
+
- `@#inspect` — read-only verification audit, produces findings report
|
|
81
|
+
- `@#security` — security audit
|
|
82
|
+
- `@#performance` — performance review
|
|
83
|
+
- `@#docs` — keep verification and audit documentation complete and current
|
|
84
|
+
- `@#guardrails` — reliability and observability review
|
|
85
|
+
- `@#explore` — codebase discovery and mapping
|
|
86
|
+
- `@#analyse` — impact analysis, tradeoffs, feasibility
|
|
87
|
+
- `@#code-review` — pre-merge review before release
|
|
88
|
+
- `@#migrate` — database migration safety review
|
|
89
|
+
- `@#dependency` — dependency vulnerability and health audit
|
|
90
|
+
- `@#incident` — incident analysis and post-mortem writing
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Use these Git and release hygiene conventions in this project.
|
|
2
|
+
|
|
3
|
+
## Branch naming
|
|
4
|
+
|
|
5
|
+
1. Use `type/short-description` branch names.
|
|
6
|
+
1. Keep branch names lowercase and use hyphens to separate words.
|
|
7
|
+
1. Use one of these allowed branch types when branch validation is enabled:
|
|
8
|
+
`feature`, `bugfix`, `hotfix`, `release`, `chore`, `feat`, `fix`, `docs`,
|
|
9
|
+
`refactor`, `perf`, `test`, `ci`, `build`, `style`, `opt`, `patch`, `dependabot`.
|
|
10
|
+
|
|
11
|
+
## Commit messages
|
|
12
|
+
|
|
13
|
+
1. Use Conventional Commits: `type(optional-scope)!: short summary`.
|
|
14
|
+
1. Keep commit subjects clear, imperative, and within repository limits.
|
|
15
|
+
1. Keep the commit subject at 100 characters or fewer when commit policy CI enforces this limit.
|
|
16
|
+
1. Include `!` or a `BREAKING CHANGE:` footer when behavior changes are breaking.
|
|
17
|
+
1. Keep commit type and scope aligned with repository policy.
|
|
18
|
+
|
|
19
|
+
## SemVer alignment
|
|
20
|
+
|
|
21
|
+
1. Treat commit messages as release inputs when the repository uses semantic version automation.
|
|
22
|
+
1. Ensure major, minor, and patch intent is reflected in the commit type and breaking markers.
|
|
23
|
+
1. Do not merge release-impacting changes with ambiguous commit messages.
|
|
24
|
+
|
|
25
|
+
## Security and credentials
|
|
26
|
+
|
|
27
|
+
1. Never ask users to paste passphrases, tokens, API keys, or private keys into chat.
|
|
28
|
+
1. Never echo or log secrets from terminal prompts, command output, or environment variables.
|
|
29
|
+
1. Never place credentials in commit messages, source files, workflow files, or documentation.
|
|
30
|
+
1. Prefer existing secure authentication flows (for example SSH agent, OS keychain, `gh auth`).
|
|
31
|
+
|
|
32
|
+
## Safe Git operations
|
|
33
|
+
|
|
34
|
+
1. Avoid force pushes and destructive history rewrites unless explicitly requested and approved.
|
|
35
|
+
1. Keep commits focused and reviewable.
|
|
36
|
+
1. Prefer local verification before pushing release-impacting changes.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Use these Python conventions in this project.
|
|
2
|
+
|
|
3
|
+
## Design and readability
|
|
4
|
+
|
|
5
|
+
1. Prefer explicit, domain-meaningful names over abbreviations.
|
|
6
|
+
1. Keep functions focused; split functions that mix parsing, I/O, and business rules.
|
|
7
|
+
1. Prefer straightforward control flow over clever one-liners.
|
|
8
|
+
1. Raise precise exceptions with actionable error messages.
|
|
9
|
+
|
|
10
|
+
## Typing and APIs
|
|
11
|
+
|
|
12
|
+
1. Add type hints to public functions, methods, and module-level constants.
|
|
13
|
+
1. Keep public interfaces stable and backward compatible unless the task explicitly allows breaking changes.
|
|
14
|
+
1. Use dataclasses or TypedDict for structured data instead of untyped dicts when shape is known.
|
|
15
|
+
|
|
16
|
+
## Imports and dependencies
|
|
17
|
+
|
|
18
|
+
1. Group imports as standard library, third-party, and local modules.
|
|
19
|
+
1. Keep imports minimal and remove unused imports.
|
|
20
|
+
1. Avoid adding runtime dependencies unless there is a clear benefit over stdlib or existing project dependencies.
|
|
21
|
+
|
|
22
|
+
## Testing and verification
|
|
23
|
+
|
|
24
|
+
1. Add or update tests for every behavioral change.
|
|
25
|
+
1. Prefer focused unit tests first; add integration coverage when behavior crosses module boundaries.
|
|
26
|
+
1. Cover success paths, edge cases, and expected failures.
|
|
27
|
+
|
|
28
|
+
## I/O, paths, and safety
|
|
29
|
+
|
|
30
|
+
1. Prefer pathlib over string-based path manipulation.
|
|
31
|
+
1. Use context managers for files, sockets, and subprocess resources.
|
|
32
|
+
1. Never hardcode secrets or tokens in code or tests.
|
|
33
|
+
|
|
34
|
+
## Tooling alignment
|
|
35
|
+
|
|
36
|
+
1. Keep code compatible with repository linting and type-checking standards.
|
|
37
|
+
1. Do not silence lint/type errors unless there is a documented, task-specific reason.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Review the selected code or diff for production risk.
|
|
2
|
+
|
|
3
|
+
Focus only on issues with real impact:
|
|
4
|
+
|
|
5
|
+
- correctness and edge cases
|
|
6
|
+
- security and data exposure
|
|
7
|
+
- performance and scalability
|
|
8
|
+
- maintainability and ownership boundaries
|
|
9
|
+
- missing tests for changed behavior
|
|
10
|
+
|
|
11
|
+
Ignore:
|
|
12
|
+
|
|
13
|
+
- style-only preferences with no runtime impact
|
|
14
|
+
- speculative risks without evidence in this change
|
|
15
|
+
|
|
16
|
+
Output exactly in this format:
|
|
17
|
+
|
|
18
|
+
## Must fix
|
|
19
|
+
|
|
20
|
+
List blocking issues that should be resolved before merge.
|
|
21
|
+
|
|
22
|
+
## Should consider
|
|
23
|
+
|
|
24
|
+
List non-blocking improvements worth addressing now.
|
|
25
|
+
|
|
26
|
+
## Looks good
|
|
27
|
+
|
|
28
|
+
List intentional strengths in this change.
|
|
29
|
+
|
|
30
|
+
For each item:
|
|
31
|
+
|
|
32
|
+
- cite the relevant file/section
|
|
33
|
+
- explain why it matters in one short sentence
|
|
34
|
+
- give one concrete fix suggestion
|
|
35
|
+
|
|
36
|
+
End with:
|
|
37
|
+
|
|
38
|
+
- Merge recommendation: yes / no / yes-with-conditions
|
|
39
|
+
- Biggest remaining risk: one sentence
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
```bash
|
|
2
|
+
# Detect base branch (main / master / develop / trunk)
|
|
3
|
+
BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null) \
|
|
4
|
+
|| BASE=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}') \
|
|
5
|
+
|| BASE=$(git branch -r 2>/dev/null | grep -E '/(main|master|develop|trunk)' | head -1 | sed 's|.*origin/||') \
|
|
6
|
+
|| BASE="main"
|
|
7
|
+
echo "Base branch: $BASE"
|
|
8
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
### Observability Checklist
|
|
2
|
+
|
|
3
|
+
**Always — every new code path:**
|
|
4
|
+
|
|
5
|
+
| Aspect | Check |
|
|
6
|
+
| ------------------- | ---------------------------------------------------------------- |
|
|
7
|
+
| **Structured logs** | Key events emit structured log with correlation ID |
|
|
8
|
+
| **Error logs** | All `catch` / error handlers log at ERROR level with stack trace |
|
|
9
|
+
|
|
10
|
+
**Where the stack supports it:**
|
|
11
|
+
|
|
12
|
+
| Aspect | Check |
|
|
13
|
+
| ----------- | --------------------------------------------------------- |
|
|
14
|
+
| **Metrics** | Counters/histograms for request rate, error rate, latency |
|
|
15
|
+
| **Traces** | Distributed trace spans created for cross-service calls |
|
|
16
|
+
|
|
17
|
+
**Consider — based on risk and system maturity:**
|
|
18
|
+
|
|
19
|
+
Think through how failures and performance degradation will be visible in production.
|
|
20
|
+
Not every item is required, but each should be consciously decided:
|
|
21
|
+
|
|
22
|
+
| Aspect | Question |
|
|
23
|
+
| -------------- | -------------------------------------------------------------- |
|
|
24
|
+
| **Alerts** | How will an error spike or reliability degradation be noticed? |
|
|
25
|
+
| **Dashboards** | Where will this service/endpoint show up in monitoring? |
|
|
26
|
+
| **Runbook** | If this fails at 3am, does someone know what to do? |
|
|
27
|
+
|
|
28
|
+
> **SLI / SLO / SLA** — three related concepts:
|
|
29
|
+
>
|
|
30
|
+
> - **SLI** (Indicator): the actual measurement — e.g. error rate, p99 latency
|
|
31
|
+
> - **SLO** (Objective): the internal target — e.g. "error rate < 0.1%", "p99 < 200ms"
|
|
32
|
+
> - **SLA** (Agreement): the contractual promise to customers, with consequences if missed
|
|
33
|
+
>
|
|
34
|
+
> Alerts fire when an SLO is at risk. Not every project needs formal SLOs — but every project benefits from knowing what "degraded" looks like.
|
|
35
|
+
|
|
36
|
+
*Observability is first-class scope, not post-launch cleanup.*
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
```bash
|
|
2
|
+
# Detect test runner and run tests
|
|
3
|
+
if [ -f package.json ]; then
|
|
4
|
+
if grep -q '"vitest"' package.json 2>/dev/null; then
|
|
5
|
+
npx vitest run
|
|
6
|
+
elif grep -q '"jest"' package.json 2>/dev/null; then
|
|
7
|
+
npx jest
|
|
8
|
+
elif grep -q '"bun"' package.json 2>/dev/null; then
|
|
9
|
+
bun test
|
|
10
|
+
else
|
|
11
|
+
npm test
|
|
12
|
+
fi
|
|
13
|
+
elif [ -f pyproject.toml ] || [ -f setup.py ]; then
|
|
14
|
+
python -m pytest -v
|
|
15
|
+
elif [ -f go.mod ]; then
|
|
16
|
+
go test ./...
|
|
17
|
+
elif [ -f Cargo.toml ]; then
|
|
18
|
+
cargo test
|
|
19
|
+
else
|
|
20
|
+
echo "No recognized test framework detected."
|
|
21
|
+
fi
|
|
22
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Skill Context
|
|
2
|
+
|
|
3
|
+
This skill is part of **vstack** — a VS Code-native AI engineering workflow system.
|
|
4
|
+
|
|
5
|
+
### AskUserQuestion Format
|
|
6
|
+
|
|
7
|
+
When you need clarification, use this exact format — never invent or guess:
|
|
8
|
+
|
|
9
|
+
> **Question:** [The specific question]
|
|
10
|
+
> **Options:** A) … | B) … | C) …
|
|
11
|
+
> **Default if no response:** [What you'll do]
|
|
12
|
+
|
|
13
|
+
Never ask more than one question at a time without waiting for the answer.
|
|
14
|
+
|
|
15
|
+
### Diagram Convention
|
|
16
|
+
|
|
17
|
+
When producing hand-authored Markdown outputs, prefer Mermaid for flow,
|
|
18
|
+
interaction, lifecycle, state, topology, dependency, and decision diagrams when
|
|
19
|
+
the format is supported and improves clarity. Use ASCII as a fallback when
|
|
20
|
+
Mermaid is unsupported or would be less readable. Keep ASCII/text trees for
|
|
21
|
+
directory structures and other scan-friendly hierarchies.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: adr
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Architecture Decision Record writing. Documents a significant architectural
|
|
5
|
+
decision with context, alternatives considered, rationale, and impact.
|
|
6
|
+
Use when asked to "write an ADR", "document this decision", "record why we
|
|
7
|
+
chose X", or when a significant technical decision needs a permanent record.
|
|
8
|
+
Runs after a decision is made or while evaluating options.
|
|
9
|
+
argument-hint: '[decision to record]'
|
|
10
|
+
|
|
11
|
+
license: MIT
|
|
12
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
13
|
+
metadata:
|
|
14
|
+
owner: vstack
|
|
15
|
+
maturity: stable
|
|
16
|
+
user-invocable: true
|
|
17
|
+
disable-model-invocation: false
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{{SKILL_CONTEXT}}
|
|
2
|
+
|
|
3
|
+
# adr — Architecture Decision Record
|
|
4
|
+
|
|
5
|
+
Document a significant technical decision so future contributors understand
|
|
6
|
+
what was decided, why, and what alternatives were considered.
|
|
7
|
+
|
|
8
|
+
## Out of scope
|
|
9
|
+
|
|
10
|
+
- Architecture reviews of plans (use `architecture`)
|
|
11
|
+
- Gathering requirements (use `requirements`)
|
|
12
|
+
- Implementation (engineering role)
|
|
13
|
+
- Running analysis to inform the decision (use `analyse`)
|
|
14
|
+
|
|
15
|
+
______________________________________________________________________
|
|
16
|
+
|
|
17
|
+
## Step 0: Context Gathering
|
|
18
|
+
|
|
19
|
+
Read existing ADRs and architecture docs:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
ls docs/architecture/adr/ 2>/dev/null | sort | head -20 || true
|
|
23
|
+
cat docs/architecture/architecture.md 2>/dev/null | head -40 || true
|
|
24
|
+
# Find highest existing ADR number
|
|
25
|
+
ls docs/architecture/adr/*.md 2>/dev/null | grep -oE '[0-9]+' | sort -n | tail -1 || echo "0"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Determine the next ADR number (pad to 3 digits: 001, 002, ...).
|
|
29
|
+
|
|
30
|
+
______________________________________________________________________
|
|
31
|
+
|
|
32
|
+
## Step 1: Understand the Decision
|
|
33
|
+
|
|
34
|
+
> **Question:** What decision are we recording?
|
|
35
|
+
> **Options:** A) Decision already made — record it | B) Options still open — evaluate and recommend | C) Superseding an existing ADR — which one?
|
|
36
|
+
> **Default if no response:** A (record an already-made decision)
|
|
37
|
+
|
|
38
|
+
Document:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
Decision: [One-line statement of what was decided]
|
|
42
|
+
Status: proposed | accepted | rejected | deprecated | superseded
|
|
43
|
+
Date: YYYY-MM-DD
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
______________________________________________________________________
|
|
47
|
+
|
|
48
|
+
## Step 2: Context
|
|
49
|
+
|
|
50
|
+
Why does this decision need to be made? What forces are at play?
|
|
51
|
+
|
|
52
|
+
Include:
|
|
53
|
+
|
|
54
|
+
- The problem or requirement driving the decision
|
|
55
|
+
- Relevant constraints (technical, organizational, timeline)
|
|
56
|
+
- Dependencies on other decisions
|
|
57
|
+
- What happens if no decision is made
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
## Context
|
|
61
|
+
[2-4 paragraphs explaining the situation, constraints, and why this matters]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
______________________________________________________________________
|
|
65
|
+
|
|
66
|
+
## Step 3: Alternatives Considered
|
|
67
|
+
|
|
68
|
+
List all serious options that were evaluated. For each:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
### Option A: [Name]
|
|
72
|
+
**Description:** [What this option is]
|
|
73
|
+
**Pros:**
|
|
74
|
+
- [...]
|
|
75
|
+
**Cons:**
|
|
76
|
+
- [...]
|
|
77
|
+
**Why rejected:** [or "this is the chosen option"]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Include at least 2-3 alternatives. Including a "do nothing" option is recommended.
|
|
81
|
+
|
|
82
|
+
______________________________________________________________________
|
|
83
|
+
|
|
84
|
+
## Step 4: Decision
|
|
85
|
+
|
|
86
|
+
State the chosen option clearly:
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
## Decision
|
|
90
|
+
We will [chosen option].
|
|
91
|
+
|
|
92
|
+
[1-2 sentences on why this option was selected over alternatives]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
______________________________________________________________________
|
|
96
|
+
|
|
97
|
+
## Step 5: Rationale
|
|
98
|
+
|
|
99
|
+
Explain the reasoning in depth:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
## Rationale
|
|
103
|
+
[Detailed explanation: what made this the right choice given the context and constraints.
|
|
104
|
+
Reference specific cons from rejected options and explain why they were acceptable tradeoffs.]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
______________________________________________________________________
|
|
108
|
+
|
|
109
|
+
## Step 6: Consequences & Impact
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
## Consequences
|
|
113
|
+
|
|
114
|
+
### Positive
|
|
115
|
+
- [Expected benefits]
|
|
116
|
+
|
|
117
|
+
### Negative / Tradeoffs
|
|
118
|
+
- [Known downsides or limitations of this choice]
|
|
119
|
+
|
|
120
|
+
### Risks
|
|
121
|
+
- [What could go wrong, and how we'd detect or mitigate it]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
______________________________________________________________________
|
|
125
|
+
|
|
126
|
+
## Step 7: Related Decisions
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
## Related ADRs
|
|
130
|
+
- ADR-NNN: [title] — [relationship: supersedes / related to / depends on]
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
______________________________________________________________________
|
|
134
|
+
|
|
135
|
+
## Output: ADR file
|
|
136
|
+
|
|
137
|
+
Write to `docs/architecture/adr/NNN-<slug>.md` where NNN is the next available number and slug
|
|
138
|
+
is a kebab-case title.
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
# ADR-NNN: <title>
|
|
142
|
+
|
|
143
|
+
**Date:** YYYY-MM-DD
|
|
144
|
+
**Status:** proposed | accepted | rejected | deprecated | superseded
|
|
145
|
+
|
|
146
|
+
## Context
|
|
147
|
+
[...]
|
|
148
|
+
|
|
149
|
+
## Decision
|
|
150
|
+
[...]
|
|
151
|
+
|
|
152
|
+
## Alternatives Considered
|
|
153
|
+
[...]
|
|
154
|
+
|
|
155
|
+
## Rationale
|
|
156
|
+
[...]
|
|
157
|
+
|
|
158
|
+
## Consequences
|
|
159
|
+
[...]
|
|
160
|
+
|
|
161
|
+
## Related ADRs
|
|
162
|
+
[...]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
After writing, state the file path and summary so the architect or product role can review.
|
|
166
|
+
|
|
167
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: analyse
|
|
2
|
+
version: 1.0.2
|
|
3
|
+
description: |
|
|
4
|
+
Cross-cutting technical analysis. Investigates impact, tradeoffs, root causes,
|
|
5
|
+
or feasibility without implementing changes. Use when asked to "analyse this",
|
|
6
|
+
"investigate the impact", "what are the tradeoffs", "root cause analysis",
|
|
7
|
+
"is this feasible?", or "compare these approaches". Produces an analysis report.
|
|
8
|
+
argument-hint: '[topic, change, or question to analyse]'
|
|
9
|
+
|
|
10
|
+
license: MIT
|
|
11
|
+
compatibility: Requires a skills-compatible agent with repository file access and terminal command execution when needed.
|
|
12
|
+
metadata:
|
|
13
|
+
owner: vstack
|
|
14
|
+
maturity: stable
|
|
15
|
+
user-invocable: true
|
|
16
|
+
disable-model-invocation: false
|