From dstoic
Generic test executor for OpenSpec changes. Use when: running checkpoint verification at gates, executing test.md strategies.
npx claudepluginhub digital-stoic-org/agent-skills --plugin dstoicThis skill is limited to using the following tools:
Generic verification executor for OpenSpec gates. Follows test.md strategy literally — no improvisation.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Generic verification executor for OpenSpec gates. Follows test.md strategy literally — no improvisation.
flowchart LR
A["Read test.md"] --> B["Validate quality"]
B --> C{"Lazy patterns?"}
C -->|Yes| X["BLOCKED"]
C -->|No| D["Execute verification"]
D --> E["Write logs"]
E --> F["Report result"]
classDef action fill:#C8E6C9,stroke:#388E3C,color:#000
classDef decision fill:#FFF9C4,stroke:#FBC02D,color:#000
classDef fail fill:#FFCDD2,stroke:#D32F2F,color:#000
class A,B,D,E,F action
class C decision
class X fail
CRITICAL: After EVERY AskUserQuestion call, check if answers are empty/blank. Known Claude Code bug: outside Plan Mode, AskUserQuestion silently returns empty answers without showing UI.
If answers are empty: DO NOT proceed with assumptions. Instead:
Input: $ARGUMENTS = change-id section-number (e.g., add-feature 3)
Workflow:
openspec/changes/{change-id}/tasks.md → find ## {section-number}. ...openspec/changes/{change-id}/test.md → verification strategy. If missing: warn + offer /openspec-plan tasks {change-id} or skip (garage only).**Design**: header → read openspec/changes/{change-id}/design.md for invariants, key flows, and ADRs (informs gate evaluation context)grep "keyword", [ -f file ], wc -l, echo). If found → BLOCKED with suggestion for functional verification.test-logs/gate-{n}-{yyyyMMddHHmm}.yaml (raw, append-per-step) + test-logs/gate-{n}-{yyyyMMddHHmm}.md (summary). Timestamp = run start time. See reference.md §Log Formats.[auto]):| Tag | Action | Evaluator |
|---|---|---|
[auto] | Run command, assert exit+output | Agent |
[smoke] | Run command, display output | Agent + human glance |
[manual] | Display instructions, AskUserQuestion (PASS/FAIL/SKIP) | Human |
[auto] + [smoke] first, group [manual] at endgate-{n}-{ts}.md — rendered from raw YAML, not memory. See reference.md §Test Log Format.### GATE {n}: desc [PASS] in tasks.mdTwo artifacts per gate run in openspec/changes/{change-id}/test-logs/:
| File | Format | Purpose |
|---|---|---|
gate-{n}-{yyyyMMddHHmm}.yaml | YAML | Source of truth — append-per-step, full stdout/stderr (mask secrets) |
gate-{n}-{yyyyMMddHHmm}.md | Markdown | Human summary — rendered from raw YAML after all steps |
See reference.md §Raw Log Format for YAML schema, §Test Log Format for markdown template.
Read openspec/project.md → mode:
See reference.md for: log format templates, YAML schema, test progression strategy, framework-specific patterns, execution tracing, failure diagnostics.