
Claude Skills by CorvinLabs
github.com/CorvinLabsDomain expertise for equity and crypto market research. When producing research briefs: structure arguments as bull/bear thesis, quantify uncertainty with confidence scores, cite sources inline. Never give investment advice. Clearly label all analysis as informational.
Domain knowledge for interpreting tech and AI news articles. When summarising news, prioritise: factual accuracy, novelty relative to established knowledge, regulatory or market impact. Avoid sensationalism.
Specialist knowledge for multi-perspective automated code review. When reviewing code: produce findings as structured JSON with fields `file`, `line`, `severity` (critical|error|warning|info), `category`, and `message`. Never fabricate line numbers. If uncertain, mark severity as `info`.
When analyzing tabular data, always: 1. Validate the shape of the input before computing statistics (check for empty data, all-null columns). 2. Distinguish numeric columns from categorical ones — apply appropriate stats to each type. 3. Report count alongside mean/min/max so the reader can assess sample size. 4. Flag outliers when max > 3× mean for any numeric column. 5. Return a structured dict, not free text, so downstream agents can reliably parse the output.
When scoring a Markdown report for quality: 1. Check structural completeness first: title, section headings, data tables, summary. 2. Score each criterion independently — partial credit is not applicable, each criterion is binary. 3. A score >= 70 is a passing grade; below 70 requires revision. 4. Every feedback item must be actionable: say exactly what is missing, not just that something is wrong. 5. Do not penalize for content you were not given (e.g., if no categorical columns exist, absen...
When formatting a data report into Markdown: 1. Always start with a single `#` title that names the report and its scope. 2. Use `## Section` headings to separate: Column Statistics, Categorical Columns, Summary. 3. Numeric data belongs in a pipe table with right-aligned numeric columns. 4. The Summary section must restate the record count and list which columns are numeric vs. categorical. 5. Never invent numbers — only report what the stats dict contains. 6. Keep the tone neutral and factua...
Domain expertise for quantitative trading signal generation and risk management. When generating signals: always quantify confidence 0.0-1.0. Never give financial advice. Label all signals as informational. Apply Kelly criterion halved for position sizing. Require quorum (majority of workers) before issuing a signal.
Domain expertise for portfolio risk management and position sizing. Key rules: never risk more than 2% per trade, always define stop-loss before entry, size positions using volatility-adjusted Kelly (half-Kelly), reject signals with expected value < 0. Mark all output as informational.
**Purpose:** Ensure Console always shows latest code after frontend changes. **Problem:** Three cache layers sit between code edit and screen. A plain rebuild skips Layer 1, causing stale bundles. **Layers (CLAUDE.md reference):** | Layer | Location | Cleared by | |-------|----------|-----------| | 1. esbuild pre-bundle | `web-next/node_modules/.vite/` | `rm -rf node_modules/.vite/` | | 2. build artifact | `web-next/dist/` | `rm -rf dist/` then `npm run build` | | 3. browser tab | browser cac...
Route tasks to native OS, ACS, or TDE
ADR Gate — evaluates after non-trivial tasks whether an ADR is warranted; writes to Corvin-ADR repo when yes, names the skip reason when no, requires three-level analysis (conceptual/structural/implementation), emits ADR-0264 decision-graph frontmatter (depends_on/related/paths/docs — the three-layer Code/Docs/ADR graph) so scripts/adr_graph.py can traverse it, and generates E2E tests for every new structural invariant so LDD has a loss signal.
Concept Gate — evaluates after non-trivial tasks whether a reusable WORKING METHOD (not a decision, not a bug fix) is worth archiving; writes to Corvin-ADR/concepts/ when yes (or amends an existing entry), names the skip reason when no, requires evidence citations (real commits/tasks), and mints a bootstrap-graded companion SkillForge learned-experience skill so durable methods are auto-injected into future turns, not just archived.
Use when making any non-trivial recommendation, analysis, plan, design decision, code-review note, or architectural trade-off — before presenting to the user or acting. Forces a thesis / antithesis / synthesis pass so first-pass conclusions cannot ship without surviving their strongest counter-case.
Use when finishing any code change that modifies behavior, public API, CLI flags, config shape, defaults, error messages, or anything a reader-of-the-docs would model — before committing, pushing, or declaring "done." Forbids deferring doc updates to a follow-up commit, ticket, or "cleanup later."
Use periodically (weekly, at release candidates, before major version bumps) to scan a codebase for cumulative drift that no per-commit gate catches. Complements docs-as-definition-of-done, which prevents drift from being introduced per commit; this skill surfaces drift that already happened despite per-commit gates.
Use at the start of every inner-loop iteration where the goal is to fix a bug / close a failing test / reach a green E2E. Forbids editing code without first running the E2E to capture a fresh loss signal, and forbids declaring "done" without the E2E passing. Makes the cycle "E2E → loss → 5-why-by-layer → fix → E2E" the only admissible rhythm.
Use immediately before declaring "done" on any code generation that adds a new entry point — function, endpoint, route, CLI command, UI component, plugin, hook, or bridge handler. Forbids closing the task without (1) proving the new code is reachable from a real trigger, outside test files, and (2) a generated or extended E2E test that exercises it through that real entry point, executed with captured evidence. A unit test that imports and calls the code directly does not satisfy this gate.
Use when a deliverable (document, diff, design, report, code module) is complete but "good enough, not great" and you want to improve it with a targeted re-iteration instead of starting over. Forbids re-running the task from scratch when refinement is more efficient. Operates on the y-axis (output) not the θ-axis (code or method).
Use at the start of any non-trivial engineering task (feature, bugfix touching more than one file, refactor with observable behavior change, incident response). Orchestrates the three LDD loops — inner (code), refinement (deliverable), outer (method) — with hard iteration budgets, dispatches the specialist skills at the right moments, and forbids declaring "done" without a synced doc-level mental model.
Use when deciding whether to edit code at all, how large the edit should be, or whether a "working" fix actually generalizes. Applies when iterating on a failing test/run, chasing a flake, committing a sequence of small patches, or tempted to ship on one data point. Frames code changes as gradient steps and forbids overfitting to a single sample or a single test.
Use when the same rubric violation, the same kind of symptom-patch, or the same escalation happens across 3+ distinct tasks — meaning the problem is in the method (skill, prompt, rubric), not in the tasks. Forces a disciplined outer-loop step: name the pattern, propose a skill/rubric change, measure Δloss before and after, roll back on regression.
Use when you have observed a failing test, a flaky run, a surprising log line, or any single-sample signal you are about to treat as a gradient. Forbids code edits based on one observation unless the log itself is unambiguous signal. Applies before invoking root-cause-by-layer or proposing any fix.
Use when encountering a bug, failing test, or unexpected behavior — especially under time pressure where try/except, retry loops, xfail, type-tolerance shims, "I'll clean up later," or compat-for-both-shapes feel like the fastest path. Forbids symptom patches until structural and conceptual origins are named.
Use at the start of any conversation, and whenever the user mentions LDD, loss-driven development, loss, gradient, SGD on code, drift, refinement loop, outer loop, inner loop, method evolution, or says "LDD:" / "apply LDD". Establishes how to dispatch the ten LDD skills and when each fires. Must be the first skill considered in any coding task where LDD is available.
Toggle quality disciplines (ADR Gate, docs-as-definition-of-done, etc.) on or off globally
Multi-persona layer for Claude Code. Per chat (or per CLI call) a different agent role: coder (default), browser, inbox, research, ... Each persona has its own tools, MCP servers, system prompt and workspace. Optional, on top of voice or standalone. Trigger when the user mentions cowork, persona, agent role, multi-agent, bind chat, /cowork-*.
Forge schema-bound, sandboxed tools at runtime. Paired with the cowork `forge` persona for chat-driven use in the voice-skill bridge. Use when you would otherwise write the same Bash snippet ≥3× with different parameters, when you need precise numerical results over a dataset, or when the user wants reproducible/deterministic output written to a file.
**Scope:** Complete workflow for generating publication-ready academic papers **Audience:** Academic writing, arXiv submissions, conference papers **Complexity:** High (multi-phase orchestration) **Time Investment:** Significant initial learning, fast payoff on repeated use ---
**Scope:** End-to-end orchestration for generating complete academic papers **Input:** Concepts (MD files) + ADRs (markdown) + title + authors **Output:** Complete paper.pdf (production-ready) + all intermediate artifacts **Complexity:** High (multi-agent orchestration with quality gates) **Time Investment:** First run ~2-4 hours, subsequent runs ~1-2 hours (template cached) ---
Voice mode for Claude Code — automatically reads assistant replies aloud via TTS, with German/English auto-detection and optional summarization for long responses. Trigger when the user mentions voice, vorlesen, sprachausgabe, TTS, "speak", "say it out loud", or asks about /voice-* commands.
FastAPI best practices and conventions. Use when working with FastAPI APIs, Pydantic models, dependencies, streaming responses including Server-Sent Events (SSE), and serving frontend apps. Keeps FastAPI code clean and up to date with the latest features and patterns.