cellm/skills/convergir/SKILL.md
Execute a real convergence loop — test the complete end-to-end pipeline with real data, identify failures, fix them, and repeat until total convergence. Concludes with full typecheck + root tests + Oracle tests. Use when: 'convergir', 'convergence loop', 'testar pipeline completo', 'e2e convergence', 'rodar tudo ate passar', 'loop de qualidade', 'validar tudo'. Also use proactively after large refactors, multi-file changes, or spec implementations that touch Oracle server code.
npx skillsauth add murillodutt/cellm cellm/skills/convergirInstall 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.
Real convergence loop — not a single test run, but an iterative cycle that finds failures, fixes them, and proves the system works end-to-end.
A single bun test pass proves nothing about system health after significant changes. Real convergence means every layer — validation, types, unit tests, Oracle tests, AND live E2E with real data — passes simultaneously with zero workarounds. This skill enforces that discipline.
Execute these phases in order. Each phase must reach zero errors before advancing. If a phase fails, diagnose and fix before retrying — never skip ahead.
Check working tree status:
git status --porcelain
Working tree must be clean or have only expected staged changes. Merge conflicts, detached HEAD, or untracked sensitive files (.env, credentials) are blockers — resolve before proceeding.
Then check Oracle health:
curl -sf http://localhost:31415/api/health | head -1
| Oracle Status | Action |
|---------------|--------|
| Online (200) | Continue |
| Offline | Start with cd oracle && CELLM_DEV_MODE=true bun run dev &, wait 10s, re-check |
| Won't start | Report to user — infrastructure blocker |
Dev server awareness: The Oracle dev server dies during pre-commit hooks when package.json changes (Nitro hot-reload restarts the process). If convergence runs after a version bump, expect to restart the server between phases. This is normal, not a bug.
bun run validate
This runs scripts/validate.sh — checks directory structure, schemas, frontmatter, unique IDs, boundary enforcement, and cross-references. Fix every reported error before proceeding.
cd oracle && bun run validate:schema
Confirms DB schema definitions match runtime expectations. Schema drift here means silent data corruption downstream.
bun run lint:md
Validates markdown formatting across cellm-core/, docs/, oracle/, cellm-plugin/. This aligns with the pre-commit pipeline — skipping it here means the commit will fail later anyway.
Run the Nuxt typecheck from the Oracle directory:
cd oracle && npx nuxt typecheck
Zero type errors required. Do not suppress with @ts-ignore or any casts — fix the actual types. If a type error reveals a real bug, that is convergence working.
bun test
Runs validation + integration test suites at root level. These verify cellm-core structure, schemas, and cross-references.
cd oracle && bun run test
Runs the full Oracle vitest suite (unit + nuxt projects). This is the heaviest gate — covers server routes, MCP tools, services, composables, and packages.
Flaky test policy: Integration tests in tests/integration/pattern-stress.test.ts (L1: Sync & Ingest) require a live Oracle server with stable timing. Timeouts (5s) on these tests are a known flaky — they do NOT block convergence if:
Error: Test timed out or ECONNREFUSEDIf a non-timeout failure appears in these tests, it IS a real regression — investigate.
Static tests miss integration gaps between components. This phase tests the live system with real data.
Only run when Oracle is online. Skip with [~] E2E skipped — Oracle offline if it is not.
Pick ONE of these smoke tests based on what changed:
| Changed Area | Smoke Test |
|-------------|-----------|
| changelog/* | curl -X POST localhost:31415/api/changelog/submit -H 'Content-Type: application/json' -d '{"project":"test-convergence","version":"v0.0.1","entries":[{"commitHash":"conv1234","category":"fixed","title":"convergence smoke test"}]}' — expect {"ingested":1} |
| spec-service/* | curl -X POST localhost:31415/api/spec/nodes -H 'Content-Type: application/json' -d '{"project":"test-convergence","nodeType":"check","title":"convergence smoke","body":{"context":"test","problem":"test","principle":"test"}}' — expect 200 with node ID |
| MCP tools | Verify tool count: curl -s localhost:31415/api/health — check healthy=true |
| General / unknown | Run the health check only |
After E2E: Clean up test data if created (delete test-convergence project entries).
After all phases pass with zero errors:
| Phase | Result | Details | |-------|--------|---------| | Pre-Flight | [+] / [-] | git clean, Oracle status | | Structural Validation | [+] / [-] | N checks, N errors | | Oracle Schema | [+] / [-] | - | | Markdown Lint | [+] / [-] | N errors | | TypeCheck | [+] / [-] | N errors | | Root Tests | [+] / [-] | N passed, N failed | | Oracle Tests | [+] / [-] | N passed, N failed (N flaky skipped) | | E2E Smoke | [+] / [-] / [~] | endpoint, result |
In these cases, report the situation clearly and ask the user.
The goal is not green checkmarks — it is a system that actually works.
data-ai
Prose override — temporarily disable quantization and respond in readable prose. Use when relational density matters, for safety-critical explanations, onboarding handoffs, or when token economy is not the priority.
development
Govern explicit weekly Super PRs or maintainer-requested PR merges. Evaluates a 10-criterion readiness checklist and performs governed merge only when a user-requested PR is READY. Never creates or keeps permanent PRs. Use when: 'pr-check', 'pr-merge', 'merge this PR safely', 'is PR ready', 'guard merge', or /sk-git delegates pr-merge.
data-ai
Operational surface for the compress-llm Layer-1 token I/O compressor. Enable, disable, switch mode, and inspect status without editing config files. Use when tuning compression pressure for the current session or project.
tools
Generate structured upstream feedback for the CELLM engineering team. Produces evidence-first Markdown at docs/evidence/<date>-cellm-feedback-*.md for bugs, anti-patterns, deprecation gaps, and harness surprises, with optional atom registration via knowledge_ops. Use when: 'feedback for CELLM', 'send to CELLM team', 'register this as atom', 'document this anti-pattern', 'report this bug upstream'. Trigger proactively on MCP schema/runtime mismatches, mechanical edit loops (>=3 sequential edits), short deprecation windows (<6 weeks), or reusable harness surprises. Do NOT trigger for routine feature work or project-local bugs.