Skip to content

feat(skills): add test-specflow skill for manual UX validation#10

Merged
kevinkod merged 1 commit intomainfrom
feat/test-specflow-skill
May 1, 2026
Merged

feat(skills): add test-specflow skill for manual UX validation#10
kevinkod merged 1 commit intomainfrom
feat/test-specflow-skill

Conversation

@kevinkod
Copy link
Copy Markdown
Contributor

@kevinkod kevinkod commented May 1, 2026

Summary

A pre-baked toolbox for spinning up controlled test environments and running Specflow against them — same pattern that caught the brownfield .gitignore bug (#6) and validated the fix end-to-end.

Each script targets test/<name>/ (gitignored at the repo root, so nothing leaks to commits) and runs Specflow via `deno run --allow-all src/main.ts` against the working tree, not the installed binary.

Scripts

```
.claude/skills/test-specflow/scripts/
├── bootstrap-vite.sh # Vite React-TS scaffold
├── bootstrap-empty.sh # empty greenfield (git init + stub package.json)
├── run-init.sh # specflow init --here --ai
├── inspect.sh # summarize specflow output paths in test//
├── compare-harnesses.sh # bootstrap once + all 8 harnesses on copies
└── clean.sh [] # remove one project or the whole test/ tree
```

All idempotent (re-running wipes pre-existing `test//` first).

Typical use

```bash
bash .claude/skills/test-specflow/scripts/bootstrap-vite.sh demo
bash .claude/skills/test-specflow/scripts/run-init.sh demo claude
bash .claude/skills/test-specflow/scripts/inspect.sh demo
cat test/demo/.gitignore # eyeball the merge
```

Test plan

  • Smoke test ran end-to-end on a fresh Vite scaffold:
    • bootstrap → 24-line .gitignore from Vite + standard React-TS files
    • run-init claude → 39 files written, exit 0
    • inspect → `.claude/` (20 files), `.specflow/` (16 files), `tasks/`, AGENTS.md, CLAUDE.md, `.gitignore` (360 bytes — Vite + Specflow merged correctly)
  • Skill metadata is picked up by Claude Code (visible in available-skills list with the right description).

🤖 Generated with Claude Code

A toolbox for spinning up controlled test environments under
test/<name>/ (gitignored) and running Specflow against them using
the current source tree (deno run on src/main.ts) — not the
installed binary. Same pattern that caught the brownfield
.gitignore bug (#6) and validated the fix end-to-end.

Scripts:

- bootstrap-vite.sh <name>     Vite React-TS scaffold (skips npm
                               install — deps not needed for the
                               UX test path).
- bootstrap-empty.sh <name>    git-init'd dir with stub
                               package.json — greenfield case.
- run-init.sh <name> <harness> deno run src/main.ts init --here
                               --no-git --ai <harness>.
- inspect.sh <name>            list specflow output paths
                               (.claude, .agent, .specflow,
                               tasks/, AGENTS.md, CLAUDE.md,
                               .gitignore) with file counts /
                               byte sizes.
- compare-harnesses.sh <name>  bootstrap once + run all 8
                               harnesses on copies + print summary
                               per harness.
- clean.sh [<name>]            remove test/<name>/ or wipe test/
                               entirely.

All scripts are idempotent (re-run wipes any prior test/<name>/
first). Verified end-to-end against a fresh Vite scaffold —
init produces 39 files, .gitignore correctly merges Vite + Specflow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@kevinkod kevinkod merged commit b7e1df9 into main May 1, 2026
4 checks passed
@kevinkod kevinkod deleted the feat/test-specflow-skill branch May 1, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant