One Place for the Rules: Refactoring Our Agent and Project Docs
We just finished a refactor that moved all of our “rules” and project documentation into a single, consistent layout. Here’s what we did and why.
The problem
We had guidance for both humans and AI agents scattered in several places:
- Root
AGENTS.mdhad grown into a long, monolithic file (hundreds of lines) mixing navigation, styling, package management, backlog workflow, Cursor rules, and more. .cursor/rules/held duplicate or overlapping content in.mdcfiles (package-management, navigation, infinite-scroll, backlog guidelines, etc.).backlog/docs/held feature docs (article archiving, collection archiving, duplicate prevention) that were really app-level behavior, not “backlog” per se.
So we had three different homes for “the rules,” and no clear rule for where to put new ones. That made it easy to forget to update one place when another changed, and it wasn’t obvious where to add documentation when finishing a task.
What we wanted
We wanted:
- One source of truth — Rules and patterns live in normal markdown under
docs/(and workspacedocs/), not in a separate system like.cursor/rulesorbacklog/docs. - A short index, not a long handbook — Root
AGENTS.mdshould be a table of contents that points to those docs, not the place where everything is inlined. - Clear ownership — Project-wide stuff in root
docs/; app-specific stuff inapp/docs/; AI-specific inai/docs/. New docs get created in the appropriate place, not inbacklog/docs/. - Tool-agnostic wording — Guidelines framed as “rules” or “pattern docs,” not “Cursor rules,” so they’re useful regardless of which editor or agent you use.
What we did
1. Shrank root AGENTS.md to a TOC
We replaced the big AGENTS.md with a short index (~50 lines) that:
- Lists project-wide topics (package management, backlog, rules creation, rule-porting policy, workspace pattern) with links into
docs/. - Points to workspace
AGENTS.mdanddocs/for app, ai, and extension. - Describes “where things live” (tasks, decisions, docs) and a quick reference.
All the detailed content now lives in docs/*.md and app/docs/*.md (and ai/docs/ where relevant). If you need the full rule, you follow the link.
2. Moved Cursor rules into docs
We deleted the old .cursor/rules/*.mdc (and one .md) files and moved their content into:
- Root
docs/— e.g.package-management.md,rules-creation.md,rule-porting-policy.md. app/docs/— e.g.navigation.md,nativewind-styling.md,infinite-scroll.md,article-archiving.md.
We left a short README.md in .cursor/rules/ that points to docs/ and app/docs/ so anyone opening that folder sees where things went. The canonical source is now the markdown in docs/, not the .mdc files.
We also renamed cursor-rules-creation to rules-creation and rewrote it as “how to add or update rules and pattern docs” in general, not Cursor-specific.
3. Retired backlog/docs and put feature docs in app/docs
We had three files in backlog/docs/:
article-archiving.mdcollection-archiving.mdduplicate-prevention.md
Those all describe app/domain behavior (Expo app + backend), so we moved them into app/docs/. We merged the full article-archiving content into the existing app/docs/article-archiving.md and added collection-archiving.md and duplicate-prevention.md there. We deleted the originals and added a backlog/docs/README.md that explains the move and points to docs/ and app/docs/.
We then updated all instructions (including docs/backlog.md and the rule-porting policy) so that:
- New documentation is created in the appropriate place: root
docs/for project-wide topics, or the right workspacedocs/(e.g.app/docs/,ai/docs/) for package-specific ones. - Nobody is told to create or update docs under
backlog/docs/anymore.
So “where do I document this?” has a single, clear answer: the top-level or workspace docs/ that matches the scope of the change.
4. Formalized the workspace pattern
We already had the idea of “root AGENTS.md + docs/” and “per-package AGENTS.md + docs/.” We made that explicit:
- Root AGENTS.md lists which workspaces have their own AGENTS.md and docs/ (app, ai, extension).
- docs/workspace-agent-docs.md describes when to add workspace-level guidelines and how they relate to the root.
- Workspace AGENTS.md files stay short: they point to root for global topics and list only that package’s docs.
So the hierarchy is: one index at the root, one index per workspace that needs it, and the actual content in the corresponding docs/ directories.
5. Updated every reference we could find
We changed:
- docs/backlog.md — Source of truth for “project documentation” is now
docs/and workspacedocs/. Added a “Where to add new documentation” section. Workflow and Definition of Done say “docs/ or the appropriate workspace docs/” instead of “backlog/docs.” - docs/rule-porting-policy.md — New/updated rules go into
docs/or the right workspacedocs/and are linked from the right AGENTS.md; no “port from backlog/docs” or “put in .cursor/rules.” - AGENTS.md — “Where things live” and quick reference no longer mention
backlog/docsor.cursor/rulesas doc homes; they point todocs/and workspacedocs/. - .github/copilot-instructions.md — Same idea: docs live in
docs/and workspacedocs/; workflow and DoD wording updated accordingly. - app/AGENTS.md — Added rows for the new app docs (collection-archiving, duplicate-prevention) and kept article-archiving.
We didn’t rewrite historical task files in backlog/archive/; those still mention the old paths as a record of what was done at the time.
What the layout looks like now
- Root:
AGENTS.md(short TOC) +docs/(backlog, package-management, rules-creation, rule-porting-policy, workspace-agent-docs). - App:
app/AGENTS.md(short TOC) +app/docs/(navigation, nativewind-styling, code-review, infinite-scroll, article-archiving, collection-archiving, duplicate-prevention, conventions). - AI:
ai/AGENTS.md+ai/docs/(e.g. conventions). - Entrypoint:
CLAUDE.mdjust says “See AGENTS.md for agent instructions.”
Tasks and decisions stay in backlog/tasks/, backlog/drafts/, backlog/decisions/. The only “docs” locations we use for rules and patterns are docs/ and workspace docs/.
Why it helps
- Single source of truth — You edit one file (e.g.
app/docs/article-archiving.md) and that’s the rule. No syncing from backlog/docs or .cursor/rules. - Easier to find — If it’s about the app, it’s under
app/docs/. If it’s about the whole project, it’s underdocs/. AGENTS.md tells you which workspace has its own docs. - Clear instructions — Backlog and rule-porting both say: create docs in the appropriate top-level or workspace
docs/, and link from the relevant AGENTS.md. - Tool-agnostic — The content is “rules” and “pattern docs” in markdown; useful for any agent or human, not tied to one editor.
If you’re doing a similar cleanup, the main idea is: pick one place for “the rules” (we chose docs/ and workspace docs/), turn your main agent doc into a short index that links there, and update every instruction that currently sends people somewhere else. Then you can retire the old locations with a README that points to the new one.