{"id":49002511,"url":"https://github.com/thryth-x-remag/r-sdlc","last_synced_at":"2026-04-18T19:01:45.656Z","repository":{"id":352255764,"uuid":"1214461765","full_name":"thryth-x-remag/r-sdlc","owner":"thryth-x-remag","description":"Autonomous SDLC loop for any codebase — dev, review, QA, done, 24/7. MIT. Three stack templates. Live dashboard.","archived":false,"fork":false,"pushed_at":"2026-04-18T17:18:41.000Z","size":5410,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T18:18:32.442Z","etag":null,"topics":["agents","ai-coding","autonomous","claude-code","devtools","sdlc"],"latest_commit_sha":null,"homepage":"https://thryth-x-remag.github.io/r-sdlc/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thryth-x-remag.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T15:58:05.000Z","updated_at":"2026-04-18T17:18:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thryth-x-remag/r-sdlc","commit_stats":null,"previous_names":["thryth-x-remag/r-sdlc"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/thryth-x-remag/r-sdlc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thryth-x-remag%2Fr-sdlc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thryth-x-remag%2Fr-sdlc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thryth-x-remag%2Fr-sdlc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thryth-x-remag%2Fr-sdlc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thryth-x-remag","download_url":"https://codeload.github.com/thryth-x-remag/r-sdlc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thryth-x-remag%2Fr-sdlc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31980783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai-coding","autonomous","claude-code","devtools","sdlc"],"created_at":"2026-04-18T19:01:43.611Z","updated_at":"2026-04-18T19:01:45.631Z","avatar_url":"https://github.com/thryth-x-remag.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# r-sdlc\n\n[![CI](https://github.com/thryth-x-remag/r-sdlc/actions/workflows/ci.yml/badge.svg)](https://github.com/thryth-x-remag/r-sdlc/actions/workflows/ci.yml)\n[![release](https://img.shields.io/github/v/release/thryth-x-remag/r-sdlc?color=a855f7)](https://github.com/thryth-x-remag/r-sdlc/releases)\n[![docker](https://img.shields.io/badge/ghcr.io-r--sdlc-2496ed)](https://github.com/thryth-x-remag/r-sdlc/pkgs/container/r-sdlc)\n[![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![site](https://img.shields.io/badge/site-thryth--x--remag.github.io-a855f7)](https://thryth-x-remag.github.io/r-sdlc/)\n\n**Autonomous SDLC loop for any codebase.** Dev → Review → QA → Done, 24/7, driven by [Claude Code](https://claude.com/claude-code) agents and a live dashboard.\n\nExtracted from [Remag](https://github.com/thryth-x-remag/remag) — the project that shipped ~100 tasks autonomously.\n\n\u003e **Proof run:** on `examples/minimal-todo`, the loop shipped 5 real tasks (2 seeded + 3 auto-innovated) with 34/34 tests passing in ~15 minutes, zero human code intervention.\n\n---\n\n## Contents\n\n- [Quickstart (Docker)](#quickstart-docker)\n- [Getting started by stack](#getting-started-by-stack)\n- [How it works](#how-it-works)\n- [Why r-sdlc](#why-r-sdlc)\n- [Architecture](#architecture)\n- [Commands](#commands)\n- [FAQ](#faq)\n- [Roadmap](#roadmap)\n- [License](#license)\n\n---\n\n## Quickstart (Docker)\n\n```bash\ndocker run --rm -p 7777:7777 -v $(pwd):/project ghcr.io/thryth-x-remag/r-sdlc:latest\n# → open http://localhost:7777\n```\n\nMulti-project:\n\n```bash\ndocker run -p 7777:7777 \\\n  -v /path/to/a:/projects/a -v /path/to/b:/projects/b \\\n  -e PROJECT_ROOTS=/projects/a,/projects/b \\\n  ghcr.io/thryth-x-remag/r-sdlc:latest\n```\n\nOr clone the repo + try the Node demo locally:\n\n```bash\ngit clone https://github.com/thryth-x-remag/r-sdlc \u0026\u0026 cd r-sdlc\nexport PATH=\"$PWD/bin:$PATH\"\nexport R_SDLC_HOME=$PWD R_SDLC_ROOT=$PWD/examples/minimal-todo\ncd examples/minimal-todo \u0026\u0026 npm install\nr-sdlc dashboard \u0026   # live UI on :7777\nr-sdlc start         # the loop takes over\n```\n\n---\n\n## Getting started by stack\n\n### Any stack (`generic`)\n\n```bash\ncd ~/my-project\nr-sdlc init --stack=generic\n# Edit project/stack.yml: point build/test/lint/e2e at your real commands\n# Edit CLAUDE.md + project/goal.txt + project/feature-map.md\nr-sdlc start\n```\n\nSkills never hardcode `go build` / `npm test` / `pytest` — everything routes through `project/stack.yml`. Works for Node, Python, Rails, Rust, Elixir, Deno, Bun, COBOL — anything you can shell.\n\n### Python\n\n```bash\ncd ~/my-python-project\nr-sdlc init --stack=python\n# Tune project/stack.yml if not using pytest + ruff + mypy + uvicorn\nr-sdlc start\n```\n\nReference example: [`examples/python-todo`](examples/python-todo/) — stdlib-only HTTP TODO with 6 pytest cases and two seeded specs (SQLite persistence, rate limiting).\n\n### Go + Next.js\n\n```bash\ncd ~/my-go-nextjs-project\nr-sdlc init --stack=go-nextjs\n# Read CLAUDE.md — confirm layout assumptions match your repo\n# (backend/ + web/, scripts/run.sh, backend/docs/API.md)\nr-sdlc start\n```\n\nSkills carry over Remag's battle-tested rules: cross-service Kafka discipline, gRPC port map, API.md auto-update contract, Playwright two-browser testing, ScyllaDB partition hygiene.\n\n---\n\n## How it works\n\nFive autonomous lanes, one shared board:\n\n```\n           ┌──────────┐\n inbox ───►│ innovate │─── writes specs to project/tasks/\n           └──────────┘\n                │\n                ▼\n           ┌──────────┐     ┌──────────┐     ┌──────────┐\n  todo ───►│   dev    │───►│  review  │────►│    qa    │───► done (archived)\n           └──────────┘     └──────────┘     └──────────┘\n                                  │               │\n                                  │   on FAIL     │\n                                  ▼               ▼\n                             reopened (bumps `reopens` counter)\n```\n\n- **Row-per-file board** — each task is a file under `project/board/`. Lanes own exclusive rows. No locks, no races, safe parallel commits.\n- **Learnings-aware** — `project/learnings.md` is prepended to every spawn. QA + review must add a bullet on P0/P1 or `reopens \u003e= 2`, or justify \"no pattern\" in the commit body.\n- **Live dashboard** — Go binary serves SSE + REST on `:7777`. React UI (React 19 + Tailwind v4) renders Live / Board / Inbox pages with click-through task detail.\n- **Stack-agnostic** — `project/stack.yml` defines `build`, `test`, `lint`, `e2e`, `up`, `down`, `health_url`. Swap the values, skills adapt.\n\n---\n\n## Why r-sdlc\n\nMost \"AI coding\" tools stop at \"generate a PR\". r-sdlc runs the whole software development lifecycle:\n\n| Capability | Typical AI tool | r-sdlc |\n|---|---|---|\n| Write a PR from a prompt | ✅ | ✅ |\n| Run tests after writing | ⚠️ sometimes | ✅ required |\n| Review against explicit acceptance criteria | ❌ | ✅ separate agent |\n| QA against real services (no mocks) | ❌ | ✅ real DB / HTTP / E2E |\n| File bugs on itself, reopen, re-iterate | ❌ | ✅ reopens counter + escalation |\n| Accumulate learnings across tasks | ❌ | ✅ `learnings.md` auto-prepended |\n| Stack-agnostic | ❌ | ✅ any stack via `stack.yml` |\n| Live observability | ❌ | ✅ SSE dashboard + multi-project |\n| Parallel agents with atomic commits | ❌ | ✅ row-per-file board, git flock |\n\n---\n\n## Architecture\n\n```\nbin/r-sdlc                 # CLI — init / upgrade / start / stop / dashboard / doctor\ncore/\n  board-lib.sh             # row CRUD (row_create, row_update_status, row_archive)\n  dispatcher.sh            # spawns claude -p with stream-json per lane\n  watchdog.sh              # stale-agent reaper + reopens bumper\n  dashboard/               # Go binary (SSE + REST) + embed for the React dist\n  dashboard-react/         # Vite + React 19 + TS + Tailwind v4\ntemplates/\n  generic/                 # stack-agnostic skill bundle\n  python/                  # pytest + ruff + mypy + uvicorn preset\n  go-nextjs/               # Remag's full battle-tested skill bundle\nexamples/\n  minimal-todo/            # Node stdlib TODO — demo project for `generic`\n  python-todo/             # Python stdlib TODO — demo project for `python`\ndocs/\n  index.html               # GitHub Pages landing\n  ADAPTING.md              # author a new stack template\n```\n\n## Commands\n\n| Command | Does |\n|---|---|\n| `r-sdlc init --stack=\u003cgeneric\\|python\\|go-nextjs\u003e` | Scaffold `.claude/` + `project/` in cwd |\n| `r-sdlc upgrade [--stack=\u003cname\u003e] [--dry-run]` | Refresh skills from newer template. Never clobbers — conflicts land as `*.r-sdlc-new` sidecars |\n| `r-sdlc start` | Resume loop (removes `stop.flag`, dispatches next agent) |\n| `r-sdlc stop` | Halt loop + kill agents |\n| `r-sdlc dashboard [--port=N] [--roots=a,b,c]` | Launch React UI; `--roots` registers multiple projects |\n| `r-sdlc doctor` | Environment + health check |\n| `r-sdlc version` | Print version |\n\n---\n\n## FAQ\n\n**How is this different from Claude Code itself?**\nr-sdlc *uses* Claude Code as the agent runtime. Each lane (`dev`, `qa`, `review`, `innovate`, `start`) is a separate `claude -p` process with project-scoped skills under `.claude/commands/`. r-sdlc adds the SDLC orchestration layer around it: a row-based board, dispatcher, watchdog, reopens counter, learnings accumulator, multi-project dashboard.\n\n**How much does it cost to run?**\nEach task cycle (dev → review → qa → done) typically uses **$1–3 of Claude API tokens** depending on task complexity and the models you pick. The minimal-todo smoke run shipped 5 tasks for ~$15 total. Cost is billed directly to your Anthropic account — r-sdlc adds nothing on top. Per-lane model selection (`opus` / `sonnet`) lets you trade cost for depth.\n\n**What if the agents make bad commits?**\nEvery action is a reviewable git commit with the lane + task IDs in the subject (`dev: T-001 —`, `qa: T-001 T-002 — PASS`). Nothing is hidden. The loop has three layers of defence:\n\n- **Review agent** checks each PR against explicit acceptance criteria and must mark PASS or FAIL.\n- **QA agent** runs the real test suite; no mocks allowed on integration paths.\n- **`reopens` counter** on every task — 3rd reopen auto-escalates back to innovator for re-spec instead of looping forever.\n\nIf something does land wrong, `git revert \u003csha\u003e` works exactly like any human-authored commit.\n\n**Can I use r-sdlc on proprietary / private code?**\nYes. The loop runs entirely on your machine (or your container). Claude Code respects your Anthropic workspace's data-handling policy — r-sdlc adds nothing to that pipeline. No code leaves your environment except via the Claude API call you've already authorized. Repo stays local; only the prompts/completions transit.\n\n**Do I have to use the React dashboard?**\nNo, it's optional observability. The loop works headless — everything is in `project/` as plain files. `r-sdlc start` dispatches agents via `dispatcher.sh` regardless of whether the dashboard is running.\n\n**What breaks if two dev agents race on the same task?**\nThey can't. Rows are files — `row_update_status T-001 in-progress` is an atomic `sed` under `flock`. A second agent trying to claim T-001 gets an already-in-progress error. Parallel dev lanes work because they're dispatched on *different* task IDs by `/start`.\n\n**Can I edit a skill for my project without losing it on upgrade?**\nYes. `r-sdlc upgrade` never clobbers — diffs are written to `\u003cfile\u003e.r-sdlc-new` so you review and merge manually. `--dry-run` previews without writing.\n\n---\n\n## Roadmap\n\n- [x] **v0.1** — Engine extracted from Remag, stack-agnostic\n- [x] **v0.2** — Templates (generic + go-nextjs), Node demo, GitHub Pages landing\n- [x] **v0.3** — React dashboard served from the Go binary\n- [x] **v0.4** — Multi-project dashboard, vanilla retired, React is the sole UI\n- [x] **v0.5** — Task detail modal, lane controls, theme toggle, preview-verified\n- [x] **v0.6** — CI workflows, multi-arch Docker image on ghcr.io, Python template\n- [x] **v0.7** — `r-sdlc upgrade` — refresh skills without clobbering customizations\n- [x] **v0.8** — Landing page polish (Docker-first quickstart, stacks grid, versions timeline)\n- [x] **v0.9** — Python example project + CI job (template proof complete per stack)\n- [x] **v1.0** — **Launch-ready: comprehensive README + FAQ + getting-started-by-stack.**\n- [ ] **v2.0+** — Hosted multi-tenant dashboard, SSO, on-prem, SOC 2 *when there's customer pull to justify the compliance spend*.\n\n---\n\n## License\n\nMIT on `core/` + `templates/`. A future hosted multi-tenant dashboard (v2.0+) will carry a separate commercial license; today's build is 100% MIT, end to end.\n\n## Credits\n\nBuilt on [Claude Code](https://claude.com/claude-code) by Anthropic. The framework pattern came from pushing [Remag](https://github.com/thryth-x-remag/remag) hard enough that every rough edge became a concrete rule in `learnings.md`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthryth-x-remag%2Fr-sdlc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthryth-x-remag%2Fr-sdlc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthryth-x-remag%2Fr-sdlc/lists"}