
creating-debug-tests-and-iterating
✓ Official★ 4,933by microsoft · part of microsoft/fluidframework
When a bug will not reproduce, this drops the existing tests entirely and goes after the real running program instead, adding logging on every attempt until the cause is visible.
WHEN YOUR AGENT SHOULD USE IT
A QUICK BOUNDARYUSE FOR
- Reproduce a stubborn bug with a script that hits the real CLI, API, or UI from outside.
- Debug a web app end to end with Playwright instead of relying on internal mocks.
- Add logging on every iteration until you can see exactly where behavior diverges.
- Clean up debug logs and background jobs once the root cause is found and fixed.
DO NOT USE FOR
- Not for verifying with mocks or test harnesses; it drives the real application end to end.
This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.
From this point on, ignore any existing tests until you have a working example validated through a new test file.
- Write a script that interacts with the application from the outside. The script should not call any internals. It should only interact with the external interfaces.
- Check to see if you require authentication. If you do, ask me for credentials. Do NOT use mock mode or test harnesses. You should be testing the real thing.
- Follow these steps in a loop until the bug is fixed:
- Add many logs to the application. You MUST do this on every loop.
- Run the debug script.
- Analyze the output: read logs, identify errors, do whatever you need to.
- Update the debug script. If you get stuck: did you add logs?
- Identify and fix the issue at hand.
- Clean up all background jobs, and remove extraneous logs.
- Make sure other tests pass.
Debug Testing
To test different kinds of applications, write scripts that test the application interfaces. Your testing should be as close to 'real' as possible.
Example
Identify the application boundary to be tested and the tools you need to test it.
CLI Tool:
./path/to/cli.sh arg1 arg2subprocess.run(["./path/to/cli.sh", "arg1", "arg2"])exec('./path/to/cli.sh', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});API:
Start the server:
cd backend && python server.py&
cd frontend && npm run dev&Call to the server using scripting language of choice.
Do NOT get in a loop where you just keep running other tests. In this mode, you should ignore other tests entirely until it works.
Emulators for testing
Web servers or web apps: use playwright (read the .claude/skills/webapp-testing/SKILL.md) TUI tools: use tmux with screen capture CLI tools: use bash
Install this skill from microsoft/fluidframework on GitHub. It only works when installed from that project, so don't copy the skill's file out on its own.
npx skills add microsoft/fluidframework --skill "creating-debug-tests-and-iterating" --full-depthRun this in your project — your agent picks the skill up automatically.
BEFORE IT WILL WORK
1 FOR YOU- 01Have credentials ready if the target needs auth
Licensed under MIT— you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub →