adversarial-feature-challenge
Skill9 starsChanged 24 days agoMITView on GitHub
Use when a feature is "done" and needs adversarial stress-testing before shipping - "is it really ready", "est-ce vraiment prêt", "find the bugs", "trouve les bugs", "red team", before closing a ticket whose only validation is the golden path passing.
In this repository59 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adversarial-feature-challengeSkill
- api-contract-versioningSkill
- bug-ticket-root-causeSkill
- bug-triage-structuredSkill
- ci-pipeline-orchestrationSkill
- commit-readiness-reviewSkill
- comprehensive-test-strategySkill
- database-schema-evolutionSkill
- ddd-backend-implementationSkill
- design-system-component-lifecycleSkill
- detection-sweepSkill
- domain-glossarySkill
- domain-modeling-designSkill
- frontend-fullstack-implementationSkill
- frontend-spec-call-site-auditSkill
- merge-request-reviewSkill
- performance-profilingSkill
- recording-decisionsSkill
- recurring-bug-root-causeSkill
- refactoring-shared-component-apiSkill
- validating-features-end-to-endSkill
- visual-regression-checkSkill
- writing-robust-testsSkill
- api-contract-versioningSkill
- audit-architectureSkill
- audit-ci-cdSkill
- audit-complianceSkill
- audit-industrialisationSkill
- audit-observabilitySkill
- audit-performance-frontendSkill
- audit-qualitySkill
- audit-reportSkill
- audit-securitySkill
- audit-testingSkill
- bug-ticket-root-causeSkill
- bug-triage-structuredSkill
- ci-pipeline-orchestrationSkill
- commit-readiness-reviewSkill
- comprehensive-test-strategySkill
- daily-workflow-optimizationSkill
- database-schema-evolutionSkill
- ddd-backend-implementationSkill
- design-system-component-lifecycleSkill
- detection-sweepSkill
- domain-glossarySkill
- domain-modeling-designSkill
- frontend-fullstack-implementationSkill
- frontend-spec-call-site-auditSkill
- merge-request-reviewSkill
- performance-profilingSkill
- production-incident-diagnosticSkill
- qa-session-intakeSkill
- recording-decisionsSkill
- recurring-bug-root-causeSkill
- refactoring-shared-component-apiSkill
- validating-features-end-to-endSkill
- visual-regression-checkSkill
- writing-robust-testsSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
This skill: when: the feature is announced "done", golden path green, and you want to know what breaks before closing the ticket / shipping
- Very specific: line 17
validating-features-end-to-end: instead if: you first need to prove the intended behavior works (proof before verdict). - Very specific: line 18
writing-robust-tests: if: the goal is to harden coverage, not to hunt flaws by hand - Very specific: line 23
Proof mandatory: every flaw = a documented reproduction (steps + curl/SQL/screenshot output), no offhand claims
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Adversarial feature challenge
If the current repo has a specific challenge skill, it wins.
This skill vs. others
- This skill when: the feature is announced "done", golden path green, and you want to know what breaks before closing the ticket / shipping
validating-features-end-to-endinstead if: you first need to prove the intended behavior works (proof before verdict). Validate first, challenge afterwardwriting-robust-testsif: the goal is to harden coverage, not to hunt flaws by hand
Principle
- You try to break, not to validate. 0 bugs found = a bad challenge, not a perfect feature - start over with another persona
- Proof mandatory: every flaw = a documented reproduction (steps + curl/SQL/screenshot output), no offhand claims
- The natural reflex covers backend security and edge cases well; the systematically forgotten angles are UX, accessibility and non-technical personas - hence the checklist
Context to gather (before acting)
- The ticket/spec: what is the expected behavior and the business limits (thresholds, quotas, roles) to attack
- How to start the app and call the API (project dev commands) - a challenge without a running app proves nothing
- Multi-tenant / authorization model: 2 accounts from 2 tenants to test cross-tenant leaks
- Real surface: endpoints, forms, async jobs touched by the feature
Protocol
- Pick a persona (table below) and attack the feature from its point of view - don't validate, break
- Walk the layers: go through every block of the checklist, inject
assets/fuzz-payloads.txtinto the inputs - Document each flaw in the challenge report: repro steps + output (curl/SQL/screenshot) + severity. The report is a file in the audited repository -
CHALLENGE-REPORT.mdat the root unless the project has a place for it - started by copyingtemplates/challenge-report.mdout of the skill directory, which is read-only and is not the deliverable - Switch persona and start over - 0 bugs = insufficient challenge, not a perfect feature. Stopping after one persona is not a challenge: the first persona finds what you already suspected, the second finds what you did not. Name each persona explicitly in the report as you go, so the count is visible.
- Verdict + tickets: one ticket per confirmed flaw, rule blocking / improvement / green-light
Traps & rationalizations
| Excuse | Reality |
| "Found nothing, it's solid" | 0 bugs = a bad challenge. Switch persona and angle (UX, a11y, non-tech) |
| "The golden path passes, we're good" | The golden path is exactly what you do NOT challenge. Attack the edges |
| "This case will never happen in prod" | Double-click, reload mid-flow, 2 tabs: it happens on day 1. Reproduce it |
| "It's just a cosmetic bug" | Note the severity in the report, don't decide to discard on the PO's behalf |
| "I describe the flaw, no need to repro" | Without steps + output, it's an opinion. An archivable repro or it doesn't exist |
Tooling
templates/challenge-report.md- full checklist to tick + flaws table + verdict. A model to copy into the audited repository and fill in there; never edited in placeassets/fuzz-payloads.txt- ready-to-inject payloads (SQLi, XSS, Unicode, numeric bounds, dates, tricky emails)
Checklist by layer
UX & interactions: double-click submit (idempotence), back/reload mid-flow, close while saving, buttons disabled during loading, empty state (0 items), saturated state (10k+), zoom 200%/50%, mobile (touch targets)
Inputs: empty/null, edge whitespace, Unicode (emoji, RTL), 10,000+ char string, SQL/XSS injection, path traversal, numbers (0, negative, MAX, NaN), extreme dates, IDs (other tenant, nonexistent, malformed)
Auth & multi-tenant: session expired mid-action, another tenant's token → strict 403/404, shared URL cross-tenant → 404 not 200, role downgrade mid-session, CSRF on destructive actions
Concurrency: 2 users editing the same object, deletion during edit, business invariants under simultaneous requests
Network & state: connection drop during submit (retry? idempotence?), high latency, API 500 → degraded UX, 200 payload but empty/malformed
Data: deletion of a referenced entity (cascade/orphans), modification during a long async process, threshold/quota bounds
Accessibility: 100% keyboard navigation, visible focus, labels on icon buttons, contrast, screen reader
Observability: logs on each key action (no PII), metrics, is the error visible in a dashboard?
Personas to walk through
| Persona | Focus |
| Distracted novice | Clicks everything, reads nothing, mobile |
| Power user | Shortcuts, multiple tabs, automation |
| Malicious | Injection, cross-tenant, rate limit |
| Blind user | Screen reader, no mouse |
| Curious dev | DevTools, localStorage, replayed requests |
Exit condition
- At least 2 personas walked through (one of them non-technical) - no feature is OK without ≥ 1 challenge round
- Each checklist layer walked or explicitly waived (justified out-of-scope)
- Each flaw = archived repro (steps + output) + severity, in the challenge report written into the audited repository
- One ticket opened per confirmed flaw
- Verdict set: blocking / improvement required / green-light
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

