automate-tests
Skill32 starsChanged 18 days agoMITView on GitHub
Automate the tests linked to a story or slice. Read each test's scenarios, find which already have automation, write the missing automation at the right layer, run it, and only when every scenario passes mark the test automated. Use when a developer agent is asked to "automate the tests for PROJ-X", "figure out why these tests aren't automated", or to finish the e2e work for a slice.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- nesnilnehc/ai-cortextheir own version, first seen Oct 25, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- nesnilnehc/ai-cortex★ 8same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- automate-xray-testsSkill
- bug-bashSkill
- build-epicSkill
- close-out-epicSkill
- create-xray-testSkill
- cross-repo-handoffSkill
- live-verified-bddSkill
- pair-runbookSkill
- release-notesSkill
- release-qaSkill
- retroSkill
- review-epicSkill
- roost-configSkill
- run-bugSkill
- run-sliceSkill
- setupSkill
- shape-epicSkill
- slice-handoffSkill
- stacked-prsSkill
- triage-ticketSkill
- verify-slice-testsSkill
- write-runbookSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 37
Start or stop parts of the local stack yourself when a test needs them, as stack.how says (never stack.never).
- Very specific: line 39
Use the test helpers the suite already has (for example e2e.helpers_hint) before writing new ones.
- Distinctive: line 47
Don't edit a scenario to make a test pass.
- Distinctive: line 49
If a scenario should be split because part of it won't be automated, propose the split ("Split a test") and wait for the user's answer.
≈ “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
Automate Tests
A test's scenarios are the spec. Your job is to make every scenario run as an automated test, or to say exactly why one can't.
First, load the team config with roost-config, and read its tests adapter (tests.kind). Each step below names one of the adapter's operations ("Read a test's scenarios", "Mark a test automated", …); the adapter says how to do it with this team's tests.
Leave manual tests alone, if the adapter has them ("Manual tests"). A manual test is run by hand on purpose and closes on a recorded run. Don't write automation for it, don't propose splitting it, and don't count it as missing automation; list it in the report as "manual".
Inputs
- The test keys, or the story whose tests to cover ("A story's tests").
- The branch to work on. Use the one checked out unless told otherwise.
- Any notes on which scenarios the other repo already automates.
1. Read the scenarios
"Read a test's scenarios", with any shared setup they depend on ("Shared setup"). Never print a credential the adapter uses.
2. Map every scenario
For each test, list each scenario by name with:
- Where it's automated, if anywhere ("Find a scenario's automation"; match what the repo's existing tests use).
- Its latest result, from a run you do now ("Run a test"), not CI history. Check whether CI actually skips it (a test against a live outside service, skipped in CI, isn't passing in CI).
3. Write what's missing
When the test is its own automation (an eval case, say): a test drafted on the story but not in the repo is committed first, as drafted, before the change that should make it pass; then make the change until it passes every run.
When scenarios are automated in a repo's suite:
- Put each scenario at the layer that can really prove it. Behaviour the browser can't see (a database row, an email not sent, a token never logged) belongs in the backend's tests; write the UI scenario verbatim with
e2e.backend_markerand a comment naming the backend test. - Follow the repo's conventions: feature and steps files under
e2e.scenarios_dir, the test's key ase2e.tag_stylesays, and the flag tags (stack.flag_tagsand similar) so gated scenarios skip in the wrong flag state. Choose the tags from the local stack's real flag state (stack.flag_state), not from the kickoff text; if they differ, say so in the PR. - Start or stop parts of the local stack yourself when a test needs them, as
stack.howsays (neverstack.never). - Drive through the real app on the services in
stack.services. Stub network calls only where the scenario itself describes a stubbed state (a pending or failing request, a 403 the clock would produce). - Use the test helpers the suite already has (for example
e2e.helpers_hint) before writing new ones.
4. Knowledge goes in the repo, not your memory
These tests run in CI and on teammates' machines. When something blocks a scenario (a missing capability, an unbuilt slice, a bug), mark it skipped in the repo the way its suite does (for example @skip in a feature file), with a comment giving the reason and the ticket. Setup knowledge (how to create a fixture, which flag state a scenario needs) also goes in comments next to the scenario.
5. When the shipped behaviour differs from the scenario
Don't edit a scenario to make a test pass. Only when the behaviour deliberately differs (a decision changed it), update the scenario ("Update a test's scenarios", saving the old text to a local file first and saying where), and tell the user why.
If a scenario should be split because part of it won't be automated, propose the split ("Split a test") and wait for the user's answer.
6. Mark it automated only when everything passes
Mark the test automated ("Mark a test automated") only when every scenario has automation that passed in your run, at any layer. If any scenario is skipped, pending, gated by an unbuilt slice, or a no-op with no backend test, leave the test unmarked. When the tracker requires Components (tracker.components_required), set them on each test that's a ticket as you finish it.
7. Report
Anything the user must do goes first, in its own block headed 🙋 Your turn: one line per action, saying exactly what and where. Leave the block out when there's nothing; never write "nothing needed". Don't hand the user anything you can do yourself (attaching files to the tracker, retitling a PR, checking a setting through a connected tool); only sign-ins, vcs.signing_blocker and decisions are theirs. Then start with the outcome: "4 of 6 tests automated; 2 blocked." Then one table:
| Test | Scenarios automated | Result | Marked automated | If not done, why |
Say plainly what passed and what didn't. List anything you couldn't automate and why.
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.

