plugins/exploration-cycle-plugin/skills/vibe-behavioral-test-capture/SKILL.md
Builds an executable safety net of characterization tests by integrating browser flow recording, API payload snapshotting, DOM state captures, network traces, and mock fixture generation.
npx skillsauth add richfrem/agent-plugins-skills vibe-behavioral-test-captureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a Test Automation Architect and Legacy Code Refactoring Specialist. Your mission is to construct an executable, deterministic Behavioral Safety Net (characterization tests) around a running, vibe-coded prototype.
Rather than specifying how the code should ideally behave, characterization tests lock down how the prototype currently behaves (including any quirks, slow timing limits, or bugs), ensuring that subsequent enterprise reengineering does not introduce regression or logic drift.
To build an industrial-grade safety net, you must leverage the runtime-observer agent and support the following dynamic capture capabilities:
tests/characterization/fixtures/<slice-name>/.temp/fixture-portability-report.json indicates zero scrubbing violations.temp/runtime-telemetry-report.md so that modern replatforms do not degrade speed performance.DISCOVERY_REPORT.md and read prototype code to identify high-risk interactive endpoints, state mutations, and user flows.runtime-observer agent to run observation hooks during manual exploration or browser test exercises.temp/runtime-telemetry-report.md and standard JSON mocks are created in /fixtures.tests/characterization/ (or the language-appropriate test directory, e.g., Python tests/characterization/test_*.py).runtime-observer validation pass to inspect every compiled fixture. Confirm that temp/fixture-portability-report.json indicates fixtures_portable: true. If any violations are reported, programmatically scrub the offending files using relative parameter templates.Ensure each test loads fixtures locally and follows the strict outline below:
import request from 'supertest';
import { app } from '../../src/app'; // Path to prototype app entry
import portfolioFixture from './fixtures/portfolio/update-success.json';
describe('Characterization Test: Portfolio Update Flow', () => {
beforeEach(async () => {
// 1. Arrange: Reset state and set up static telemetry mock fixtures
await resetTestDatabase();
await seedStateFromFixture(portfolioFixture.initialState);
});
it('preserves exact legacy behavior for portfolio update payload', async () => {
// 2. Act: Execute using the exact body captured in the telemetry fixtures
const response = await request(app)
.post('/api/v1/portfolio/update')
.send(portfolioFixture.requestBody)
.set('Content-Type', 'application/json');
// 3. Assert: Lock down current outputs verbatim (even if quirky!)
expect(response.status).toBe(portfolioFixture.expectedResponse.status);
expect(response.body).toEqual(portfolioFixture.expectedResponse.body);
// 4. Assert Side Effects: Verify state parity
const dbRecord = await queryPortfolioRecord(portfolioFixture.requestBody.portfolioId);
expect(dbRecord.balance).toBe(portfolioFixture.expectedResponse.dbState.balance);
});
});
npm run test:characterization or pytest tests/characterization/)./Users/ or /home/) inside generated code and static JSON fixtures, replacing them with standard ${FIXTURE_ROOT}, ${BASE_URL}, or ${MOCK_TOKEN} variables.tools
Ingests repository files into the ChromaDB vector store. Builds or updates the vector index from a manifest or directory scan using ingest.py. Use when new files need to be indexed or the vector store is out of date. <example> user: "Index these new plugin files into the vector database" assistant: "I'll use vector-db-ingest to add them to the vector store." </example> <example> user: "The vector store is missing recent files -- update it" assistant: "I'll use vector-db-ingest to re-index the changes." </example>
data-ai
Removes stale and orphaned chunks from the ChromaDB vector store for files that have been deleted or renamed. Use after files are removed or moved to keep the vector index in sync with the filesystem. <example> user: "Clean up the vector store after I deleted some files" assistant: "I'll use vector-db-cleanup to remove orphaned chunks." </example> <example> user: "The vector database has chunks for files that no longer exist" assistant: "I'll run vector-db-cleanup to prune them." </example>
testing
Audit Vector DB coverage -- compares the live filesystem manifest against the ChromaDB index to identify coverage gaps.
development
3-Phase Knowledge Search strategy for the RLM Factory ecosystem. Auto-invoked when tasks involve finding code, documentation, or architecture context in the repository. Enforces the optimal search order: RLM Summary Scan (O(1)) -> Vector DB Semantic Search -> Grep/Exact Match. Never skip phases.