Angular Testing
Kilo-Org/kilo-marketplace
Write unit and integration tests for Angular v20+ applications using Vitest or Jasmine with TestBed and modern testing patterns.
Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install softspark/ai-toolkit testing-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/app/skills/testing-patterns .claude/skills/testing-patterns && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .claude/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install softspark/ai-toolkit testing-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/app/skills/testing-patterns .agents/skills/testing-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .agents/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install softspark/ai-toolkit testing-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/app/skills/testing-patterns .cursor/skills/testing-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .cursor/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/softspark/ai-toolkit.git --path app/skills/testing-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install softspark/ai-toolkit testing-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/app/skills/testing-patterns .gemini/skills/testing-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .gemini/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install softspark/ai-toolkit testing-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/app/skills/testing-patterns .github/skills/testing-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .github/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add softspark/ai-toolkit --skill testing-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install softspark/ai-toolkit testing-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/app/skills/testing-patterns .opencode/skills/testing-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/softspark/ai-toolkit/tree/main/app/skills/testing-patterns into .opencode/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
testing-patternsTesting strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
Testing Patterns is an agent skill from softspark/ai-toolkit. Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage. Triggers: test, fixture, mock, stub, e2e, TDD, Playwright, Cypress, flaky, coverage, property-based.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files (for example `reference/flutter-testing.md`, `reference/go-testing.md` and `reference/php-phpunit.md`).
It sits in Testing & QA, covering Test strategy, End-to-end testing and Unit testing. It works with Cypress, Playwright, Python and pytest. The repository describes itself as: Professional-grade AI coding toolkit: 94 skills, 44 agents, multi-platform (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Antigravity, Codex CLI… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit d64db2b. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pytestjestFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Testing Patterns loads about 1.6k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 656 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from softspark/ai-toolkit at commit d64db2b, republished under its Apache-2.0 licence (© softspark). 656 words, ~1,636 tokens.
.claude/skills/testing-patterns/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.def test_function_does_expected_thing():
"""Test description explaining what and why."""
# Arrange - Set up test data and preconditions
input_data = {"key": "value"}
expected = "result"
# Act - Execute the code under test
result = function_under_test(input_data)
# Assert - Verify the outcome
assert result == expectedtests/
├── conftest.py # Shared fixtures
├── unit/ # Unit tests (isolated)
│ ├── test_search_core.py
│ └── test_utils.py
├── integration/ # Integration tests
│ └── test_api.py
└── e2e/ # End-to-end tests
└── test_workflow.py| Metric | Target |
|---|---|
| Coverage | >70% overall |
| New code | 100% |
| Core modules | >80% |
| No flaky tests | 0 |
Mirrored validators can agree on a generated snapshot while disagreeing on real inputs. Execute the same accepted/rejected fixtures against the real backend validator and the client evaluator. Include N/N+1 boundaries, collection/item limits, omitted/null/empty/default values, nested paths, conditional branches, hydrated updates versus fresh DTOs, Unicode units and previously valid inputs.
Test the actual HTTP path for malformed input and unchanged persisted state after a pre-write refusal. Test zero transport calls for a local refusal, normal transport for a valid payload, and field correction/resubmission. Run deterministic-generation and reviewed-exclusion checks separately from behavioral parity. A schema/rule count is inventory, not assertion coverage.
For operation semantics and runtime mismatches, read
reference/input-validation.md from the installed security-patterns skill.
Resolve the skill through the current client's catalog; directory names may
carry an adapter-specific prefix.
| Language | Reference | Key Topics |
|---|---|---|
| Python | reference/python-pytest.md | Fixtures, mocking, parametrize, markers, conftest, running tests |
| TypeScript | reference/typescript-vitest.md | Vitest/Jest, React Testing Library, mocking, running tests |
| PHP | reference/php-phpunit.md | PHPUnit test cases, mocking, running tests |
| Go | reference/go-testing.md | Table-driven tests, testify mocking, running tests |
| Flutter/Dart | reference/flutter-testing.md | Widget tests, unit tests, running tests |
For Python pytest patterns, see reference/python-pytest.md.
For TypeScript Vitest/Jest patterns, see reference/typescript-vitest.md.
For PHP PHPUnit patterns, see reference/php-phpunit.md.
For Go testing patterns, see reference/go-testing.md.
For Flutter/Dart testing patterns, see reference/flutter-testing.md.
| Excuse | Why It's Wrong |
|---|---|
| "It's too simple to test" | Simple code breaks in integration — test the contract, not the complexity |
| "Tests slow down development" | Tests slow down bugs reaching production — that's the point |
| "We'll add tests later" | Untested code accumulates — later means never, and coverage gaps compound |
| "Mocking everything is fine" | Over-mocking tests the mocks, not the code — mock at boundaries only |
| "100% coverage means no bugs" | Coverage measures execution, not correctness — focus on behavior assertions |
# pragma: no cover usage. A 95% reported coverage with 60% real behavior assertion is common..toMatchSnapshot(), pytest-regressions) accept any output as "correct" on first run. An incorrect initial snapshot becomes the accepted baseline — review snapshots as carefully as code.any matchers (e.g., .mock.calls[0][0] without a schema) pass even when the production call shape changes. Assert on specific arguments, not just "was called".pytest -n auto or jest --parallel is usually shared state./test/tdd/debug on the failure output/app-builder© softspark, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files in app/skills/testing-patterns of softspark/ai-toolkit.
Open the folder on GitHubat commit d64db2b
Testing Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Testing Patterns this skillsoftspark/ai-toolkit | 179 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Angular TestingKilo-Org/kilo-marketplace | 189 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Designing TestsCloudAI-X/claude-workflow-v2 | 1.4k | 1 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Playwright Testingchongdashu/vibejam-starter-pack | 149 | — | ~2.1k | Automated safety check: Pass | None | |
| Web Testing with Playwright and Vitestwithkynam/vibecode-pro-max-kit | 1.1k | — | ~892 | Automated safety check: Pass | Apache-2.0 | |
| Claude Code QAPramodDutta/qaskills | 232 | — | ~2.3k | Automated safety check: Pass | MIT |
Kilo-Org/kilo-marketplace
Write unit and integration tests for Angular v20+ applications using Vitest or Jasmine with TestBed and modern testing patterns.
CloudAI-X/claude-workflow-v2
Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.
chongdashu/vibejam-starter-pack
Plan, implement, and debug frontend tests: unit/integration/E2E/visual/a11y.
withkynam/vibecode-pro-max-kit
Covers web testing from unit to E2E, load, visual, accessibility and security checks, with Playwright, Vitest and k6 guides plus a Playwright setup script.
PramodDutta/qaskills
The complete QA skill for Claude Code — turn Claude into an expert QA engineer that picks the right test type, writes reliable Playwright, Cypress, and pytest tests, eliminates flaky tests, enforces…
petrkindlmann/qa-skills
Migrate a test suite from one framework to another, incrementally and without losing coverage.
softspark/ai-toolkit
Prepare or verify a project QA environment with source identity, readiness, browser access, evidence paths and owned cleanup.
softspark/ai-toolkit
Accessibility validator: WCAG 2.1 AA, EN 301 549, EAA. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Analyzes code quality, complexity, patterns across codebase.
softspark/ai-toolkit
Drives a brief, specification, issue or existing PR through implementation, review, tests and QA to a ready PR.
softspark/ai-toolkit
Direct technical voice for docs, README, user-facing text. An agent skill from softspark/ai-toolkit.
softspark/ai-toolkit
Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI).
Categories
Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage. Testing Patterns is an agent skill from softspark/ai-toolkit. Testing strategy: pyramid, AAA, mocks/fakes/stubs, flaky tests, coverage.
Testing Patterns fits situations like: tasks that involve Test strategy; tasks that involve End-to-end testing; tasks that involve Unit testing.
Run `npx skills add softspark/ai-toolkit --skill testing-patterns -a claude-code`. Or copy the skill folder (app/skills/testing-patterns in softspark/ai-toolkit) into .claude/skills/testing-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add softspark/ai-toolkit --skill testing-patterns -a codex`. Or copy the skill folder (app/skills/testing-patterns in softspark/ai-toolkit) into .agents/skills/testing-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add softspark/ai-toolkit --skill testing-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-patterns, .gemini/skills/testing-patterns, .github/skills/testing-patterns and .opencode/skills/testing-patterns in your project.
Going by SKILL.md and its folder, Testing Patterns needs the command-line tools its instructions call (pytest and jest). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Testing Patterns is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Testing Patterns: Angular Testing (Kilo-Org/kilo-marketplace, 189 stars), Designing Tests (CloudAI-X/claude-workflow-v2, 1.4k stars), Playwright Testing (chongdashu/vibejam-starter-pack, 149 stars) and Web Testing with Playwright and Vitest (withkynam/vibecode-pro-max-kit, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
softspark (a GitHub user) maintains it in softspark/ai-toolkit, which has 179 GitHub stars. The repository holds 112 skills in this directory. The repository was last updated on October 7, 2026.
Source: softspark/ai-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.