agentsclimarketplace

Mocha skill

Skill Pyfagorass/bookofspells/skills/lambdatest/mocha-skill

Generates Mocha tests in JavaScript with Chai assertions and Sinon mocking. Use when user mentions "Mocha", "Chai", "sinon", "describe/it (not Jest)". Triggers on: "Mocha", "Chai", "sinon", "mocha test".From its SKILL.md

Install
npx -y skills add Pyfagorass/bookofspells --skill mocha-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.0 KB, 723 tokens by cl100k_base, as published. Nobody here has run it

Mocha Testing Skill

Core Patterns

Basic Test with Chai

const { expect } = require('chai');

describe('Calculator', () => {
  let calc;
  beforeEach(() => { calc = new Calculator(); });

  it('should add two numbers', () => {
    expect(calc.add(2, 3)).to.equal(5);
  });

  it('should throw on divide by zero', () => {
    expect(() => calc.divide(10, 0)).to.throw('Division by zero');
  });
});

Chai Assertions

expect(value).to.equal(5);
expect(arr).to.have.lengthOf(3);
expect(obj).to.have.property('name');
expect(str).to.include('hello');
expect(fn).to.throw(Error);
expect(arr).to.deep.equal([1, 2, 3]);
expect(obj).to.deep.include({ name: 'Alice' });

Sinon Mocking

const sinon = require('sinon');

describe('UserService', () => {
  let sandbox;
  beforeEach(() => { sandbox = sinon.createSandbox(); });
  afterEach(() => { sandbox.restore(); });

  it('fetches user from API', async () => {
    const stub = sandbox.stub(api, 'get').resolves({ name: 'Alice' });
    const user = await userService.getUser(1);
    expect(user.name).to.equal('Alice');
    expect(stub.calledOnce).to.be.true;
  });
});

Async Testing

it('should fetch data', async () => {
  const data = await fetchData();
  expect(data).to.have.property('id');
});

it('callback style', (done) => {
  fetchData((err, data) => {
    expect(err).to.be.null;
    done();
  });
});

Anti-Patterns

BadGoodWhy
Missing done()Use async/awaitHanging tests
No sandboxsinon.createSandbox()Stubs leak
Arrow in describeRegular function for this.timeout()Context

Quick Reference

TaskCommand
Run allnpx mocha
Watchnpx mocha --watch
Grepnpx mocha --grep "login"
Timeoutnpx mocha --timeout 10000
Recursivenpx mocha --recursive

Setup: npm install mocha chai sinon --save-dev

Deep Patterns → reference/playbook.md

§SectionLines
1Production Configurationmocharc, NYC coverage, TypeScript
2Testing with Chai + SinonStubs, spies, assertions
3Advanced Sinon PatternsFake timers, nock HTTP, sequential
4Async PatternsPromise, await, callback, events
5Hooks & Test OrganizationLifecycle, nesting, grep tags
6Custom Reporters & PluginsReporter class, root hooks
7Express/API TestingSupertest integration
8CI/CD IntegrationGitHub Actions, services
9Debugging Quick-Reference10 common problems
10Best Practices Checklist13 items

What ships with it: 2 files

16.6 KB alongside SKILL.md

reference/

Keep looking

Skills are one crate of 326,834. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.