From beagle-rust
Reviews Axum web framework code for routing patterns, extractor usage (State, Path, Query, Json), middleware, state management, and error handling. Use for Rust HTTP services with axum 0.7+, tower, or hyper.
npx claudepluginhub existential-birds/beagle --plugin beagle-rustThis skill uses the workspace's default tool permissions.
1. **Check Cargo.toml** — Note axum version (0.6 vs 0.7+ have different patterns), tower, tower-http features
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
State<T>, not global mutable stateIntoResponse implementations, error typesReport findings as:
[FILE:LINE] ISSUE_TITLE
Severity: Critical | Major | Minor | Informational
Description of the issue and why it matters.
| Issue Type | Reference |
|---|---|
| Route definitions, nesting, method routing | references/routing.md |
| State, Path, Query, Json, body extractors | references/extractors.md |
| Tower middleware, layers, error handling | references/middleware.md |
/api/users, /api/orders).get(), .post(), not .route() with manual method matching)Json, Form, Bytes) are the LAST parameterState<T> requires T: Clone — typically Arc<AppState> or direct Clone derivePath<T> parameter types match the route definitionQuery<T> fields are Option for optional query params with #[serde(default)]FromRequestParts (not body) or FromRequest (body)State<T>, not global mutable staticsClone derived or manually implemented on state typeIntoResponse for proper HTTP error codesResult<impl IntoResponse, AppError> pattern used for handlerstower-http used for common concerns (CORS, compression, tracing, timeout)State<T> (race conditions)sqlx::Error returned to client).get(), .post()tower-http::trace for request loggingtower-http layers for common concernsutoipa or aide#[axum::debug_handler] on handlers — Debugging aid that improves compile error messagesExtension<T> for middleware-injected data — Valid pattern for request-scoped valuesimpl IntoResponse from handlers — More flexible than concrete typesRouter::new() per module, merged in main — Standard organization patternServiceBuilder for layer composition — Tower pattern, not over-engineeringaxum::serve with TcpListener — Standard axum 0.7+ server setupLoad and follow beagle-rust:review-verification-protocol before reporting any issue.