A lean, opinionated feature workflow for Rails backend + React frontend projects.
Shell
4
12 commits
updated Sep 21, 2026
A lean, opinionated feature workflow for Rails backend + React frontend projects, packaged as an installable plugin for Claude Code, Cursor, and Codex.
flowchart TD
Z["<b>Brainstorm</b> <i>(optional)</i><br/><br/>Three independent takes on a rough idea"] --> G0{"Carry it forward?"}
G0 -->|Stop here| Z1["Nothing is written"]
G0 -->|Continue| A
A["<b>Setup</b><br/><br/>Set up your feature branches"] --> B["<b>Idea</b><br/><br/>Provide the high-level product requirements"]
B --> C["<b>Plan</b><br/><br/>Create a detailed implementation plan, uses your code conventions"]
C --> G1{"Plan approved?"}
G1 -->|Needs revisions| C
G1 -->|Approved| D["<b>Backend Development (TDD)</b><br/><br/>Includes tests (RSpec, etc.) and code quality (RuboCop, etc.)"]
D --> E["<b>Frontend Development</b><br/><br/>Includes link checks (Prettier, ESLint)"]
E --> R["<b>Code Review</b><br/><br/>Check the code against the approved plan"]
R --> G2{"Issues found?"}
G2 -->|Issues found| D
G2 -->|No issues| F["<b>Documentation</b><br/><br/>Detailed technical documentation, fold new conventions into each repo's rule files"]
F --> G3{"Developer performs the final review, pushes to repository"}
style G0 fill:#10B981,color:#fff
style G1 fill:#10B981,color:#fff
style G2 fill:#10B981,color:#fff
style G3 fill:#10B981,color:#fff
Each step is a skill that activates on demand. While it provides default code direction, Kantan Dev defers to each repo's own conventions (CLAUDE.md / AGENTS.md and their scoped rule files) instead of hardcoding a stack, and deliberately stays small to save tokens.
Compared to other coding agent workflows that perform the coding flow end-to-end, Kantan Dev deliberately keeps you in control of the two decisions that matter:
git add or git commit — every change (code, docs, conventions) stops at your working tree for you to review and push.Agents do the coding legwork, but at the end of the day, you still own the result.
kantan-brainstorm (optional) — only runs when you say "brainstorm". Three agents take your rough idea from a different angle each — simplicity, scalability and security, user-friendliness — without seeing each other's answers. You get all three in full plus the conflicts between them, then either stop or carry the parts you chose into the idea. Writes no file.kantan-start-feature — name the feature, confirm the working branch and the base branch, capture your requirements as an IDEA.kantan-plan-feature — read the idea + prior docs + repo conventions, ask clarifying questions (never assume), write a plan, and wait for your approval.kantan-backend-tdd — implement Rails code with TDD; keep RSpec (or the detected suite) and RuboCop (if present) green; regenerate db/schema.rb from a clean database so its diff contains only this branch's migrations.kantan-frontend — implement React changes following the frontend repo's stack; run its formatter then linter.kantan-review-feature — expert Rails + React review of the changes against the plan, conventions, and best practices; Critical/Major findings block finishing.kantan-finish-feature — write a "how it was built" doc and fold new reusable patterns into each repo's conventions file.All per-feature artifacts live in the backend root (the root with a Gemfile, or any root that already has a .kantan-dev/ directory):
| Artifact | Location |
|---|---|
| Idea | <backend>/.kantan-dev/ideas/YYYYMMDD_feature_name.md |
| Plan | <backend>/.kantan-dev/plans/YYYYMMDD_feature_name.md |
| Review | <backend>/.kantan-dev/reviews/YYYYMMDD_feature_name.md |
| Document | <backend>/.kantan-dev/docs/YYYYMMDD_feature_name.md |
| Reusable patterns | each repo's topic file that fits, else its entry file (see the table below) |
Reusable patterns go where the agent you run in loads them. The entry file loads at the start of every session; topic files hold one topic each and load only for files that match their scope.
| Agent | Entry file | Topic files |
|---|---|---|
| Claude Code | CLAUDE.md (AGENTS.md when the repo has no CLAUDE.md) | .claude/rules/**/*.md, scoped by paths: |
| Cursor | AGENTS.md | .cursor/rules/**/*.mdc, scoped by globs: |
| Codex | AGENTS.md | AGENTS.md in a subdirectory |
Why the backend? The backend repository houses most of the business logic of the project, and can serve as the canonical location for the project-level artifacts/documentation.
It is also highly recommended that you push the artifacts in the repository as well. The agents (and your features) get better as more conventions and patterns are established. You can still opt to exclude them however by adding .kantan-dev in your .gitignore.
/plugin marketplace add marvs/kantan-dev
/plugin install kantan@kantan-dev
Add the plugin from this repository via the plugin manager:
/plugins
Then add github.com/marvs/kantan-dev.
Install locally by cloning into Cursor's local plugins directory:
git clone https://github.com/marvs/kantan-dev ~/.cursor/plugins/local/kantan-dev
Then restart Cursor (or run Developer: Reload Window).
Pull the latest version into the tool you installed it in:
Claude Code: /plugin marketplace update kantan-dev, then /reload-plugins (or restart).
Codex: update Kantan from the /plugins manager.
Cursor: refresh your local clone:
cd ~/.cursor/plugins/local/kantan-dev && git pull
Then run Developer: Reload Window.
.kantan-dev/ artifacts because it houses the business logic.db:migrate on a shared development database leaks other branches' tables into db/schema.rb. Before the suite runs, the backend skill runs a bundled script that rebuilds the test database from the base branch's schema, runs only this branch's migrations there, and dumps the result. The development database is never touched, the test database is rebuilt on the next test run anyway, and a failure restores the previous file. The review and finish steps re-run the same script as a check.MIT — see LICENSE.
Shell
100.0%
A lean, opinionated feature workflow for Rails backend + React frontend projects.
Shell
4
12 commits
updated Sep 21, 2026
A lean, opinionated feature workflow for Rails backend + React frontend projects, packaged as an installable plugin for Claude Code, Cursor, and Codex.
flowchart TD
Z["<b>Brainstorm</b> <i>(optional)</i><br/><br/>Three independent takes on a rough idea"] --> G0{"Carry it forward?"}
G0 -->|Stop here| Z1["Nothing is written"]
G0 -->|Continue| A
A["<b>Setup</b><br/><br/>Set up your feature branches"] --> B["<b>Idea</b><br/><br/>Provide the high-level product requirements"]
B --> C["<b>Plan</b><br/><br/>Create a detailed implementation plan, uses your code conventions"]
C --> G1{"Plan approved?"}
G1 -->|Needs revisions| C
G1 -->|Approved| D["<b>Backend Development (TDD)</b><br/><br/>Includes tests (RSpec, etc.) and code quality (RuboCop, etc.)"]
D --> E["<b>Frontend Development</b><br/><br/>Includes link checks (Prettier, ESLint)"]
E --> R["<b>Code Review</b><br/><br/>Check the code against the approved plan"]
R --> G2{"Issues found?"}
G2 -->|Issues found| D
G2 -->|No issues| F["<b>Documentation</b><br/><br/>Detailed technical documentation, fold new conventions into each repo's rule files"]
F --> G3{"Developer performs the final review, pushes to repository"}
style G0 fill:#10B981,color:#fff
style G1 fill:#10B981,color:#fff
style G2 fill:#10B981,color:#fff
style G3 fill:#10B981,color:#fff
Each step is a skill that activates on demand. While it provides default code direction, Kantan Dev defers to each repo's own conventions (CLAUDE.md / AGENTS.md and their scoped rule files) instead of hardcoding a stack, and deliberately stays small to save tokens.
Compared to other coding agent workflows that perform the coding flow end-to-end, Kantan Dev deliberately keeps you in control of the two decisions that matter:
git add or git commit — every change (code, docs, conventions) stops at your working tree for you to review and push.Agents do the coding legwork, but at the end of the day, you still own the result.
kantan-brainstorm (optional) — only runs when you say "brainstorm". Three agents take your rough idea from a different angle each — simplicity, scalability and security, user-friendliness — without seeing each other's answers. You get all three in full plus the conflicts between them, then either stop or carry the parts you chose into the idea. Writes no file.kantan-start-feature — name the feature, confirm the working branch and the base branch, capture your requirements as an IDEA.kantan-plan-feature — read the idea + prior docs + repo conventions, ask clarifying questions (never assume), write a plan, and wait for your approval.kantan-backend-tdd — implement Rails code with TDD; keep RSpec (or the detected suite) and RuboCop (if present) green; regenerate db/schema.rb from a clean database so its diff contains only this branch's migrations.kantan-frontend — implement React changes following the frontend repo's stack; run its formatter then linter.kantan-review-feature — expert Rails + React review of the changes against the plan, conventions, and best practices; Critical/Major findings block finishing.kantan-finish-feature — write a "how it was built" doc and fold new reusable patterns into each repo's conventions file.All per-feature artifacts live in the backend root (the root with a Gemfile, or any root that already has a .kantan-dev/ directory):
| Artifact | Location |
|---|---|
| Idea | <backend>/.kantan-dev/ideas/YYYYMMDD_feature_name.md |
| Plan | <backend>/.kantan-dev/plans/YYYYMMDD_feature_name.md |
| Review | <backend>/.kantan-dev/reviews/YYYYMMDD_feature_name.md |
| Document | <backend>/.kantan-dev/docs/YYYYMMDD_feature_name.md |
| Reusable patterns | each repo's topic file that fits, else its entry file (see the table below) |
Reusable patterns go where the agent you run in loads them. The entry file loads at the start of every session; topic files hold one topic each and load only for files that match their scope.
| Agent | Entry file | Topic files |
|---|---|---|
| Claude Code | CLAUDE.md (AGENTS.md when the repo has no CLAUDE.md) | .claude/rules/**/*.md, scoped by paths: |
| Cursor | AGENTS.md | .cursor/rules/**/*.mdc, scoped by globs: |
| Codex | AGENTS.md | AGENTS.md in a subdirectory |
Why the backend? The backend repository houses most of the business logic of the project, and can serve as the canonical location for the project-level artifacts/documentation.
It is also highly recommended that you push the artifacts in the repository as well. The agents (and your features) get better as more conventions and patterns are established. You can still opt to exclude them however by adding .kantan-dev in your .gitignore.
/plugin marketplace add marvs/kantan-dev
/plugin install kantan@kantan-dev
Add the plugin from this repository via the plugin manager:
/plugins
Then add github.com/marvs/kantan-dev.
Install locally by cloning into Cursor's local plugins directory:
git clone https://github.com/marvs/kantan-dev ~/.cursor/plugins/local/kantan-dev
Then restart Cursor (or run Developer: Reload Window).
Pull the latest version into the tool you installed it in:
Claude Code: /plugin marketplace update kantan-dev, then /reload-plugins (or restart).
Codex: update Kantan from the /plugins manager.
Cursor: refresh your local clone:
cd ~/.cursor/plugins/local/kantan-dev && git pull
Then run Developer: Reload Window.
.kantan-dev/ artifacts because it houses the business logic.db:migrate on a shared development database leaks other branches' tables into db/schema.rb. Before the suite runs, the backend skill runs a bundled script that rebuilds the test database from the base branch's schema, runs only this branch's migrations there, and dumps the result. The development database is never touched, the test database is rebuilt on the next test run anyway, and a failure restores the previous file. The review and finish steps re-run the same script as a check.MIT — see LICENSE.
Shell
100.0%