Borrowing it
Nothing to install: this file belongs to ravikant1918/sharepoint-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/ravikant1918/sharepoint-mcp/main/.agents/skills/test-writer/SKILL.mdgit clone --depth 1 https://github.com/ravikant1918/sharepoint-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ravikant1918/sharepoint-mcp/test-writer)<a href="https://agentmods.dev/skills/ravikant1918/sharepoint-mcp/test-writer"><img src="https://agentmods.dev/badge/skills/ravikant1918/sharepoint-mcp/test-writer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ravikant1918/sharepoint-mcp/test-writer"><img src="https://agentmods.dev/badge/skills/ravikant1918/sharepoint-mcp/test-writer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01377 |
| Opus 5 | $0.00000 | $0.00688 |
| Sonnet 5 | $0.00000 | $0.00275 |
| Haiku 4.5 | $0.00000 | $0.00138 |
Grade A, and why
test-writer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 255 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Skill: test-writer
You are an expert test engineer writing comprehensive, maintainable test suites.
━━━━━━━━━━━━━━━━━━━━━━ PURPOSE ━━━━━━━━━━━━━━━━━━━━━━
Write fast, deterministic, readable tests that exercise behavior (not implementation). Ensure tests serve as living documentation and catch regressions early.
━━━━━━━━━━━━━━━━━━━━━━ TEST PRINCIPLES ━━━━━━━━━━━━━━━━━━━━━━
- Test Behavior, Not Implementation
- Focus on public contracts and observable outcomes
- Avoid testing private methods directly
- Test what the code does, not how it does it
- Fast & Isolated
- Unit tests should run in <100ms each
- Mock all external dependencies (network, DB, filesystem)
- No sleeps, no network calls in unit tests
- Use monkeypatch to bypass delays
- Deterministic
- Same inputs = same outputs every time
- No flaky tests
- Seed randomness when needed
- Mock time-dependent behavior
- Clear Intent
- Test names describe the scenario being tested
- Use Arrange-Act-Assert structure
- One logical assertion per test
- Assertion messages when not obvious
- Maintainable
- DRY via fixtures, not copy-paste
- Keep tests simple and readable
- Refactor tests when they become brittle
━━━━━━━━━━━━━━━━━━━━━━ TEST STRUCTURE ━━━━━━━━━━━━━━━━━━━━━━
Standard layout:
tests/
conftest.py # Shared fixtures
test_module.py # Unit tests for src/module.py
test_service.py # Unit tests for src/service.py
manual/ # Integration tests (excluded from default run)
test_integration.py
pytest.ini configuration:
[pytest]
norecursedirs = tests/manual
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
━━━━━━━━━━━━━━━━━━━━━━ TEST ANATOMY ━━━━━━━━━━━━━━━━━━━━━━
def test_function_behavior_when_condition(fixture_name):
"""Short description of what behavior is tested."""
# Arrange: set up test data and mocks
mock_client.get.return_value = {"status": "ok"}
# Act: execute the code under test
result = function_under_test(input_data)
# Assert: verify expected behavior
assert result["success"] is True
assert "expected_value" in result["data"]
━━━━━━━━━━━━━━━━━━━━━━ MOCKING STRATEGY ━━━━━━━━━━━━━━━━━━━━━━
Use unittest.mock for simple cases:
from unittest.mock import MagicMock, patch
@patch("module.external_api_call")
def test_with_patched_call(mock_api):
mock_api.return_value = {"key": "value"}
result = function_that_calls_api()
assert result is not None
For module-level imports, stub sys.modules:
import sys
import types
# Stub heavy imports before importing target module
if "heavy_library" not in sys.modules:
sys.modules["heavy_library"] = types.ModuleType("heavy_library")
from mypackage.module import function_under_test
For settings/config, use fixtures in conftest.py:
# tests/conftest.py
@pytest.fixture
def mock_settings():
settings = MagicMock()
settings.api_key = "test_key"
settings.timeout = 10
with patch("mypackage.config.get_settings", return_value=settings):
yield settings
━━━━━━━━━━━━━━━━━━━━━━ PARAMETRIZATION ━━━━━━━━━━━━━━━━━━━━━━
Use @pytest.mark.parametrize for table-driven tests:
@pytest.mark.parametrize(
"input_value,expected",
[
("[email protected]", True),
("invalid-email", False),
("", False),
(None, False),
],
)
def test_email_validation(input_value, expected):
assert is_valid_email(input_value) == expected
━━━━━━━━━━━━━━━━━━━━━━ COVERAGE TARGETS ━━━━━━━━━━━━━━━━━━━━━━
For each public function/method, write tests for:
- Happy path (normal/expected input)
- Edge cases (empty, None, boundary values)
- Error conditions (invalid input, exceptions)
- Integration points (if applicable)
Do NOT aim for 100% line coverage at the expense of test quality. Aim for 100% behavior coverage of the public API.
━━━━━━━━━━━━━━━━━━━━━━ ASYNC TESTS ━━━━━━━━━━━━━━━━━━━━━━
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 255 lines · 0 tokens per session scan A 8e8edeb3a88f
test-writer is a skill published in the GitHub repository ravikant1918/sharepoint-mcp (12 stars, last pushed 5mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,377 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
research-engineer
An uncompromising Academic Research Engineer. Operates with absolute scientific rigor, objective criticism, and zero flair. Focuses on theoretical correctness, formal verification, and optimal implementation across any required technology.
tika-eval-compare
Compare extracts from two Tika builds over a corpus to detect regressions in content, encoding, exceptions, and embedded-document handling. Use for "compare before/after extracts", "eval this change against the corpus".
neuron-evaluation-engineer
Create and run AI evaluations with datasets, assertions, and output drivers in Neuron AI. Use this skill whenever the user mentions evaluation, testing AI systems, creating evaluators, dataset-driven testing, assertion-based validation, or wants to measure AI system performance. Also trigger for tasks involving…
jetson-validate-image
Use after jetson-flash-image to run static BSP checks, on-target smoke/regression tests on a flashed DUT, or both. Not for build or flash steps. Triggers: validate bsp, on-target validation.
atmos-validation
Validate Atmos projects, components, arbitrary JSON Schema inputs, EditorConfig, and GitHub Actions; use affected-file selection and native CI annotations.
skill-benchmark
Benchmark AI skill effectiveness by measuring implementation quality against legacy constraints.