By gruckion
Persistent marathon development sessions for Linear issues - continue working on the same task across multiple Claude sessions with automatic state management and progress tracking.
npx claudepluginhub gruckion/marathon-ralphImplement the current feature following the implementation plan.
Completes an issue cycle - updates Linear, state file, and reports progress. Called at the end of verify-plan-code-test-qa loop.
Create Linear project and issues from specification. Used when starting a new marathon.
Create implementation plan for the current Linear issue. Reviews codebase and documents approach.
Create E2E tests for web features. Skips non-web projects.
Verify Linear MCP is connected and authenticated. Run automatically before marathon operations.
Write unit and integration tests for the implemented feature.
Run comprehensive verification (tests, lint, types) before starting new work. MUST pass before coding.
SQLite database implementation using LibSQL client and Drizzle ORM. This skill covers local development, Turso cloud, and Cloudflare D1 deployments.
Autonomous long-running development from specifications. Use when user wants to build an application from a spec file, run continuous development, or automate feature implementation. Triggers on phrases like "marathon this", "build from spec", "autonomous development", "keep coding until done".
Detects project type, package manager, and monorepo structure. Returns correct commands for test/build/lint/dev. Run at project initialization and cache results in state. Use before running any build/test commands.
Configure Playwright for E2E testing. Use when setting up end-to-end tests, when no E2E framework is detected, or when the user asks to configure browser testing.
Configure Vitest for unit and integration testing. Use when setting up a test framework, when no test runner is detected, or when the user asks to configure testing.
Programmatically update marathon-ralph state file using deterministic jq commands. Use this instead of manually editing the JSON file.
Visually verify implemented features work correctly before marking complete. Use when testing UI changes, verifying web features, or checking user flows work in the browser.
Write Playwright E2E tests using fixtures and best practices. Use when creating E2E tests, writing browser automation tests, or testing user flows.
Linear issue tracking integration. Create issues, manage projects, update statuses, search across workspaces, and streamline your software development workflow with Linear's modern issue tracker.
Linear issue tracking integration and workflow management
Linear MCP integration for issue tracking with workflow best practices skill.
Access thousands of AI prompts and skills directly in your AI coding assistant. Search prompts, discover skills, save your own, and improve prompts with AI.
Complete developer toolkit for Claude Code
Meta-prompting and spec-driven development system for Claude Code. Productivity framework for structured AI-assisted development.
External network access
Connects to servers outside your machine
Uses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.

Give it a spec file. Get a tested, working application.
Marathon Ralph is a Claude Code plugin that autonomously builds applications from specification files. It creates a Linear project, breaks your spec into issues, and works through them one by one — writing code, tests, and E2E tests — until everything is done.
Building a full application requires managing dozens of tasks, maintaining quality across sessions, and ensuring every feature is tested. Marathon Ralph automates this entire workflow:
# Add the marketplace
claude plugin marketplace add gruckion/marathon-ralph
# Install the plugin
claude plugin install marathon-ralph
# 1. Start a marathon from your spec file
/marathon-ralph:run examples/todo_app_spec.md
# 2. Check progress anytime
/marathon-ralph:status
# 3. Stop if needed (preserves progress)
/marathon-ralph:cancel
That's it. The marathon runs autonomously until all issues are complete.
<project_specification>
<project_name>Simple Todo App</project_name>
<project_directory>simple-todo-app</project_directory>
<overview>
A minimal todo application with basic CRUD functionality.
</overview>
<technology_stack>
<frontend>Next.js 15, Tailwind CSS, shadcn/ui</frontend>
<backend>oRPC, Drizzle ORM, SQLite</backend>
</technology_stack>
<database_schema>
<todos_table>
- id: text (primary key)
- text: text (required)
- completed: integer (0 or 1)
</todos_table>
</database_schema>
<api_endpoints>
- todo.getAll: Get all todos
- todo.create: Create todo
- todo.delete: Delete todo
- todo.toggle: Toggle completion
</api_endpoints>
<implementation_steps>
<step number="1">Setup and Database</step>
<step number="2">API Routes</step>
<step number="3">UI Implementation</step>
</implementation_steps>
<success_criteria>
- Can add, toggle, delete todos
- Data persists in SQLite
- No TypeScript errors
</success_criteria>
</project_specification>
See examples/ for full spec files. Marathon Ralph reads the spec, creates Linear issues, and implements each one with full test coverage.
Marathon Ralph requires Linear MCP for project management.
# Add the Linear MCP server
claude mcp add --transport http linear https://mcp.linear.app/mcp
/mcp in Claude Code| Command | Description |
|---|---|
/marathon-ralph:run <spec-file> | Start new marathon from spec |
/marathon-ralph:run | Resume existing marathon |
/marathon-ralph:status | Show progress and current issue |
/marathon-ralph:cancel | Stop marathon (preserves Linear project) |
You can also use natural language:
For each issue, Marathon Ralph runs this loop:
VERIFY → PLAN → CODE → TEST → QA → DONE
If verification fails, a bug issue is automatically created and prioritized.
Marathon state is stored in .claude/marathon-ralph.json:
{
"active": true,
"phase": "coding",
"session_id": "8a718ed2-2856-435b-bd9a-63c5b8291b42",
"project": {
"language": "node",
"packageManager": "bun",
"monorepo": { "type": "turbo", "workspaces": ["apps/*"] },
"commands": {
"test": "turbo run test",
"testWorkspace": "bun run --filter={workspace} test"
}
},
"linear": {
"project_name": "My Todo App",
"total_issues": 18
},
"stats": {
"completed": 7,
"in_progress": 1,
"todo": 10
}
}
The project key caches detected project configuration (language, package manager, monorepo type, commands) so agents use the correct commands.
Add .claude/ to your .gitignore.
Marathon Ralph uses a Stop Hook to continue automatically. When Claude would normally exit, the hook checks for remaining issues and continues the loop.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claim