Agent skill

Pict Test Designer

by omkamal in omkamal/pypict-claude-skill

Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code.

MITAuto-check passedTesting & QA

Install Pict Test Designer

skills CLI
$ npx skills add omkamal/pypict-claude-skill --skill pict-test-designer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install omkamal/pypict-claude-skill pict-test-designer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pict-test-designer
GitHub stars
100
Token cost
~2.7k tokens
SKILL.md length
903 words
Files
31 (incl. scripts, references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code.

  • Works in 5 steps: Analyze Requirements or Code → Generate PICT Model → Execute PICT Model → …
  • Tasks that involve Test generation
  • SKILL.md covers When to Use This Skill, Workflow, Output Format and Best Practices, plus 4 more sections
  • Calls python and pip

What it does

Pict Test Designer is an agent skill from omkamal/pypict-claude-skill. Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code. Analyzes inputs, generates PICT models with parameters, values, and constraints for valid scenarios using pairwise testing. Outputs the PICT model, markdown table of test cases, and expected results.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 34 other files, including scripts and reference files (for example `.claude-plugin/marketplace.json`, `.claude-plugin/plugin.json` and `.github/ISSUE_TEMPLATE/bug_report.md`).

It sits in Testing & QA, covering Test generation. The repository describes itself as: A claude skill that generate test cases using N-wise test cases using the pypict library. The licence is MIT.

When your agent uses it

  • Tasks that involve Test generation

Example prompts

  • “/pict-test-designer”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Analyze Requirements or Code
  2. Generate PICT Model
  3. Execute PICT Model
  4. Determine Expected Outputs
  5. Format Complete Test Suite

What it can do on your machine

Read from SKILL.md and the folder at commit fbda212. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • pairwise.yuuniworks.com
    • github.com
    • pairwise.teremokgames.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pict Test Designer loads about 2.7k tokens when it runs, and up to ~3.8k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 903 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.8k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from omkamal/pypict-claude-skill at commit fbda212, republished under its MIT licence (© omkamal). 903 words, ~2,732 tokens.

Download SKILL.mdSave it as .claude/skills/pict-test-designer/SKILL.md (or your agent's skills folder). This skill also uses 30 other files; get the full folder from GitHub.
name
pict-test-designer
description
Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code. Analyzes inputs, generates PICT models with parameters, values, and constraints for valid scenarios using pairwise testing. Outputs the PICT model, markdown table of test cases, and expected results.

PICT Test Designer

This skill enables systematic test case design using PICT (Pairwise Independent Combinatorial Testing). Given requirements or code, it analyzes the system to identify test parameters, generates a PICT model with appropriate constraints, executes the model to generate pairwise test cases, and formats the results with expected outputs.

When to Use This Skill

Use this skill when:

  • Designing test cases for a feature, function, or system with multiple input parameters
  • Creating test suites for configurations with many combinations
  • Needing comprehensive coverage with minimal test cases
  • Analyzing requirements to identify test scenarios
  • Working with code that has multiple conditional paths
  • Building test matrices for API endpoints, web forms, or system configurations

Workflow

Follow this process for test design:

1. Analyze Requirements or Code

From the user's requirements or code, identify:

  • Parameters: Input variables, configuration options, environmental factors
  • Values: Possible values for each parameter (using equivalence partitioning)
  • Constraints: Business rules, technical limitations, dependencies between parameters
  • Expected Outcomes: What should happen for different combinations

Example Analysis:

For a login function with requirements:

  • Users can login with username/password
  • Supports 2FA (on/off)
  • Remembers login on trusted devices
  • Rate limits after 3 failed attempts

Identified parameters:

  • Credentials: Valid, Invalid
  • TwoFactorAuth: Enabled, Disabled
  • RememberMe: Checked, Unchecked
  • PreviousFailures: 0, 1, 2, 3, 4
2. Generate PICT Model

Create a PICT model with:

  • Clear parameter names
  • Well-defined value sets (using equivalence partitioning and boundary values)
  • Constraints for invalid combinations
  • Comments explaining business rules

Model Structure:

# Parameter definitions
ParameterName: Value1, Value2, Value3

# Constraints (if any)
IF [Parameter1] = "Value" THEN [Parameter2] <> "OtherValue";

Refer to references/pict_syntax.md for:

  • Complete syntax reference
  • Constraint grammar and operators
  • Advanced features (sub-models, aliasing, negative testing)
  • Command-line options
  • Detailed constraint patterns

Refer to references/examples.md for:

  • Complete real-world examples by domain
  • Software function testing examples
  • Web application, API, and mobile testing examples
  • Database and configuration testing patterns
  • Common patterns for authentication, resource access, error handling
3. Execute PICT Model

Generate the PICT model text and format it for the user. You can use Python code directly to work with the model:

python
# Define parameters and constraints
parameters = {
    "OS": ["Windows", "Linux", "MacOS"],
    "Browser": ["Chrome", "Firefox", "Safari"],
    "Memory": ["4GB", "8GB", "16GB"]
}

constraints = [
    'IF [OS] = "MacOS" THEN [Browser] IN {Safari, Chrome}',
    'IF [Memory] = "4GB" THEN [OS] <> "MacOS"'
]

# Generate model text
model_lines = []
for param_name, values in parameters.items():
    values_str = ", ".join(values)
    model_lines.append(f"{param_name}: {values_str}")

if constraints:
    model_lines.append("")
    for constraint in constraints:
        if not constraint.endswith(';'):
            constraint += ';'
        model_lines.append(constraint)

model_text = "\n".join(model_lines)
print(model_text)

Using the helper script (optional): The scripts/pict_helper.py script provides utilities for model generation and output formatting:

bash
# Generate model from JSON config
python scripts/pict_helper.py generate config.json

# Format PICT tool output as markdown table
python scripts/pict_helper.py format output.txt

# Parse PICT output to JSON
python scripts/pict_helper.py parse output.txt

To generate actual test cases, the user can:

  1. Save the PICT model to a file (e.g., model.txt)
  2. Use online PICT tools like:
  3. Or install PICT locally (see references/pict_syntax.md)
4. Determine Expected Outputs

For each generated test case, determine the expected outcome based on:

  • Business requirements
  • Code logic
  • Valid/invalid combinations

Create a list of expected outputs corresponding to each test case.

5. Format Complete Test Suite

Provide the user with:

  1. PICT Model - The complete model with parameters and constraints
  2. Markdown Table - Test cases in table format with test numbers
  3. Expected Outputs - Expected result for each test case

Output Format

Present results in this structure:

markdown
## PICT Model

```
# Parameters
Parameter1: Value1, Value2, Value3
Parameter2: ValueA, ValueB

# Constraints
IF [Parameter1] = "Value1" THEN [Parameter2] = "ValueA";
```

## Generated Test Cases

| Test # | Parameter1 | Parameter2 | Expected Output |
| --- | --- | --- | --- |
| 1 | Value1 | ValueA | Success |
| 2 | Value2 | ValueB | Success |
| 3 | Value1 | ValueB | Error: Invalid combination |
...

## Test Case Summary

- Total test cases: N
- Coverage: Pairwise (all 2-way combinations)
- Constraints applied: N

Best Practices

Parameter Identification

Good:

  • Use descriptive names: AuthMethod, UserRole, PaymentType
  • Apply equivalence partitioning: FileSize: Small, Medium, Large instead of FileSize: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  • Include boundary values: Age: 0, 17, 18, 65, 66
  • Add negative values for error testing: Amount: ~-1, 0, 100, ~999999

Avoid:

  • Generic names: Param1, Value1, V1
  • Too many values without partitioning
  • Missing edge cases
Constraint Writing

Good:

  • Document rationale: # Safari only available on MacOS
  • Start simple, add incrementally
  • Test constraints work as expected

Avoid:

  • Over-constraining (eliminates too many valid combinations)
  • Under-constraining (generates invalid test cases)
  • Complex nested logic without clear documentation
Show full SKILL.md (355 more words)Show less
Expected Output Definition

Be specific:

  • "Login succeeds, user redirected to dashboard"
  • "HTTP 400: Invalid credentials error"
  • "2FA prompt displayed"

Not vague:

  • "Works"
  • "Error"
  • "Success"
Scalability

For large parameter sets:

  • Use sub-models to group related parameters with different orders
  • Consider separate test suites for unrelated features
  • Start with order 2 (pairwise), increase for critical combinations
  • Typical pairwise testing reduces test cases by 80-90% vs exhaustive

Common Patterns

Web Form Testing
python
parameters = {
    "Name": ["Valid", "Empty", "TooLong"],
    "Email": ["Valid", "Invalid", "Empty"],
    "Password": ["Strong", "Weak", "Empty"],
    "Terms": ["Accepted", "NotAccepted"]
}

constraints = [
    'IF [Terms] = "NotAccepted" THEN [Name] = "Valid"',  # Test validation even if terms not accepted
]
API Endpoint Testing
python
parameters = {
    "HTTPMethod": ["GET", "POST", "PUT", "DELETE"],
    "Authentication": ["Valid", "Invalid", "Missing"],
    "ContentType": ["JSON", "XML", "FormData"],
    "PayloadSize": ["Empty", "Small", "Large"]
}

constraints = [
    'IF [HTTPMethod] = "GET" THEN [PayloadSize] = "Empty"',
    'IF [Authentication] = "Missing" THEN [HTTPMethod] IN {GET, POST}'
]
Configuration Testing
python
parameters = {
    "Environment": ["Dev", "Staging", "Production"],
    "CacheEnabled": ["True", "False"],
    "LogLevel": ["Debug", "Info", "Error"],
    "Database": ["SQLite", "PostgreSQL", "MySQL"]
}

constraints = [
    'IF [Environment] = "Production" THEN [LogLevel] <> "Debug"',
    'IF [Database] = "SQLite" THEN [Environment] = "Dev"'
]

Troubleshooting

No Test Cases Generated
  • Check constraints aren't over-restrictive
  • Verify constraint syntax (must end with ;)
  • Ensure parameter names in constraints match definitions (use [ParameterName])
Too Many Test Cases
  • Verify using order 2 (pairwise) not higher order
  • Consider breaking into sub-models
  • Check if parameters can be separated into independent test suites
Invalid Combinations in Output
  • Add missing constraints
  • Verify constraint logic is correct
  • Check if you need to use NOT or <> operators
Script Errors
  • Ensure pypict is installed: pip install pypict --break-system-packages
  • Check Python version (3.7+)
  • Verify model syntax is valid

References

  • references/pict_syntax.md - Complete PICT syntax reference with grammar and operators
  • references/examples.md - Comprehensive real-world examples across different domains
  • scripts/pict_helper.py - Python utilities for model generation and output formatting
  • PICT GitHub Repository - Official PICT documentation
  • pypict Documentation - Python binding documentation
  • Online PICT Tools - Web-based PICT generator

Examples

Example 1: Simple Function Testing

User Request: "Design tests for a divide function that takes two numbers and returns the result."

Analysis:

  • Parameters: dividend (number), divisor (number)
  • Values: Using equivalence partitioning and boundaries
    • Numbers: negative, zero, positive, large values
  • Constraints: Division by zero is invalid
  • Expected outputs: Result or error

PICT Model:

Dividend: -10, 0, 10, 1000
Divisor: ~0, -5, 1, 5, 100

IF [Divisor] = "0" THEN [Dividend] = "10";

Test Cases:

Test #DividendDivisorExpected Output
1100Error: Division by zero
2-101-10.0
30-50.0
410005200.0
5101000.1
Example 2: E-commerce Checkout

User Request: "Design tests for checkout flow with payment methods, shipping options, and user types."

Analysis:

  • Payment: Credit Card, PayPal, Bank Transfer (limited by user type)
  • Shipping: Standard, Express, Overnight
  • User: Guest, Registered, Premium
  • Constraints: Guests can't use Bank Transfer, Premium users get free Express

PICT Model:

PaymentMethod: CreditCard, PayPal, BankTransfer
ShippingMethod: Standard, Express, Overnight
UserType: Guest, Registered, Premium

IF [UserType] = "Guest" THEN [PaymentMethod] <> "BankTransfer";
IF [UserType] = "Premium" AND [ShippingMethod] = "Express" THEN [PaymentMethod] IN {CreditCard, PayPal};

Output: 12-15 test cases covering all valid payment/shipping/user combinations with expected costs and outcomes.

© omkamal, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 30 other files (scripts, references) in the repository root of omkamal/pypict-claude-skill.

  • SKILL.md
  • .claude-plugin/marketplace.json
  • .claude-plugin/plugin.json
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/markdown-link-check-config.json
  • .github/pull_request_template.md
  • .github/workflows/ci.yml
  • .gitignore
  • CHANGELOG.md
  • CONTRIBUTING.md
  • LICENSE
  • PUBLISHING.md
  • QUICKSTART.md
  • README.md
  • STRUCTURE.md
  • examples
  • … and 14 more

Open the folder on GitHubat commit fbda212

Compare with similar skills

Pict Test Designer 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.

Pict Test Designer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pict Test Designer this skillomkamal/pypict-claude-skill100—~2.7kAutomated safety check: PassMIT
Fhirpath Test Designeraehrc/pathling137—~3.6kAutomated safety check: PassApache-2.0
Matlab Write Testsmatlab/matlab-agentic-toolkit1.1k—~2.9kAutomated safety check: PassCustom licence
Write and Verify Playwright Testsappsmithorg/appsmith41k—~2.9kAutomated safety check: NotesApache-2.0
Adk Verify Snippetsgoogle/adk-python22k—~1.4kAutomated safety check: PassApache-2.0
Engine E2Ewix/react-native-navigation13k—~1.1kAutomated safety check: PassMIT

Similar skills

  • Design and generate comprehensive FHIRPath test suites using input domain partitioning and Pathling's DSL test framework.

    137 GitHub stars~3.6k tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Matlab Write Tests

    matlab/matlab-agentic-toolkit

    Generate and structure MATLAB unit tests using matlab.unittest and matlab.uitest features, including class-based tests, parameterized testing, fixtures, mocking, and app testing with gestures.

    1.1k GitHub stars~2.9k tokensUpdated 2 days ago
    Testing & QAAuto-check passed
  • Writes a Playwright end-to-end test from a prompt, runs it against a live Appsmith deployment and retries with fixes up to three times until it passes.

    41k GitHub stars~2.9k tokensUpdated yesterday
    Testing & QAAuto-check: notes
  • Adk Verify Snippets

    google/adk-python

    Official

    Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail…

    22k GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Engine E2E

    wix/react-native-navigation

    Official

    Run Wix Engine (mobile-apps-engine) iOS E2E tests locally to validate RNN changes.

    13k GitHub stars~1.1k tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • Hermetic Python Unit Tests

    dimensionalOS/dimos

    Rules for writing, fixing and reviewing pytest unit tests that are hermetic: behavior-focused, deterministic, isolated and cheap to run.

    4.6k GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed

Categories

Questions about Pict Test Designer

What does Pict Test Designer do?

Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code. Pict Test Designer is an agent skill from omkamal/pypict-claude-skill. Design comprehensive test cases using PICT (Pairwise Independent Combinatorial Testing) for any piece of requirements or code.

When should I use Pict Test Designer?

Pict Test Designer fits situations like: tasks that involve Test generation.

How do I install Pict Test Designer in Claude Code?

Run `npx skills add omkamal/pypict-claude-skill --skill pict-test-designer -a claude-code`. Or copy the skill folder (the omkamal/pypict-claude-skill repository) into .claude/skills/pict-test-designer in your project. Claude Code loads it when a task matches its description.

How do I install Pict Test Designer in Codex?

Run `npx skills add omkamal/pypict-claude-skill --skill pict-test-designer -a codex`. Or copy the skill folder (the omkamal/pypict-claude-skill repository) into .agents/skills/pict-test-designer in your project. Codex loads it when a task matches its description.

Can I use Pict Test Designer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add omkamal/pypict-claude-skill --skill pict-test-designer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pict-test-designer, .gemini/skills/pict-test-designer, .github/skills/pict-test-designer and .opencode/skills/pict-test-designer in your project.

What does Pict Test Designer need to run?

Going by SKILL.md and its folder, Pict Test Designer needs the command-line tools its instructions call (python and pip). Our summary lists: Python 3.

Does Pict Test Designer access the network?

SKILL.md names 3 domains. As links in the text: pairwise.yuuniworks.com, github.com and pairwise.teremokgames.com. This is read from the text; nothing was executed.

Is Pict Test Designer safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Pict Test Designer use?

Pict Test Designer is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pict Test Designer use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Pict Test Designer?

Skills that share tags, products or a category with Pict Test Designer: Fhirpath Test Designer (aehrc/pathling, 137 stars), Matlab Write Tests (matlab/matlab-agentic-toolkit, 1.1k stars), Write and Verify Playwright Tests (appsmithorg/appsmith, 41k stars) and Adk Verify Snippets (google/adk-python, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pict Test Designer?

omkamal (a GitHub user) maintains it in omkamal/pypict-claude-skill, which has 100 GitHub stars. The repository was last updated on March 22, 2026.

Source: omkamal/pypict-claude-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.