test-updates
Updates, generates, and validates tests using git-workspace context and TDD/BDD methodology Skill: test-updates Owner: athola Summary: Updates, generates, and validates tests using git-workspace context and TDD/BDD methodology Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:21:11.130Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:41:12.204Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:57:59.998Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:05:47.824Z | user Release v1.9.14 v1.9.13 | 2026-0
Rank
62
Safety
84
Downloads
1.5k
Updated
Oct 10, 2026
Version
1.9.19
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.5K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.9.19release · observed Aug 26, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-sanctum-test-updates- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-test-updates/snapshot"
Documentation
CLAWHUB
147,592 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: test-updates
description: |
Updates, generates, and validates tests using git-workspace context and TDD/BDD methodology
version: 1.9.8
triggers:
- tdd
- bdd
- testing
- quality-assurance
- test-generation
- pytest
- code changes require new or updated test coverage
metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/sanctum", "emoji": "\ud83e\udd9e", "requires": {"config": ["night-market.test-driven-development", "night-market.git-workspace-review", "night-market.file-analysis"]}}}
source: claude-night-market
source_plugin: sanctum
---
> **Night Market Skill** — ported from [claude-night-market/sanctum](https://github.com/athola/claude-night-market/tree/master/plugins/sanctum). For the full experience with agents, hooks, and commands, install the Claude Code plugin.
## Table of Contents
- [Overview](#overview)
- [Core Philosophy](#core-philosophy)
- [What It Is](#what-it-is)
- [Quick Start](#quick-start)
- [Quick Checklist for First Time Use](#quick-checklist-for-first-time-use)
- [detailed Test Update](#detailed-test-update)
- [Targeted Test Updates](#targeted-test-updates)
- [TDD for New Features](#tdd-for-new-features)
- [Using the Scripts Directly](#using-the-scripts-directly)
- [When to Use It](#when-to-use-it)
- [Workflow Integration](#workflow-integration)
- [Phase 1: Discovery](#phase-1:-discovery)
- [Phase 2: Strategy](#phase-2:-strategy)
- [Phase 3: Implementation](#phase-3:-implementation)
- [Phase 4: Validation](#phase-4:-validation)
- [Quality Assurance](#quality-assurance)
- [Examples](#examples)
- [BDD-Style Test Generation](#bdd-style-test-generation)
- [Test Enhancement](#test-enhancement)
- [Integration with Existing Skills](#integration-with-existing-skills)
- [Success Metrics](#success-metrics)
- [Troubleshooting FAQ](#troubleshooting-faq)
- [Common Issues](#common-issues)
- [Performance Tips](#performance-tips)
- [Getting Help](#getting-help)
# Test Updates and Maintenance
## Overview
detailed test management system that applies TDD/BDD principles to maintain, generate, and enhance tests across codebases. This skill practices what it preaches - it uses TDD principles for its own development and serves as a living example of best practices.
### Core Philosophy
- **RED-GREEN-REFACTOR**: Strict adherence to TDD cycle
- **Behavior-First**: BDD patterns that describe what code should do
- **Invariant-Encoding**: Tests guard design decisions, not just behavior
- **Meta Dogfooding**: The skill's own tests demonstrate the principles it teaches
- **Quality Gates**: detailed validation before considering tests complete
## What It Is
A modular test management system that:
- Discovers what needs testing or updating
- Generates tests following TDD principles
- Enhances existing tests with BDD patterns
- Validate test quality through multiple lenses
## Quick Start
### Quick Checklist for First Time Use
- [ ] validate pytest is installed (`pip install_meta.json
{
"ownerId": "kn7d107jg9jv602h9ytsegydq184a42s",
"slug": "nm-sanctum-test-updates",
"version": "1.9.19",
"publishedAt": 1787750471130
}modules/bdd-patterns.md
# BDD Patterns Module
## Overview
Provides multiple Behavior-Driven Development styles and patterns for creating expressive, behavior-focused tests.
## Available Styles
| Style | Best For |
|-------|----------|
| Gherkin | Complex workflows, acceptance criteria, cross-team |
| BDD-pytest | Unit/API tests, developer focus |
| Docstring BDD | Simple tests, quick docs |
## Choosing the Right Style
### Decision Guide
| Style | Best For | Complexity | Collaboration |
|-------|----------|------------|----------------|
| Gherkin | Complex workflows, documentation | High | Excellent |
| BDD-pytest | Unit/API tests, developer focus | Medium | Good |
| Docstring BDD | Simple tests, quick docs | Low | Limited |
### Mixing Styles
- Use Gherkin for critical user journeys
- Use BDD-pytest for unit and API tests
- Use Docstring BDD for simple utilities
- Maintain consistency within modules
## Best Practices
### Naming Conventions
- **Tests**: `test_[behavior]_[when]_[expected]`
- **Given/When/Then**: Clear separation of concerns
- **Scenarios**: Describe business value, not technical details
### Test Organization
Group related BDD scenarios in test classes with clear setup and teardown.
---
### Gherkin Style
Feature files with Given/When/Then scenarios for complex user
workflows and cross-team collaboration.
#### Feature File Structure
```gherkin
Feature: Git Workflow Management
As a developer
I want to automate git workflows
So that I can maintain clean commit history
Scenario: Commit with staged changes
Given a git repository with staged changes
When I run the commit workflow
Then a commit should be created with proper message
And all tests should pass
Scenario Outline: Multiple file types
Given a git repository with staged <file_type> files
When I run the commit workflow
Then the commit should reference <file_type>
And the commit type should be <commit_type>
Examples:
| file_type | commit_type |
| source | feat |
| test | test |
| docs | docs |
```
#### Step Definitions
```python
@given('a git repository with staged changes')
def step_given_git_repo_with_changes(context):
context.repo = create_test_repo()
context.repo.stage_changes(['file1.py', 'file2.py'])
@when('I run the commit workflow')
def step_when_run_commit_workflow(context):
context.result = run_commit_workflow(context.repo)
@then('a commit should be created with proper message')
def step_then_commit_created(context):
assert context.repo.has_commit()
assert context.repo.last_commit_message().startswith('feat:')
```
#### When to Use
- Complex user workflows
- Acceptance criteria documentation
- Cross-team collaboration
- Living documentation requirements
---
### Pytest Style
BDD-style pytest tests with descriptive names and docstrings
for unit and API testing.
#### Structure Example
```python
class TestGitWorkflow:
"""BDD-style tests for Git workfmodules/content-test-discovery.md
# Content Test Discovery
Detects when modified markdown files are "execution markdown" requiring content assertions, and identifies test gaps.
## Execution Markdown Detection
Files matching ALL of these criteria are execution markdown:
1. File extension is `.md`
2. Path contains `skills/`, `agents/`, `modules/`, or `commands/`
3. File is NOT named `README.md`, `CHANGELOG.md`, or located under `docs/` directories
```python
def is_execution_markdown(file_path: str) -> bool:
"""Markdown that Claude interprets as behavioral instructions."""
path = Path(file_path)
exec_dirs = {"skills", "agents", "modules", "commands"}
skip_names = {"README.md", "CHANGELOG.md"}
return (
path.suffix == ".md"
and any(d in path.parts for d in exec_dirs)
and path.name not in skip_names
and "docs" not in path.parts
)
```
## Priority Reclassification
Override the default test-discovery priority scoring for execution markdown:
| Change Type | Priority | Rationale |
|---|---|---|
| `SKILL.md` modified | **High** | Directly drives Claude's behavior |
| Module `.md` modified | **Medium** | Loaded on-demand, affects specific workflows |
| Agent `.md` modified | **Medium** | Defines agent behavior and constraints |
| Command `.md` modified | **Low-Medium** | Affects slash command documentation |
| README, CHANGELOG | Low | Not interpreted by Claude as instructions |
## Test Gap Detection
When execution markdown is modified, check for a corresponding content test class.
### Naming Convention
| Source File | Expected Test Location |
|---|---|
| `plugins/<plugin>/skills/<name>/SKILL.md` | `plugins/<plugin>/tests/unit/skills/test_<name_underscored>.py` |
| `plugins/<plugin>/skills/<name>/modules/<mod>.md` | `plugins/<plugin>/tests/unit/skills/test_<name_underscored>.py` |
| `plugins/<plugin>/agents/<name>.md` | `plugins/<plugin>/tests/unit/test_<name_underscored>.py` |
### Detection Heuristic
Look for existing content test classes by checking:
1. Test file exists at the expected path
2. File contains a class ending in `Content` (e.g., `TestClearContextSkillContent`)
3. File contains fixtures that read `.md` files (e.g., `skill_content`, `module_content`)
If no content test class exists, flag as a content test gap.
## When to Generate vs. Skip
Not every markdown change needs new content tests.
### Generate Content Tests When
- A new skill or module is created (no existing tests)
- Code examples (JSON, YAML, Python) are added or modified (L2 needed)
- Version references are added or changed (L3 cross-reference needed)
- Decision frameworks or behavioral guidance is modified (L3 contract needed)
- Forbidden behavior patterns are specified (L3 anti-pattern detection needed)
### Skip Content Tests When
- Typo or grammar fix only (no behavioral change)
- Whitespace or formatting changes
- Changes to prose that don't affect decision logic
- Changes already covered by `scribe:slop-detector` (style, not behavior)
#modules/quality-validation.md
# Quality Validation Module
## Overview
detailed test quality assurance through static analysis, dynamic validation, metrics tracking, and structured peer review.
## Validation Categories
### 1. Static Analysis
Validate test code without execution (details below).
### 2. Dynamic Validation
Execute tests to verify they actually work (details below).
### 3. Metrics Validation
Track quantitative quality measures (details below).
### 4. Peer Review Checklist
Structured validation for human review.
#### Quality Gates Checklist
```python
QUALITY_GATES = {
"structure": [
"Test follows BDD pattern with Given/When/Then",
"Test has descriptive name explaining behavior",
"Test is independent and isolated",
"Test uses appropriate fixtures or setup",
],
"assertions": [
"Assertions are specific and meaningful",
"Error messages are descriptive",
"Both positive and negative cases tested",
"Edge cases are covered",
],
"maintenance": [
"Test is readable and understandable",
"Test data is clearly defined",
"External dependencies are mocked",
"Test documentation is adequate",
],
"performance": [
"Test runs quickly (< 1 second)",
"No unnecessary I/O operations",
"Memory usage is reasonable",
"Tests are parallelizable",
],
}
```
## Validation Workflow
```python
def run_validation_pipeline(test_path, source_path=None):
"""Run complete validation pipeline."""
report = ValidationReport()
# Phase 1: Static Analysis
static_issues = validate_static_quality(test_path)
report.add_section("Static Analysis", static_issues)
# Phase 2: Dynamic Validation
execution_results = validate_test_execution(test_path)
report.add_section("Dynamic Validation", execution_results)
# Phase 3: Mutation Testing (if source provided)
if source_path:
mutation_score = run_mutation_tests(test_path, source_path)
report.add_section("Mutation Testing", {"score": mutation_score})
# Phase 4: Metrics Validation
coverage_violations = validate_coverage_metrics(execution_results["coverage"])
report.add_section("Coverage Metrics", coverage_violations)
# Phase 5: Complexity Analysis
complexity = calculate_test_complexity(test_path)
report.add_section("Complexity Metrics", complexity)
return report
```
## Quality Standards
### Minimum Requirements
- **Coverage**: 85% line, 80% branch, 90% function
- **Mutation Score**: 80% or higher
- **Test Speed**: < 1 second per test
- **Independence**: No test dependencies
- **BDD Compliance**: All tests follow BDD patterns
### Excellence Criteria
- **Coverage**: 95% line, 90% branch, 100% function
- **Mutation Score**: 90% or higher
- **Test Speed**: < 0.5 seconds per test
- **Documentation**: detailed behavior description
- **Maintainability**: Clear, readable, well-structured
### Failure Modes
Tests failing validAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/athola/skills/nm-sanctum-test-updates",
"sourceUrl": "https://clawhub.ai/athola/skills/nm-sanctum-test-updates",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T09:03:52.916Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-test-updates/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-test-updates/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T09:03:52.916Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.5K downloads",
"href": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T09:03:52.916Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.9.19",
"href": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-26T13:21:11.130Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-test-updates/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-test-updates/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.9.19",
"description": "Release v1.9.19",
"href": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-test-updates",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-26T13:21:11.130Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
