Skip to content

feat(testing): restructure testing skill into a router + 8 domain leaves#31

Open
stuffbucket wants to merge 1 commit into
mainfrom
testing-skill-family
Open

feat(testing): restructure testing skill into a router + 8 domain leaves#31
stuffbucket wants to merge 1 commit into
mainfrom
testing-skill-family

Conversation

@stuffbucket

Copy link
Copy Markdown
Owner

What

Converts the single testing-skill monolith into a testing/ family root that routes to 8 focused sub-skills, mirroring the design-* / tauri-* family-root pattern already established in this repo.

Why

testing-skill was one flat page trying to cover file placement, mocking, coverage, and framework quick-refs for every language at once. Splitting it into a triage router + domain leaves lets a client load only the relevant leaf, and gives the runtime-specific footguns (Bun mock.module leaks, DOM-free testing) room to be thorough instead of a footnote.

Structure

Roottesting/ — routing table + decision flow + cross-family edges + when-not-to-use. Bare name + description frontmatter (family-root convention).

Universal leaves (any language/runtime; each keeps multi-runtime run pointers with Bun as the center of gravity):

  • testing-fundamentals — placement, arrange-act-assert, naming, what to test, coverage philosophy. The default entry point.
  • testing-dependency-injection — inject the filesystem/network/clock/module instead of mocking modules.
  • testing-mutation — mutation testing and acting on surviving mutants.
  • testing-contract-tests — enum/union completeness, cross-boundary parity, authored-but-skipped suites.

Bun leaves (the testing slice only — non-test Bun capabilities are intentionally left for a future bun-* family):

  • testing-bun-runner — the bun test runner and its idioms. The Bun entry point.
  • testing-bun-mock-leaks — the mock.module cross-file forward-leak footgun.
  • testing-bun-http — in-memory app.request() handler testing, no port bind.
  • testing-bun-dom-free — DOM-free core + injected structural interfaces.

Conventions & salience

  • Root uses the bare name + description family-root convention (as design/, tauri/); leaves drop the non-conventional license key.
  • Salience-to-parent: Bun testing info lives in the testing-bun-* leaves (loaded only when working with Bun and testing), not in a Bun family; universal leaves keep multi-runtime pointers with Bun as the center of gravity.

Validation

  • quick_validate.py passes on all 9 skills; --all passes (125 skills).
  • markdownlint-cli2 clean on the family.
  • llms.txt and README.md regenerated; index.json is gitignored and rebuilt on install.
  • Plugin-structure tests: 148 pass / 0 fail.

Convert the single `testing-skill` monolith into a `testing/` family root
that routes to eight focused sub-skills, mirroring the design-* / tauri-*
family-root pattern already in the repo.

Universal leaves (any language/runtime), each keeping multi-runtime run
pointers with Bun as the center of gravity:
- testing-fundamentals: placement, AAA, naming, what to test, coverage
- testing-dependency-injection: inject deps instead of mocking modules
- testing-mutation: mutation testing and surviving mutants
- testing-contract-tests: enum/union completeness, cross-boundary parity

Bun-specific leaves (the testing slice only; non-test Bun capabilities are
left for a future bun-* family):
- testing-bun-runner: the `bun test` runner and its idioms
- testing-bun-mock-leaks: the mock.module cross-file forward-leak footgun
- testing-bun-http: in-memory app.request() handler testing, no port bind
- testing-bun-dom-free: DOM-free core + injected structural interfaces

Root frontmatter follows the bare name+description family-root convention;
leaves drop the non-conventional license key. Regenerated llms.txt and
README; index.json is gitignored and rebuilt on install.
@github-actions

Copy link
Copy Markdown
Contributor

✅ Skill Validation Report

New skill(s): testing-bun-dom-free, testing-bun-http, testing-bun-mock-leaks, testing-bun-runner, testing-contract-tests, testing-dependency-injection, testing-fundamentals, testing-mutation, testing

Validation

> @stuffbucket/skills@0.2.18 validate
> python3 plugins/stuffbucket/skills/skill-creator/scripts/quick_validate.py --all plugins/stuffbucket/skills

  [PASS] azure-cli-setup: Skill is valid!
  [PASS] boundary: Skill is valid!
  [PASS] boundary-domain-closure: Skill is valid!
  [PASS] boundary-drift-detection: Skill is valid!
  [PASS] boundary-generation-control: Skill is valid!
  [PASS] boundary-noise-model: Skill is valid!
  [PASS] boundary-scope-escape: Skill is valid!
  [PASS] boundary-seed-encoding: Skill is valid!
  [PASS] code-analysis-skill: Skill is valid!
  [PASS] code-review-cycle: Skill is valid!
  [PASS] colima-docker-setup: Skill is valid!
  [PASS] design: Skill is valid!
  [PASS] design-adapt: Skill is valid!
  [PASS] design-animate: Skill is valid!
  [PASS] design-arrange: Skill is valid!
  [PASS] design-audit: Skill is valid!
  [PASS] design-bolder: Skill is valid!
  [PASS] design-check: Skill is valid!
  [PASS] design-clarify: Skill is valid!
  [PASS] design-colorize: Skill is valid!
  [PASS] design-context: Skill is valid!
  [PASS] design-critique: Skill is valid!
  [PASS] design-delight: Skill is valid!
  [PASS] design-distill: Skill is valid!
  [PASS] design-extract: Skill is valid!
  [PASS] design-frontend: Skill is valid!
  [PASS] design-harden: Skill is valid!
  [PASS] design-normalize: Skill is valid!
  [PASS] design-onboard: Skill is valid!
  [PASS] design-optimize: Skill is valid!
  [PASS] design-overdrive: Skill is valid!
  [PASS] design-polish: Skill is valid!
  [PASS] design-quieter: Skill is valid!
  [PASS] design-typeset: Skill is valid!
  [PASS] design-typography-rules: Skill is valid!
  [PASS] example-skill: Skill is valid!
  [PASS] figma-make-to-vite: Skill is valid!
  [PASS] file-management-skill: Skill is valid!
  [PASS] ghostty-config: Skill is valid!
  [PASS] git-workflow-skill: Skill is valid!
  [PASS] npm-trusted-publishing: Skill is valid!
  [PASS] pages: Skill is valid!
  [PASS] pages-build-vite: Skill is valid!
  [PASS] pages-commit-vite: Skill is valid!
  [PASS] pages-prepare-vite: Skill is valid!
  [PASS] pages-publish-vite: Skill is valid!
  [PASS] pages-push-vite: Skill is valid!
  [PASS] react: Skill is valid!
  [PASS] react-best-practices: Skill is valid!
  [PASS] react-composition: Skill is valid!
  [PASS] skill-creator: Skill is valid!
  [PASS] skill-eval-loop: Skill is valid!
  [PASS] skill-router: Skill is valid!
  [PASS] tauri: Skill is valid!
  [PASS] tauri-architecture: Skill is valid!
  [PASS] tauri-architecture-ipc-internals: Skill is valid!
  [PASS] tauri-architecture-isolation-pattern: Skill is valid!
  [PASS] tauri-architecture-size-optimization: Skill is valid!
  [PASS] tauri-bundling: Skill is valid!
  [PASS] tauri-bundling-github-actions: Skill is valid!
  [PASS] tauri-bundling-linux-packaging: Skill is valid!
  [PASS] tauri-bundling-macos-signing: Skill is valid!
  [PASS] tauri-bundling-mobile-stores: Skill is valid!
  [PASS] tauri-bundling-windows-signing: Skill is valid!
  [PASS] tauri-commands: Skill is valid!
  [PASS] tauri-commands-async-patterns: Skill is valid!
  [PASS] tauri-commands-error-handling: Skill is valid!
  [PASS] tauri-commands-state-injection: Skill is valid!
  [PASS] tauri-debug-test: Skill is valid!
  [PASS] tauri-debug-test-devtools-production: Skill is valid!
  [PASS] tauri-debug-test-mock-ipc: Skill is valid!
  [PASS] tauri-debug-test-webdriver-e2e: Skill is valid!
  [PASS] tauri-events: Skill is valid!
  [PASS] tauri-events-channels-streaming: Skill is valid!
  [PASS] tauri-events-targeted-emit: Skill is valid!
  [PASS] tauri-plugin-dev: Skill is valid!
  [PASS] tauri-plugin-dev-guest-js: Skill is valid!
  [PASS] tauri-plugin-dev-mobile-bridges: Skill is valid!
  [PASS] tauri-plugin-dev-permissions-manifest: Skill is valid!
  [PASS] tauri-plugins: Skill is valid!
  [PASS] tauri-plugins-deep-link: Skill is valid!
  [PASS] tauri-plugins-dialog: Skill is valid!
  [PASS] tauri-plugins-fs: Skill is valid!
  [PASS] tauri-plugins-http: Skill is valid!
  [PASS] tauri-plugins-notification: Skill is valid!
  [PASS] tauri-plugins-shell: Skill is valid!
  [PASS] tauri-plugins-sql: Skill is valid!
  [PASS] tauri-plugins-store: Skill is valid!
  [PASS] tauri-security: Skill is valid!
  [PASS] tauri-security-asset-protocol: Skill is valid!
  [PASS] tauri-security-capabilities-authoring: Skill is valid!
  [PASS] tauri-security-csp: Skill is valid!
  [PASS] tauri-security-scopes: Skill is valid!
  [PASS] tauri-setup: Skill is valid!
  [PASS] tauri-setup-prerequisites: Skill is valid!
  [PASS] tauri-setup-scaffolding: Skill is valid!
  [PASS] tauri-setup-v1v2: Skill is valid!
  [PASS] tauri-setup-vite: Skill is valid!
  [PASS] tauri-sidecar: Skill is valid!
  [PASS] tauri-sidecar-lifecycle: Skill is valid!
  [PASS] tauri-sidecar-node-sidecar: Skill is valid!
  [PASS] tauri-sidecar-target-triples: Skill is valid!
  [PASS] tauri-tray-menu: Skill is valid!
  [PASS] tauri-tray-menu-bar-app: Skill is valid!
  [PASS] tauri-tray-menu-context-menus: Skill is valid!
  [PASS] tauri-tray-menu-dynamic-updates: Skill is valid!
  [PASS] tauri-updater: Skill is valid!
  [PASS] tauri-updater-github-releases: Skill is valid!
  [PASS] tauri-updater-install-flow: Skill is valid!
  [PASS] tauri-updater-signing-keys: Skill is valid!
  [PASS] tauri-windows: Skill is valid!
  [PASS] tauri-windows-custom-titlebar: Skill is valid!
  [PASS] tauri-windows-multi-window: Skill is valid!
  [PASS] tauri-windows-splashscreen: Skill is valid!
  [PASS] tauri-windows-transparency-vibrancy: Skill is valid!
  [PASS] testing: Skill is valid!
  [PASS] testing-bun-dom-free: Skill is valid!
  [PASS] testing-bun-http: Skill is valid!
  [PASS] testing-bun-mock-leaks: Skill is valid!
  [PASS] testing-bun-runner: Skill is valid!
  [PASS] testing-contract-tests: Skill is valid!
  [PASS] testing-dependency-injection: Skill is valid!
  [PASS] testing-fundamentals: Skill is valid!
  [PASS] testing-mutation: Skill is valid!
  [PASS] update-skills: Skill is valid!

Validated 125 skill(s): all passed

Index build: ✅ passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants