rodo-spec 0.0.0-stage → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +221 -2
  3. package/dist/index.js +14857 -0
  4. package/dist/kit/.agents/skills/rodo/SKILL.md +168 -0
  5. package/dist/kit/.agents/skills/rodo/coder.md +82 -0
  6. package/dist/kit/.agents/skills/rodo/onboarding.md +28 -0
  7. package/dist/kit/.agents/skills/rodo/planner.md +95 -0
  8. package/dist/kit/.agents/skills/rodo/small-change.md +44 -0
  9. package/dist/kit/.agents/skills/rodo/templates/acceptance.feature +18 -0
  10. package/dist/kit/.agents/skills/rodo/templates/card.rodo.md +33 -0
  11. package/dist/kit/.agents/skills/rodo/templates/design.md +15 -0
  12. package/dist/kit/.agents/skills/rodo/templates/en/acceptance.feature +18 -0
  13. package/dist/kit/.agents/skills/rodo/templates/en/card.rodo.md +32 -0
  14. package/dist/kit/.agents/skills/rodo/templates/en/request.rodo.md +14 -0
  15. package/dist/kit/.agents/skills/rodo/templates/en/simple.md +21 -0
  16. package/dist/kit/.agents/skills/rodo/templates/request.rodo.md +14 -0
  17. package/dist/kit/.agents/skills/rodo/templates/simple.md +21 -0
  18. package/dist/kit/.agents/skills/rodo/templates/spec.md +55 -0
  19. package/dist/kit/.agents/skills/rodo/testing.md +45 -0
  20. package/dist/kit/.gitattributes +1 -0
  21. package/dist/kit/KIT_VERSION +1 -0
  22. package/dist/kit/MIGRATION.md +71 -0
  23. package/dist/kit/agents-block.md +6 -0
  24. package/dist/kit/kit-manifest.json +228 -0
  25. package/dist/kit/project-template/CHANGELOG.md +6 -0
  26. package/dist/kit/project-template/MAP.md +22 -0
  27. package/dist/kit/project-template/MEMORY.md +6 -0
  28. package/dist/kit/project-template/RULES.md +278 -0
  29. package/dist/kit/project-template/project/architecture.md +19 -0
  30. package/dist/kit/project-template/project/brief.md +17 -0
  31. package/dist/kit/project-template/project/glossary.md +7 -0
  32. package/dist/kit/project-template/project.json +11 -0
  33. package/dist/kit/project-template-en/CHANGELOG.md +6 -0
  34. package/dist/kit/project-template-en/MAP.md +24 -0
  35. package/dist/kit/project-template-en/MEMORY.md +6 -0
  36. package/dist/kit/project-template-en/RULES.md +69 -0
  37. package/dist/kit/project-template-en/project/architecture.md +19 -0
  38. package/dist/kit/project-template-en/project/brief.md +17 -0
  39. package/dist/kit/project-template-en/project/glossary.md +7 -0
  40. package/dist/kit/project-template-en/project.json +11 -0
  41. package/package.json +48 -4
@@ -0,0 +1,55 @@
1
+ # {{NNN}} — {{title}}: technical spec
2
+
3
+ > Source of truth for the coder. Written in the technical language (`project.json`). Anything not here is not expected.
4
+ > Every rule has a bold ID (**R1**, **R2** ...). If the card has scenarios, tag each scenario with the rules it proves (`@R1`) and try to cover every rule.
5
+
6
+ ## 1. Summary
7
+
8
+ {{three lines}}
9
+
10
+ ## 2. Rules
11
+
12
+ - **R1** {{rule}}
13
+ - **R2** {{rule, including the exact error message the user sees}}
14
+
15
+ ## 3. Data
16
+
17
+ {{new tables/fields, types, constraints}}
18
+
19
+ ## 4. API / logic
20
+
21
+ {{endpoints, inputs, outputs, errors}}
22
+
23
+ ## 5. Screens
24
+
25
+ {{what is shown where; exact message texts}}
26
+
27
+ ## 6. Files to create or change
28
+
29
+ - `{{path}}` — {{what}}
30
+
31
+ ## 7. Edge cases
32
+
33
+ - {{case}}
34
+
35
+ ## 8. Acceptance run (if the card has scenarios)
36
+
37
+ Optional. `rodo test` (the card's `test.command`, or `testCommand` from `project.json` with `{NNN}` = `{{NNN}}`).
38
+
39
+ ## Acceptance criteria
40
+
41
+ - **Must happen:** {{observable results; link rules, e.g. R1, R2}}
42
+ - **Must not happen:** {{regressions or side effects that would be wrong}}
43
+ - **Done when:** {{how we know: which checks pass, what the user can see}}
44
+
45
+ ## Documentation Impact
46
+
47
+ - {{path}} — {{what changes}} <!-- or: - none — why -->
48
+
49
+ ## Open Questions
50
+
51
+ - {{question}} — default if no answer: {{default}} <!-- or: - none -->
52
+
53
+ ## Decisions
54
+
55
+ - {{decision}}. Because {{reason}}.
@@ -0,0 +1,45 @@
1
+ > یادداشت فارسی: تست اختیاری است ولی پیشنهاد می‌شود، به‌خصوص برای قابلیت‌ها. این فایل قواعد نوشتن تست e2e (مرورگری) و چک‌لیست قبل از دیپلوی است.
2
+
3
+ # Testing and deploy playbook
4
+
5
+ Tests are optional in the RODO method, but recommended, especially for features. Nothing blocks work when there are none. Read this when you write or fix end-to-end (browser/API) tests, step definitions or CI test jobs, or prepare a deploy. It adds to your role's playbook.
6
+
7
+ ## Cycle scenarios (playwright-bdd)
8
+
9
+ - Scenarios live in `rodo/<project>/cycles/NNN-slug/acceptance.feature`, tagged `@cycle-NNN`; each scenario (or its `Rule:`) is tagged with the spec rule IDs it proves (`@R1`). Try to give every `**Rn**` rule in spec.md at least one scenario.
10
+ - Step definitions live in the `stepsDirs` folders of `project.json` and must really drive the app and really assert.
11
+ - Run one card's tests with `rodo test`: it runs the card's `test.command` (or `testCommand` from `project.json`, replacing `{NNN}`) and records the failure signature. v2 supports the `web` (Playwright + optional playwright-bdd) and `api` (Jest/HTTP) adapters; other adapters work as plain commands with no special parsing. Tick `تست پذیرش پاس شد` only after a real pass. Note: `bddgen` needs `--tags @cycle-NNN` because it fails for the whole project if any cycle still lacks step definitions.
12
+ - Cancelled cycles: add the tag `@cancelled` and exclude it in the Playwright config (`tags: 'not @cancelled'`).
13
+ - **Never weaken, delete or skip a scenario or test to make code pass.**
14
+
15
+ ## E2E test conventions
16
+
17
+ 1. **Set up through the API, test through the UI.** Create users, workspaces and records with small API helpers; use the browser only for the flow under test. Faster and less flaky.
18
+ 2. **Isolated, unique data.** Every test creates its own data with a unique name built from a run prefix (`E2E_PREFIX`, default a timestamp). Never depend on data from another test or on test order.
19
+ 3. **No fixed sleeps.** No `waitForTimeout`/`sleep`. Wait for the result itself (web-first assertions, `expect(...).toPass()` for retries). Raise a timeout only for a known slow step and say why.
20
+ 4. **Stable selectors.** Prefer `data-testid` and roles. If you add a test id to app code, keep it in the same commit as the test.
21
+ 5. **Cover failure and permission paths**, not only happy paths: validation errors, 401 for anonymous, 403/404 for strangers and lower roles, removed members, expired sessions, two users at once (realtime / conflict) where the feature promises it.
22
+ 6. **Flake check before you call it done:** run the suite twice in parallel (`--repeat-each=2 --workers=4`). A test that fails once is a bug in the test or the app; find which. Never "fix" it with a retry or a sleep alone.
23
+ 7. **`fixme` only with a reason.** Allowed only in the project's own regression suite (never in a cycle's `acceptance.feature`), only when the expected behaviour is a product decision nobody has made. Write the open question in a comment next to it and list it in your report.
24
+ 8. **Typecheck the tests.** Give the e2e folder its own `tsconfig.json` and run it in CI, especially when the app build ignores type errors.
25
+
26
+ ## Running against a real (shared) server
27
+
28
+ - One switch, e.g. `E2E_BASE_URL=https://...`: same suite, no local web servers, `workers=1` (shared rate limits), no retries.
29
+ - **Throwaway data only:** unique prefix, never touch existing data, no deploys or restarts from tests.
30
+ - Record every user/workspace the run creates in a git-ignored file and delete what the API allows in a global teardown. Report what could not be deleted.
31
+ - If the server is known to crash on some route (e.g. an image optimizer on an old CPU), block that route in remote mode instead of crashing a shared server.
32
+
33
+ ## CI
34
+
35
+ - Run the e2e suite in CI with a real database service (e.g. Postgres container), migrations applied, backend + frontend started by the test runner.
36
+ - Upload the HTML report / traces as an artifact when it fails.
37
+ - A good CI runs lint, typecheck (incl. tests), unit tests, API tests and e2e. If CI is red, say so in the card's Progress notes before you call the card done.
38
+
39
+ ## Deploy checklist (things that bit us)
40
+
41
+ - **Old CPUs and native modules.** Prebuilt native packages (sharp/libvips, some crypto, ML runtimes) need newer CPU instructions (SSE4.2/AVX). On older CPUs the process dies with **exit code 132 (SIGILL)**, which looks like a random crash loop. Check the target: `grep -o -w 'sse4_2\|avx2' /proc/cpuinfo | sort -u`. Make such features opt-in, or strip the module from the image. Reproduce locally with `qemu-x86_64 -cpu phenom node ...`.
42
+ - **Reverse proxy.** Behind Nginx/another proxy, configure the app to trust the proxy (`trust proxy`), or every per-IP rate limit becomes one global limit.
43
+ - **Session tokens.** Rotating refresh tokens need a single-flight refresh on the client and a short reuse grace window on the server, or parallel tabs log users out.
44
+ - **Migrations** run once per deploy, before the new code serves traffic; a deploy that adds a column needs the migration in the same release.
45
+ - After deploy: health endpoint, then the e2e suite in remote mode.
@@ -0,0 +1 @@
1
+ * text eol=lf
@@ -0,0 +1 @@
1
+ 2.2.0
@@ -0,0 +1,71 @@
1
+ # RODO kit migration notes
2
+
3
+ Kit 2.1+ is installed and updated by `rodo init` (the 2.0 scripts `rodo-install.cjs` and `rodo-update.cjs` are replaced by it). Do the steps for every version you skipped.
4
+
5
+ ## 2.1.0 → 2.2.0 (English templates, rodo new, safer sync)
6
+
7
+ What changes:
8
+ - **English.** New projects choose the plain-language docs language at `rodo init` (`--lang en|fa`, default from the system locale). English projects get `project-template-en/` and the skill templates in `templates/en/`.
9
+ - **`rodo new "<title>"`** creates the next cycle folder with the card, `simple.md` and `spec.md`.
10
+ - **Card titles** no longer start with the number (the number comes from the folder). Old titles keep working; status and resume no longer print the number twice.
11
+ - **MAP checks** accept relative links and English headings (`## Done`, `## Cancelled`); a done cycle missing from MAP gets `CYCLE_DONE_NOT_IN_MAP`.
12
+ - **Cards and Git.** Without a board, card files are committed (the `.gitignore` card line is added only when a board is bound).
13
+ - **Sync.** Progress notes survive a board edit that drops them; when the board wins a conflict your file is saved in `.rodo/conflicts/`.
14
+
15
+ Steps: run `rodo init` (unchanged kit files update by themselves; files you changed get a `.rodo-new` copy). `RULES.md` is never replaced: compare it with the kit's new one (new "Quick start" section). Commit: `git commit -am "chore: RODO kit 2.2.0"`.
16
+
17
+ ## 2.0.0 → 2.1.0 (several projects per repo, session protocol, adaptive workflow)
18
+
19
+ What changes:
20
+ - **Layout.** `rodo/MAP.md`, `MEMORY.md`, `RULES.md`, `CHANGELOG.md`, `project/`, `cycles/` and `config.json` move into `rodo/<project>/` (`config.json` becomes `project.json`; `.kit-version` becomes `rodo/kit.json`). One repo can now hold several RODO projects, each bound to one board.
21
+ - **Session protocol.** The AI looks at git without pulling, runs `rodo sync` and `rodo resume` at the start, and `rodo sync` at the end.
22
+ - **Statuses.** The reason for `blocked` / `cancelled` now goes in the `statusReason` key of the card. Old `- Blocker:` lines still work, and `rodo sync` adds the key for you. Blocked cards also get a `blockerType`.
23
+ - **Adaptive workflow.** Three levels (QUICK, STANDARD, MAJOR), at most 5 questions before planning, `design.md` for MAJOR only, and a documentation consistency check in VERIFY. New optional card key `workflow` (local only).
24
+ - **New card parts.** `scope`, `test`, and `## Decision:` sections (answered on the web).
25
+
26
+ Steps:
27
+
28
+ 1. Install the CLI, then in the repo run `rodo init --method-only --project <slug>` (add `--dry-run` first to see the plan). It moves the files, updates unchanged kit files, keeps files you changed as `<file>.rodo-new`, and never touches `scripts/rodo-*.cjs`.
29
+ 2. Compare each `.rodo-new` file with yours and merge by hand. `RULES.md` is never replaced automatically: compare it with the kit's new `RULES.md` (new sections: session start/end, stuck, decisions, scope, three work sizes, only important questions, docs always match the code).
30
+ 3. Connect the board: run `rodo init` in your own terminal and type the board name when asked. The AI never creates boards.
31
+ 4. Old `scripts/rodo-install.cjs`, `rodo-update.cjs` and `scripts/lib/core.cjs` are not needed any more. `rodo doctor` lists them as INFO; delete them when you are ready.
32
+ 5. Commit: `git add -A && git commit -m "chore: RODO kit 2.1.0"`.
33
+
34
+
35
+ ## 1.x → 2.0.0 (method only, no enforcement)
36
+
37
+ 2.0.0 removes every check that could block a commit or stop work. RODO is now a method the AI follows. Card-format checks move to the RODO watcher / CLI (`rodo validate`), which only reports warnings and errors.
38
+
39
+ What is gone: `.githooks/` (pre-commit, commit-msg), `.github/workflows/rodo.yml`, `.claude/settings.json` + `.claude/hooks/rodo-guard.cjs`, `scripts/rodo-lint.cjs`, `scripts/rodo-lint`, `scripts/rodo-done.cjs`, `scripts/rodo-approval.cjs`, `acceptance-result.json` files, the approval fingerprint `[approval: hash]`, `x-failures`.
40
+
41
+ Manual steps (in your project folder, in a terminal):
42
+
43
+ 1. **Turn off the old git hooks:**
44
+ ```
45
+ git config --unset core.hooksPath
46
+ ```
47
+ (If it says nothing or "not found", hooks were not on. Fine.)
48
+ 2. **Delete the old enforcement files** (check first that you did not add your own things to them):
49
+ - Windows PowerShell:
50
+ ```
51
+ Remove-Item -Recurse -Force .githooks, .github/workflows/rodo.yml, .claude/hooks/rodo-guard.cjs, scripts/rodo-lint.cjs, scripts/rodo-lint, scripts/rodo-done.cjs, scripts/rodo-approval.cjs -ErrorAction SilentlyContinue
52
+ ```
53
+ - Linux/macOS:
54
+ ```
55
+ rm -rf .githooks .github/workflows/rodo.yml .claude/hooks/rodo-guard.cjs scripts/rodo-lint.cjs scripts/rodo-lint scripts/rodo-done.cjs scripts/rodo-approval.cjs
56
+ ```
57
+ - `.claude/settings.json`: if it only contains the RODO hooks (`rodo-guard.cjs`), delete it; otherwise remove just the two `rodo-guard.cjs` entries.
58
+ - Delete `rodo/cycles/*/acceptance-result.json` (no longer used).
59
+ 3. **Config:** in `rodo/config.json`, rename `acceptanceCommand` to `testCommand` and delete `acceptanceItem`, `ciTestCommand`, `approvalRequiresSync`.
60
+ 4. **Cards:**
61
+ - `[approval: <hash>]` → `[approval]` (or remove the approval line if you do not want approval for that card).
62
+ - Statuses stay five: `todo`, `in_progress`, `blocked`, `cancelled`, `done`. A `blocked` card needs its reason on `- Blocker:` in `## Progress notes`; a `cancelled` card is kept (not deleted) with `- Cancelled: <reason>` in Progress notes and a line under `## لغوشده` in MAP.md. Add these lines to old cards that lack them.
63
+ - The RODO board needs a server that knows `blocked` and `cancelled` (RODO cycle 004); older servers report an error for those two statuses (nothing else is blocked).
64
+ - Delete `x-failures` lines.
65
+ 5. **CHANGELOG:** new lines use `- YYYY-MM-DD | what | why | files` (old 3-part lines can stay).
66
+ 6. Compare your `rodo/RULES.md` with the kit's `rodo/RULES.md` and merge by hand (it is never replaced). The new decision rule for "card or CHANGELOG line" is in section 4.
67
+ 7. Commit: `git add -A && git commit -m "chore: RODO kit 2.0.0 (method only)"`.
68
+
69
+ ## 1.0.0 → 1.1.0
70
+
71
+ Superseded by 2.0.0. If you are still on 1.0.0, go straight to 2.0.0: do the steps above (step 1 also covers `scripts/hooks`: delete that folder too).
@@ -0,0 +1,6 @@
1
+ <!-- rodo:start -->
2
+ This repo uses the RODO method (kit 2.2.0). Before any work: read `.agents/skills/rodo/SKILL.md`,
3
+ run `rodo sync`, then `rodo resume`. At the end of every session run `rodo sync`.
4
+ RODO projects: see `rodo/*/project.json`. Never write secrets into rodo files. Never create boards.
5
+ Never run `git pull`, `git fetch`, `git merge` or `git rebase`. If the repo is behind, tell the user once.
6
+ <!-- rodo:end -->
@@ -0,0 +1,228 @@
1
+ {
2
+ "version": "2.2.0",
3
+ "files": [
4
+ {
5
+ "src": ".agents/skills/rodo/SKILL.md",
6
+ "dest": ".agents/skills/rodo/SKILL.md",
7
+ "owner": "kit"
8
+ },
9
+ {
10
+ "src": ".agents/skills/rodo/coder.md",
11
+ "dest": ".agents/skills/rodo/coder.md",
12
+ "owner": "kit"
13
+ },
14
+ {
15
+ "src": ".agents/skills/rodo/onboarding.md",
16
+ "dest": ".agents/skills/rodo/onboarding.md",
17
+ "owner": "kit"
18
+ },
19
+ {
20
+ "src": ".agents/skills/rodo/planner.md",
21
+ "dest": ".agents/skills/rodo/planner.md",
22
+ "owner": "kit"
23
+ },
24
+ {
25
+ "src": ".agents/skills/rodo/small-change.md",
26
+ "dest": ".agents/skills/rodo/small-change.md",
27
+ "owner": "kit"
28
+ },
29
+ {
30
+ "src": ".agents/skills/rodo/templates/acceptance.feature",
31
+ "dest": ".agents/skills/rodo/templates/acceptance.feature",
32
+ "owner": "kit"
33
+ },
34
+ {
35
+ "src": ".agents/skills/rodo/templates/card.rodo.md",
36
+ "dest": ".agents/skills/rodo/templates/card.rodo.md",
37
+ "owner": "kit"
38
+ },
39
+ {
40
+ "src": ".agents/skills/rodo/templates/design.md",
41
+ "dest": ".agents/skills/rodo/templates/design.md",
42
+ "owner": "kit"
43
+ },
44
+ {
45
+ "src": ".agents/skills/rodo/templates/en/acceptance.feature",
46
+ "dest": ".agents/skills/rodo/templates/en/acceptance.feature",
47
+ "owner": "kit"
48
+ },
49
+ {
50
+ "src": ".agents/skills/rodo/templates/en/card.rodo.md",
51
+ "dest": ".agents/skills/rodo/templates/en/card.rodo.md",
52
+ "owner": "kit"
53
+ },
54
+ {
55
+ "src": ".agents/skills/rodo/templates/en/request.rodo.md",
56
+ "dest": ".agents/skills/rodo/templates/en/request.rodo.md",
57
+ "owner": "kit"
58
+ },
59
+ {
60
+ "src": ".agents/skills/rodo/templates/en/simple.md",
61
+ "dest": ".agents/skills/rodo/templates/en/simple.md",
62
+ "owner": "kit"
63
+ },
64
+ {
65
+ "src": ".agents/skills/rodo/templates/request.rodo.md",
66
+ "dest": ".agents/skills/rodo/templates/request.rodo.md",
67
+ "owner": "kit"
68
+ },
69
+ {
70
+ "src": ".agents/skills/rodo/templates/simple.md",
71
+ "dest": ".agents/skills/rodo/templates/simple.md",
72
+ "owner": "kit"
73
+ },
74
+ {
75
+ "src": ".agents/skills/rodo/templates/spec.md",
76
+ "dest": ".agents/skills/rodo/templates/spec.md",
77
+ "owner": "kit"
78
+ },
79
+ {
80
+ "src": ".agents/skills/rodo/testing.md",
81
+ "dest": ".agents/skills/rodo/testing.md",
82
+ "owner": "kit"
83
+ }
84
+ ],
85
+ "legacyHashes": {
86
+ "AGENTS.md": [
87
+ "sha256:936df4b30128738e224072e1c3aebbe8899793e9582da97966a64c13a01395e4"
88
+ ],
89
+ "CLAUDE.md": [
90
+ "sha256:336cc4fbf19beaada7ccf9986414fa91851a8d7a07dfb3ccbe800a69eed0ab49"
91
+ ],
92
+ ".agents/skills/rodo/SKILL.md": [
93
+ "sha256:a06382e130c46d0d7fc8ebfed4610a829496be1d0830ba79bf3135fa2da7b05b"
94
+ ],
95
+ ".agents/skills/rodo/coder.md": [
96
+ "sha256:6a5b3632e4c3b8065e8611fea5c267719bd9eddc797a7987723f78ef055e49b4"
97
+ ],
98
+ ".agents/skills/rodo/onboarding.md": [
99
+ "sha256:cd7cd64e646ff1762dd3b7fa27a6441f76222a3ad153d092f6120c9d9d11d0de"
100
+ ],
101
+ ".agents/skills/rodo/planner.md": [
102
+ "sha256:36e6082c88920c2bf03f51e2e1a93f92cd2d06406d42a1cda357a65ca85f89e3"
103
+ ],
104
+ ".agents/skills/rodo/small-change.md": [
105
+ "sha256:7bb7ceb277773e1ec4ed351ce0591e39dc5ba0911e0a32cce358ae16e2358c12"
106
+ ],
107
+ ".agents/skills/rodo/templates/CHANGELOG.md": [
108
+ "sha256:74b575d434805ef245587bf704f0cda130d2cd0fb37e2499834853e0f372a059"
109
+ ],
110
+ ".agents/skills/rodo/templates/MAP.md": [
111
+ "sha256:9597d20bc5871cd5699f03e18b16356d06f212de37afe52ddfd3fd3f3e7ed200"
112
+ ],
113
+ ".agents/skills/rodo/templates/MEMORY.md": [
114
+ "sha256:68920278b000efa6b64cc206553720e14cb8af3a4154623e5babef3a745c0e03"
115
+ ],
116
+ ".agents/skills/rodo/templates/acceptance.feature": [
117
+ "sha256:0156ea9eb06f09de596a52a5ad2b1852b351d9cbe7a28230a4f90a2138a4b131"
118
+ ],
119
+ ".agents/skills/rodo/templates/architecture.md": [
120
+ "sha256:ecf9d97143671824620c74c9d3d0e19514b242a4b6c1552440802a198d7e2972"
121
+ ],
122
+ ".agents/skills/rodo/templates/brief.md": [
123
+ "sha256:085f4338ac8cb8c6b9afb1fd22a5a8aed9cf5694f2a2183e47a1fac6a0db9490"
124
+ ],
125
+ ".agents/skills/rodo/templates/card.rodo.md": [
126
+ "sha256:6639b0b83bf25d8355f576b367e8fa10b51b0f5e7f100b5257c78cb4d3d0cc6a"
127
+ ],
128
+ ".agents/skills/rodo/templates/config.json": [
129
+ "sha256:0c07d153aad92e647a8211a54cf696cfad5ac1445593383738da4cf29108f669"
130
+ ],
131
+ ".agents/skills/rodo/templates/glossary.md": [
132
+ "sha256:0a5b2eff02a30ad5753547929789c8f3a6e39158ab65b433198e9845df42dfb6"
133
+ ],
134
+ ".agents/skills/rodo/templates/simple.md": [
135
+ "sha256:b81908a8886698cce148400113a2525f6c44cf34c8e412290ba1652b3b928b6f"
136
+ ],
137
+ ".agents/skills/rodo/templates/spec.md": [
138
+ "sha256:3f9f0bcbdf75f7a1981eb52efdbc2bab90107161af83cd342a2de514b56e1a25"
139
+ ],
140
+ ".agents/skills/rodo/testing.md": [
141
+ "sha256:0cb154fdf25dc5222a63973ad97d7e02a3c3093b800f0072eb1fd58423c32c41"
142
+ ]
143
+ },
144
+ "projectTemplate": [
145
+ {
146
+ "src": "project-template/CHANGELOG.md",
147
+ "dest": "CHANGELOG.md",
148
+ "owner": "project"
149
+ },
150
+ {
151
+ "src": "project-template/MAP.md",
152
+ "dest": "MAP.md",
153
+ "owner": "project"
154
+ },
155
+ {
156
+ "src": "project-template/MEMORY.md",
157
+ "dest": "MEMORY.md",
158
+ "owner": "project"
159
+ },
160
+ {
161
+ "src": "project-template/RULES.md",
162
+ "dest": "RULES.md",
163
+ "owner": "project"
164
+ },
165
+ {
166
+ "src": "project-template/project.json",
167
+ "dest": "project.json",
168
+ "owner": "project"
169
+ },
170
+ {
171
+ "src": "project-template/project/architecture.md",
172
+ "dest": "project/architecture.md",
173
+ "owner": "project"
174
+ },
175
+ {
176
+ "src": "project-template/project/brief.md",
177
+ "dest": "project/brief.md",
178
+ "owner": "project"
179
+ },
180
+ {
181
+ "src": "project-template/project/glossary.md",
182
+ "dest": "project/glossary.md",
183
+ "owner": "project"
184
+ }
185
+ ],
186
+ "projectTemplateEn": [
187
+ {
188
+ "src": "project-template-en/CHANGELOG.md",
189
+ "dest": "CHANGELOG.md",
190
+ "owner": "project"
191
+ },
192
+ {
193
+ "src": "project-template-en/MAP.md",
194
+ "dest": "MAP.md",
195
+ "owner": "project"
196
+ },
197
+ {
198
+ "src": "project-template-en/MEMORY.md",
199
+ "dest": "MEMORY.md",
200
+ "owner": "project"
201
+ },
202
+ {
203
+ "src": "project-template-en/RULES.md",
204
+ "dest": "RULES.md",
205
+ "owner": "project"
206
+ },
207
+ {
208
+ "src": "project-template-en/project.json",
209
+ "dest": "project.json",
210
+ "owner": "project"
211
+ },
212
+ {
213
+ "src": "project-template-en/project/architecture.md",
214
+ "dest": "project/architecture.md",
215
+ "owner": "project"
216
+ },
217
+ {
218
+ "src": "project-template-en/project/brief.md",
219
+ "dest": "project/brief.md",
220
+ "owner": "project"
221
+ },
222
+ {
223
+ "src": "project-template-en/project/glossary.md",
224
+ "dest": "project/glossary.md",
225
+ "owner": "project"
226
+ }
227
+ ]
228
+ }
@@ -0,0 +1,6 @@
1
+ # تغییرهای کوچک
2
+
3
+ > هر تغییر کوچکی که رفتار توضیح‌داده‌شده در کارت‌ها، spec یا سناریوها را عوض نمی‌کند، یک خط (بدون کارت).
4
+ > قالب: `- YYYY-MM-DD | چه چیزی عوض شد | چرا | فایل‌ها`
5
+
6
+ - {{DATE}} | روش RODO به پروژه اضافه شد | تا AI و آدم‌ها از یک نقشه و سندهای به‌روز کار کنند | `rodo/`
@@ -0,0 +1,22 @@
1
+ # نقشهٔ پروژه: {{نام پروژه}}
2
+
3
+ > هر کارت و سندهایش در `rodo/<project>/cycles/NNN-slug/` می‌ماند. این فایل وقتی یک کارت تمام یا لغو می‌شود به‌روز می‌شود (نه وسط کدنویسی)، تا چند نفر هم‌زمان کار کنند و Git تداخل نگیرد. وضعیت کار جاری در کارت‌هاست.
4
+ > کوتاه بماند (حدود ۴۰ خط). اول از همه همین را بخوانید.
5
+
6
+ ## این پروژه چیست
7
+
8
+ {{یک یا دو جمله به زبان ساده}}
9
+
10
+ ## الان کجاییم
11
+
12
+ {{یک یا دو جمله: آخرین چیزی که تمام شد}}
13
+
14
+ ## انجام‌شده
15
+
16
+ ## لغوشده
17
+
18
+ > قالب هر خط: لینک چرخه، بعد « — »، بعد دلیل لغو.
19
+
20
+ ## بعدی
21
+
22
+ - {{ایدهٔ بعدی}}
@@ -0,0 +1,6 @@
1
+ # حافظهٔ تصمیم‌ها
2
+
3
+ > هر تصمیم مهم یک خط: چه تصمیمی، چون چه. وقتی یک کارت تمام یا لغو می‌شود اضافه می‌شود. تصمیم‌ها پاک نمی‌شوند؛ اگر عوض شدند، خط تازه بنویسید و بگویید جای کدام را می‌گیرد.
4
+ > قالب: `- YYYY-MM-DD — تصمیم. چون دلیل. (cycle NNN)`
5
+
6
+ - {{DATE}} — کار پروژه با روش RODO پیش می‌رود. چون AI و آدم‌ها باید از یک نقشه، کارت‌ها و سندهای به‌روز کار کنند.