ariadna 1.3.0 → 2.0.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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/ariadna.gemspec +0 -1
  3. data/data/agents/ariadna-codebase-mapper.md +34 -722
  4. data/data/agents/ariadna-debugger.md +44 -1139
  5. data/data/agents/ariadna-executor.md +75 -396
  6. data/data/agents/ariadna-planner.md +78 -1215
  7. data/data/agents/ariadna-roadmapper.md +55 -582
  8. data/data/agents/ariadna-verifier.md +60 -702
  9. data/data/ariadna/templates/config.json +8 -33
  10. data/data/ariadna/workflows/debug.md +28 -0
  11. data/data/ariadna/workflows/execute-phase.md +31 -513
  12. data/data/ariadna/workflows/map-codebase.md +20 -319
  13. data/data/ariadna/workflows/new-milestone.md +20 -365
  14. data/data/ariadna/workflows/new-project.md +19 -880
  15. data/data/ariadna/workflows/plan-phase.md +24 -443
  16. data/data/ariadna/workflows/progress.md +20 -376
  17. data/data/ariadna/workflows/quick.md +19 -221
  18. data/data/ariadna/workflows/roadmap-ops.md +28 -0
  19. data/data/ariadna/workflows/verify-work.md +23 -560
  20. data/data/commands/ariadna/add-phase.md +11 -22
  21. data/data/commands/ariadna/debug.md +11 -143
  22. data/data/commands/ariadna/execute-phase.md +12 -30
  23. data/data/commands/ariadna/insert-phase.md +7 -14
  24. data/data/commands/ariadna/map-codebase.md +16 -49
  25. data/data/commands/ariadna/new-milestone.md +12 -25
  26. data/data/commands/ariadna/new-project.md +22 -26
  27. data/data/commands/ariadna/plan-phase.md +13 -22
  28. data/data/commands/ariadna/progress.md +16 -6
  29. data/data/commands/ariadna/quick.md +9 -11
  30. data/data/commands/ariadna/remove-phase.md +9 -12
  31. data/data/commands/ariadna/verify-work.md +14 -19
  32. data/data/skills/rails-backend/API.md +138 -0
  33. data/data/skills/rails-backend/CONTROLLERS.md +154 -0
  34. data/data/skills/rails-backend/JOBS.md +132 -0
  35. data/data/skills/rails-backend/MODELS.md +213 -0
  36. data/data/skills/rails-backend/SKILL.md +169 -0
  37. data/data/skills/rails-frontend/ASSETS.md +154 -0
  38. data/data/skills/rails-frontend/COMPONENTS.md +253 -0
  39. data/data/skills/rails-frontend/SKILL.md +187 -0
  40. data/data/skills/rails-frontend/VIEWS.md +168 -0
  41. data/data/skills/rails-performance/PROFILING.md +106 -0
  42. data/data/skills/rails-performance/SKILL.md +217 -0
  43. data/data/skills/rails-security/AUDIT.md +118 -0
  44. data/data/skills/rails-security/SKILL.md +422 -0
  45. data/data/skills/rails-testing/FIXTURES.md +78 -0
  46. data/data/skills/rails-testing/SKILL.md +160 -0
  47. data/data/skills/rails-testing/SYSTEM-TESTS.md +73 -0
  48. data/lib/ariadna/installer.rb +11 -15
  49. data/lib/ariadna/tools/cli.rb +0 -12
  50. data/lib/ariadna/tools/config_manager.rb +10 -72
  51. data/lib/ariadna/tools/frontmatter.rb +23 -1
  52. data/lib/ariadna/tools/init.rb +201 -401
  53. data/lib/ariadna/tools/model_profiles.rb +6 -14
  54. data/lib/ariadna/tools/phase_manager.rb +1 -10
  55. data/lib/ariadna/tools/state_manager.rb +170 -451
  56. data/lib/ariadna/tools/template_filler.rb +4 -12
  57. data/lib/ariadna/tools/verification.rb +21 -399
  58. data/lib/ariadna/uninstaller.rb +9 -0
  59. data/lib/ariadna/version.rb +1 -1
  60. data/lib/ariadna.rb +1 -0
  61. metadata +20 -91
  62. data/data/agents/ariadna-backend-executor.md +0 -261
  63. data/data/agents/ariadna-frontend-executor.md +0 -259
  64. data/data/agents/ariadna-integration-checker.md +0 -418
  65. data/data/agents/ariadna-phase-researcher.md +0 -469
  66. data/data/agents/ariadna-plan-checker.md +0 -622
  67. data/data/agents/ariadna-project-researcher.md +0 -618
  68. data/data/agents/ariadna-research-synthesizer.md +0 -236
  69. data/data/agents/ariadna-test-executor.md +0 -266
  70. data/data/ariadna/references/checkpoints.md +0 -772
  71. data/data/ariadna/references/continuation-format.md +0 -249
  72. data/data/ariadna/references/decimal-phase-calculation.md +0 -65
  73. data/data/ariadna/references/git-integration.md +0 -248
  74. data/data/ariadna/references/git-planning-commit.md +0 -38
  75. data/data/ariadna/references/model-profile-resolution.md +0 -32
  76. data/data/ariadna/references/model-profiles.md +0 -73
  77. data/data/ariadna/references/phase-argument-parsing.md +0 -61
  78. data/data/ariadna/references/planning-config.md +0 -194
  79. data/data/ariadna/references/questioning.md +0 -153
  80. data/data/ariadna/references/rails-conventions.md +0 -416
  81. data/data/ariadna/references/tdd.md +0 -267
  82. data/data/ariadna/references/ui-brand.md +0 -160
  83. data/data/ariadna/references/verification-patterns.md +0 -853
  84. data/data/ariadna/templates/codebase/architecture.md +0 -481
  85. data/data/ariadna/templates/codebase/concerns.md +0 -380
  86. data/data/ariadna/templates/codebase/conventions.md +0 -434
  87. data/data/ariadna/templates/codebase/integrations.md +0 -328
  88. data/data/ariadna/templates/codebase/stack.md +0 -189
  89. data/data/ariadna/templates/codebase/structure.md +0 -418
  90. data/data/ariadna/templates/codebase/testing.md +0 -606
  91. data/data/ariadna/templates/context.md +0 -283
  92. data/data/ariadna/templates/continue-here.md +0 -78
  93. data/data/ariadna/templates/debug-subagent-prompt.md +0 -91
  94. data/data/ariadna/templates/phase-prompt.md +0 -609
  95. data/data/ariadna/templates/planner-subagent-prompt.md +0 -117
  96. data/data/ariadna/templates/research-project/ARCHITECTURE.md +0 -439
  97. data/data/ariadna/templates/research-project/FEATURES.md +0 -168
  98. data/data/ariadna/templates/research-project/PITFALLS.md +0 -406
  99. data/data/ariadna/templates/research-project/STACK.md +0 -251
  100. data/data/ariadna/templates/research-project/SUMMARY.md +0 -247
  101. data/data/ariadna/templates/state.md +0 -176
  102. data/data/ariadna/templates/summary-complex.md +0 -59
  103. data/data/ariadna/templates/summary-minimal.md +0 -41
  104. data/data/ariadna/templates/summary-standard.md +0 -48
  105. data/data/ariadna/templates/user-setup.md +0 -310
  106. data/data/ariadna/workflows/add-phase.md +0 -111
  107. data/data/ariadna/workflows/add-todo.md +0 -157
  108. data/data/ariadna/workflows/audit-milestone.md +0 -241
  109. data/data/ariadna/workflows/check-todos.md +0 -176
  110. data/data/ariadna/workflows/complete-milestone.md +0 -644
  111. data/data/ariadna/workflows/diagnose-issues.md +0 -219
  112. data/data/ariadna/workflows/discovery-phase.md +0 -289
  113. data/data/ariadna/workflows/discuss-phase.md +0 -408
  114. data/data/ariadna/workflows/execute-plan.md +0 -448
  115. data/data/ariadna/workflows/help.md +0 -470
  116. data/data/ariadna/workflows/insert-phase.md +0 -129
  117. data/data/ariadna/workflows/list-phase-assumptions.md +0 -178
  118. data/data/ariadna/workflows/pause-work.md +0 -122
  119. data/data/ariadna/workflows/plan-milestone-gaps.md +0 -256
  120. data/data/ariadna/workflows/remove-phase.md +0 -154
  121. data/data/ariadna/workflows/research-phase.md +0 -74
  122. data/data/ariadna/workflows/resume-project.md +0 -306
  123. data/data/ariadna/workflows/set-profile.md +0 -80
  124. data/data/ariadna/workflows/settings.md +0 -145
  125. data/data/ariadna/workflows/transition.md +0 -493
  126. data/data/ariadna/workflows/update.md +0 -212
  127. data/data/ariadna/workflows/verify-phase.md +0 -226
  128. data/data/commands/ariadna/add-todo.md +0 -42
  129. data/data/commands/ariadna/audit-milestone.md +0 -42
  130. data/data/commands/ariadna/check-todos.md +0 -41
  131. data/data/commands/ariadna/complete-milestone.md +0 -136
  132. data/data/commands/ariadna/discuss-phase.md +0 -86
  133. data/data/commands/ariadna/help.md +0 -22
  134. data/data/commands/ariadna/list-phase-assumptions.md +0 -50
  135. data/data/commands/ariadna/pause-work.md +0 -35
  136. data/data/commands/ariadna/plan-milestone-gaps.md +0 -40
  137. data/data/commands/ariadna/reapply-patches.md +0 -110
  138. data/data/commands/ariadna/research-phase.md +0 -187
  139. data/data/commands/ariadna/resume-work.md +0 -40
  140. data/data/commands/ariadna/set-profile.md +0 -34
  141. data/data/commands/ariadna/settings.md +0 -36
  142. data/data/commands/ariadna/update.md +0 -37
  143. data/data/guides/backend.md +0 -3069
  144. data/data/guides/frontend.md +0 -1479
  145. data/data/guides/performance.md +0 -1193
  146. data/data/guides/security.md +0 -1522
  147. data/data/guides/style-guide.md +0 -1091
  148. data/data/guides/testing.md +0 -504
  149. data/data/templates.md +0 -94
@@ -1,251 +0,0 @@
1
- # Stack Research Template
2
-
3
- Template for `.ariadna_planning/research/STACK.md` — discovered technology stack for the Rails project.
4
-
5
- <template>
6
-
7
- ```markdown
8
- # Stack Research
9
-
10
- **Project:** [project name]
11
- **Researched:** [date]
12
- **Confidence:** [HIGH/MEDIUM/LOW]
13
-
14
- ## Core Platform
15
-
16
- | Component | Discovered Value | Source |
17
- |-----------|-----------------|--------|
18
- | Ruby version | [version from .ruby-version or Gemfile] | [where found] |
19
- | Rails version | [version from Gemfile.lock] | [where found] |
20
- | Database | [SQLite/PostgreSQL/MySQL] | [config/database.yml] |
21
- | Ruby version manager | [rbenv/asdf/chruby/rvm/none] | [where found] |
22
-
23
- ## Application Type
24
-
25
- | Aspect | Discovered Value | Evidence |
26
- |--------|-----------------|----------|
27
- | API-only or full-stack | [rails new --api or full] | [ApplicationController inherits from API or Base] |
28
- | Monolith or engines | [single app / modular engines] | [presence of engines/ or components/] |
29
- | Multi-database | [yes/no] | [database.yml configuration] |
30
- | Multi-tenancy | [none/schema-based/row-based] | [tenant isolation approach if any] |
31
-
32
- ## Frontend & Assets
33
-
34
- | Category | Discovered Value | Evidence |
35
- |----------|-----------------|----------|
36
- | JS approach | [Importmap/esbuild/Vite/Webpacker/Shakapacker/none] | [config files, Gemfile] |
37
- | CSS approach | [Custom CSS/Tailwind/Bootstrap/none] | [app/assets/stylesheets/, Gemfile] |
38
- | Real-time | [Turbo Streams/Action Cable/AnyCable/none] | [Gemfile, channel files] |
39
- | Hotwire/Turbo | [yes/no, version] | [Gemfile, stimulus controllers] |
40
- | Stimulus | [yes/no, version] | [controllers directory, importmap pins] |
41
- | View layer | [ERB/Haml/Slim/ViewComponent/Phlex] | [app/views file extensions, Gemfile] |
42
-
43
- ## Backend Services
44
-
45
- | Category | Discovered Value | Evidence |
46
- |----------|-----------------|----------|
47
- | Background jobs | [Solid Queue/Sidekiq/GoodJob/DelayedJob/none] | [Gemfile, config/application.rb] |
48
- | Caching backend | [Solid Cache/Redis/Memcached/file store] | [config/environments/, Gemfile] |
49
- | Action Cable adapter | [Solid Cable/Redis/async/none] | [config/cable.yml] |
50
- | Search | [pg_search/Elasticsearch/Meilisearch/none] | [Gemfile, model concerns] |
51
- | File storage | [Active Storage/Shrine/CarrierWave/none] | [Gemfile, storage.yml] |
52
- | File storage service | [local/S3/GCS/Azure/none] | [config/storage.yml] |
53
- | Email | [Action Mailer/Postmark/SendGrid/none] | [Gemfile, mailer configs] |
54
- | PDF generation | [Prawn/wicked_pdf/Grover/none] | [Gemfile] |
55
- | Internationalization | [rails-i18n gem / manual locale files only / none] | [Gemfile, config/locales/] |
56
-
57
- ## Authentication & Authorization
58
-
59
- | Category | Discovered Value | Evidence |
60
- |----------|-----------------|----------|
61
- | Authentication | [Rails authentication generator/Rodauth/Clearance/custom/none] | [Gemfile, user model] |
62
- | Authorization | [Custom (before_action + Current) / Pundit (if explicitly requested) / none] | [Gemfile, policy files] |
63
- | OAuth/social login | [OmniAuth/Doorkeeper/none] | [Gemfile, initializers] |
64
- | API authentication | [API tokens/JWT/OAuth2/none] | [Gemfile, controller concerns] |
65
-
66
- ## Testing
67
-
68
- | Category | Discovered Value | Evidence |
69
- |----------|-----------------|----------|
70
- | Test framework | [Minitest (recommended)/RSpec] | [test/ or spec/ directory, Gemfile] |
71
- | Fixtures or factories | [fixtures/FactoryBot/Fabrication] | [test/fixtures or spec/factories] |
72
- | System tests | [Capybara driver: Selenium/Cuprite/Playwright] | [Gemfile, test_helper or rails_helper] |
73
- | Code coverage | [SimpleCov/none] | [Gemfile, test_helper] |
74
- | Linting | [RuboCop/Standard/none] | [Gemfile, .rubocop.yml] |
75
- | Static analysis | [Brakeman/Bundler Audit/none] | [Gemfile, CI config] |
76
-
77
- ## Infrastructure & Deployment
78
-
79
- | Category | Discovered Value | Evidence |
80
- |----------|-----------------|----------|
81
- | Deployment | [Kamal/Capistrano/Heroku/Render/Fly.io/Docker/other] | [deploy configs, Dockerfile] |
82
- | CI/CD | [GitHub Actions/CircleCI/GitLab CI/none] | [.github/workflows, .circleci] |
83
- | Containerized | [yes/no] | [Dockerfile, docker-compose.yml] |
84
- | Process manager | [Foreman/Overmind/Puma only] | [Procfile, Procfile.dev] |
85
- | Credentials management | [Rails credentials/dotenv/Figaro] | [config/credentials, .env files] |
86
-
87
- ## Gem Inventory
88
-
89
- ### Core Gems (from Gemfile)
90
-
91
- | Gem | Version Constraint | Group | Purpose |
92
- |-----|-------------------|-------|---------|
93
- | [gem name] | [~> X.Y] | [default/development/test/production] | [what it does in this project] |
94
- | [gem name] | [~> X.Y] | [default/development/test/production] | [what it does in this project] |
95
- | [gem name] | [~> X.Y] | [default/development/test/production] | [what it does in this project] |
96
-
97
- ### Development & Debugging Gems
98
-
99
- | Gem | Purpose | Notes |
100
- |-----|---------|-------|
101
- | [gem name] | [what it does] | [configuration if relevant] |
102
- | [gem name] | [what it does] | [configuration if relevant] |
103
-
104
- ## Project Setup
105
-
106
- ```bash
107
- # System dependencies
108
- [discovered system deps: e.g., libvips for image processing — note: SQLite requires no external service; add postgresql only if project uses PostgreSQL]
109
-
110
- # Ruby setup
111
- [ruby version manager install command if applicable]
112
-
113
- # Application setup
114
- bundle install
115
- bin/rails db:prepare
116
-
117
- # Asset pipeline (if applicable)
118
- [bin/rails assets:precompile / yarn build / none]
119
-
120
- # Background jobs (if applicable)
121
- [bin/jobs (Solid Queue) / bundle exec sidekiq / none]
122
-
123
- # Development server
124
- bin/dev
125
- # or
126
- bin/rails server
127
- ```
128
-
129
- ## Alternatives Considered
130
-
131
- | In Use | Alternative | When to Consider Switching |
132
- |--------|-------------|---------------------------|
133
- | [current choice] | [other option] | [conditions where alternative fits better] |
134
- | [current choice] | [other option] | [conditions where alternative fits better] |
135
-
136
- ## What to Avoid
137
-
138
- | Avoid | Why | Use Instead |
139
- |-------|-----|-------------|
140
- | [gem or pattern] | [specific problem: deprecated, unmaintained, security issue, incompatible] | [recommended alternative] |
141
- | [gem or pattern] | [specific problem] | [recommended alternative] |
142
-
143
- ## Rails Variant Decisions
144
-
145
- **If API-only app:**
146
- - [relevant architectural notes]
147
- - [serialization approach: jbuilder/Alba/Blueprinter/none]
148
- - [API versioning strategy if any]
149
-
150
- **If full-stack with Hotwire:**
151
- - [Turbo Frame vs Turbo Stream usage patterns]
152
- - [Stimulus controller conventions]
153
- - [Broadcasting patterns if any]
154
-
155
- **If full-stack with SPA frontend:**
156
- - [Frontend framework: React/Vue/Svelte]
157
- - [API layer: GraphQL/REST/Inertia.js]
158
- - [CORS and authentication approach]
159
-
160
- **If modular monolith with engines:**
161
- - [Engine boundaries and responsibilities]
162
- - [Shared dependencies across engines]
163
- - [Inter-engine communication patterns]
164
-
165
- ## Version Compatibility
166
-
167
- | Gem | Compatible With | Notes |
168
- |-----|-----------------|-------|
169
- | [gem @ version] | [Rails version / Ruby version] | [compatibility notes] |
170
- | [gem @ version] | [other gem @ version] | [known constraints] |
171
-
172
- ## Configuration Files Discovered
173
-
174
- | File | Purpose | Notable Settings |
175
- |------|---------|-----------------|
176
- | [config file path] | [what it configures] | [any non-default values worth noting] |
177
- | [config file path] | [what it configures] | [any non-default values worth noting] |
178
-
179
- ## Sources
180
-
181
- - [Gemfile and Gemfile.lock] — [primary source of gem versions]
182
- - [config/ directory] — [Rails configuration files]
183
- - [Official docs URL] — [what was verified]
184
- - [Other source] — [confidence level]
185
-
186
- ---
187
- *Stack research for: [project name]*
188
- *Researched: [date]*
189
- ```
190
-
191
- </template>
192
-
193
- <guidelines>
194
-
195
- **Discovery, Not Prescription:**
196
- - This template is for discovering what the project ACTUALLY uses
197
- - Fill in values by inspecting `Gemfile`, `Gemfile.lock`, `config/`, and project structure
198
- - Do not assume or recommend — report what is found
199
- - If a category has nothing discovered, mark it `[none found]` rather than suggesting additions
200
-
201
- **Core Platform:**
202
- - Always check `.ruby-version`, `Gemfile`, and `Gemfile.lock` for exact versions
203
- - Check `config/database.yml` for the actual database adapter in use
204
- - Check `config/application.rb` and environment files for framework defaults
205
-
206
- **Application Type:**
207
- - Determine if `ApplicationController` inherits from `ActionController::API` or `ActionController::Base`
208
- - Look for `config.api_only = true` in `config/application.rb`
209
- - Check for presence of `engines/`, `components/`, or `packages/` directories
210
- - Look at `database.yml` for multiple database configurations
211
-
212
- **Frontend & Assets:**
213
- - Check for `config/importmap.rb` (Importmap), `package.json` (Node-based), or `vite.config.ts` (Vite).
214
- - Look at `app/views/layouts/application.html.erb` for asset tags.
215
- - Check `app/javascript/` structure and `app/assets/` for CSS approach.
216
- - Look for `app/components/` (ViewComponent) or Phlex usage.
217
-
218
- **Backend Services:**
219
- - Check `config/application.rb` for `active_job.queue_adapter` setting.
220
- - Check `config/environments/production.rb` for cache store configuration.
221
- - Look at `config/cable.yml` for Action Cable adapter.
222
- - Check `config/storage.yml` for Active Storage service.
223
-
224
- **Authentication & Authorization:**
225
- - Look for `Authentication` concern generated by `rails generate authentication`.
226
- - Look for custom authorization in `before_action` filters and `Current` context (preferred), or `app/policies/` (Pundit) or `app/models/ability.rb` (CanCanCan) if gems were chosen.
227
- - Check `app/models/user.rb` for authentication modules.
228
-
229
- **Testing:**
230
- - Determine framework: check for `test/` (Minitest, recommended) vs `spec/` (RSpec)
231
- - Check `test/test_helper.rb` (Minitest) or `spec/rails_helper.rb` (if RSpec) for test configuration.
232
- - Look for `test/fixtures/` or `spec/factories/` to determine data strategy.
233
- - Check for system test configuration and browser driver.
234
-
235
- **What to Avoid:**
236
- - Flag gems that are no longer maintained or have known security issues.
237
- - Note deprecated Rails patterns found in the codebase (e.g., `before_filter`, `attr_accessible`).
238
- - Identify gems that duplicate Rails built-in functionality unnecessarily.
239
- - Flag any gems with known incompatibilities with the discovered Rails version.
240
-
241
- **Gem Inventory:**
242
- - Record version constraints as written in the Gemfile, not resolved versions.
243
- - Note which Bundler group each gem belongs to.
244
- - For important gems, check if the version is current or significantly outdated.
245
-
246
- **Version Compatibility:**
247
- - Note any gems that pin to specific Rails or Ruby versions
248
- - Flag if the Ruby version is approaching end-of-life
249
- - Check if major gem upgrades are available that would require migration work
250
-
251
- </guidelines>
@@ -1,247 +0,0 @@
1
- # Research Summary Template
2
-
3
- Template for `.ariadna_planning/research/SUMMARY.md` — executive summary of project research with roadmap implications for Ruby on Rails applications.
4
-
5
- <template>
6
-
7
- ```markdown
8
- # Project Research Summary
9
-
10
- **Project:** [name from PROJECT.md]
11
- **Domain:** [inferred domain type] — Ruby on Rails application
12
- **Researched:** [date]
13
- **Confidence:** [HIGH/MEDIUM/LOW]
14
-
15
- ## Executive Summary
16
-
17
- [2-3 paragraph overview of research findings]
18
-
19
- - What type of Rails application this is and how experienced Rails teams build it
20
- - The recommended approach based on research (conventions, gems, architectural patterns)
21
- - Key risks specific to this kind of Rails project and how to mitigate them
22
-
23
- ## Key Findings
24
-
25
- ### Recommended Stack
26
-
27
- [Summary from STACK.md — 1-2 paragraphs on why this combination of Rails technologies fits the project]
28
-
29
- **Ruby & Rails version:**
30
- - [Ruby version]: [why this version — e.g., YJIT support, performance, compatibility]
31
- - [Rails version]: [why this version — e.g., latest stable, Solid Queue/Cache built-in, Turbo maturity]
32
-
33
- **Database:**
34
- - [Database]: [purpose] — [why recommended — e.g., SQLite for zero-setup default (Rails ships with it); PostgreSQL when needing full-text search, jsonb, advisory locks, or high-concurrency production]
35
-
36
- **Background jobs:**
37
- - [Job backend]: [purpose] — [why recommended — e.g., Solid Queue for zero-dependency simplicity (Rails 8 default), Sidekiq for extreme throughput needs]
38
-
39
- **Caching & key-value:**
40
- - [Cache backend]: [purpose] — [why recommended — e.g., Solid Cache for DB-backed caching with no external dependencies (Rails 8 default), Redis for shared cross-process state]
41
-
42
- **Real-time:**
43
- - [Approach]: [purpose] — [why recommended — e.g., Turbo Streams over WebSocket, Action Cable for custom channels]
44
-
45
- **Frontend approach:**
46
- - [Frontend stack]: [purpose] — [why recommended — e.g., Hotwire/Turbo + Stimulus for server-rendered, React/Inertia for SPA-like]
47
- - [CSS approach]: [purpose] — [why recommended — e.g., custom CSS with CSS layers and custom properties (Rails default), Tailwind CSS if already in use]
48
- - [Asset pipeline]: [purpose] — [why recommended — e.g., Propshaft + importmap, esbuild for bundling]
49
-
50
- **Testing framework:**
51
- - [Test framework]: [purpose] — [why recommended — e.g., Minitest (recommended, Rails default, no extra dependencies), RSpec if team prefers]
52
- - [Additional test tools]: [purpose] — [e.g., Capybara for system tests, FactoryBot for fixtures]
53
-
54
- **Authentication & authorization:**
55
- - [Auth solution]: [purpose] — [why recommended — e.g., Rails authentication generator for session-based auth]
56
- - [Authorization]: [purpose] — [why recommended — e.g., before_action + Current context (default), Pundit only if explicitly requested]
57
-
58
- **Additional gems:**
59
- - [Gem]: [purpose] — [why recommended]
60
- - [Gem]: [purpose] — [why recommended]
61
-
62
- ### Expected Features
63
-
64
- [Summary from FEATURES.md]
65
-
66
- **Must have (table stakes):**
67
- - [Feature] — users expect this
68
- - [Feature] — users expect this
69
-
70
- **Should have (competitive):**
71
- - [Feature] — differentiator
72
- - [Feature] — differentiator
73
-
74
- **Defer (v2+):**
75
- - [Feature] — not essential for launch
76
-
77
- ### Architecture Approach
78
-
79
- [Summary from ARCHITECTURE.md — 1 paragraph covering the Rails MVC structure, domain model organization, and any patterns beyond vanilla Rails]
80
-
81
- **Application structure:**
82
- 1. [Models & domain layer] — [approach — e.g., core models, concerns for shared behavior, STI vs. polymorphism decisions, value objects]
83
- 2. [Controllers & routing] — [approach — e.g., RESTful resources, namespace organization, API vs. HTML responses]
84
- 3. [Views & UI layer] — [approach — e.g., partials, ViewComponents, Turbo Frames for partial page updates]
85
- 4. [Service layer] — [approach — e.g., service objects/interactors for complex operations, form objects for multi-model forms]
86
- 5. [Background layer] — [approach — e.g., Active Job with queue backend, mailers, recurring tasks]
87
- 6. [Data access patterns] — [approach — e.g., scopes, query objects, eager loading strategy]
88
-
89
- **Multi-tenancy approach (if applicable):**
90
- - [Strategy] — [e.g., Denormalise tables with account_id and use Current.account, PostgreSQL schemas, separate databases]
91
-
92
- **Engine extraction (if applicable):**
93
- - [Engine/mountable concern] — [e.g., admin engine, API engine, shared authentication engine]
94
-
95
- ### Critical Pitfalls
96
-
97
- [Top 5-7 from PITFALLS.md — Rails-specific risks identified through research]
98
-
99
- 1. **[N+1 query risk]** — [where it applies and how to avoid — e.g., strict_loading, bullet gem, includes/preload strategy]
100
- 2. **[Migration safety]** — [how to avoid — e.g., strong_migrations gem, zero-downtime deployment considerations, backfill strategies]
101
- 3. **[Callback complexity]** — [how to avoid — e.g., limit callback chains, prefer explicit service objects for side effects]
102
- 4. **[Fat model/controller risk]** — [how to avoid — e.g., extract concerns, service objects, form objects early]
103
- 5. **[Turbo/Hotwire integration pitfall]** — [how to avoid — e.g., Turbo Frame vs. Stream decisions, morphing gotchas, progressive enhancement]
104
- 6. **[Asset pipeline / frontend build issue]** — [how to avoid — e.g., importmap limitations, JavaScript bundler configuration]
105
- 7. **[Testing bottleneck]** — [how to avoid — e.g., slow system tests, fixture vs. factory strategy, parallel test execution]
106
-
107
- ## Implications for Roadmap
108
-
109
- Based on research, suggested phase structure for this Rails application:
110
-
111
- ### Phase 1: Foundation — Data Model, Authentication & Core Models
112
- **Rationale:** [why this comes first — e.g., Rails apps are built on a solid data model; authentication gates all other features; core models define the domain language]
113
- **Delivers:** [what this phase produces — e.g., migrations, core models with validations and associations, authentication flow, basic authorization, seed data, model-level tests]
114
- **Addresses:** [features from FEATURES.md — e.g., user registration, core domain entities]
115
- **Avoids:** [pitfall from PITFALLS.md — e.g., migration rework by designing schema upfront, N+1 prevention with eager loading strategy from day one]
116
- **Stack elements:** [from STACK.md — e.g., Rails generators, SQLite (or PostgreSQL), chosen auth gem, model concerns]
117
-
118
- ### Phase 2: Core Features — Controllers, Views & Turbo Interactions
119
- **Rationale:** [why this order — e.g., with models stable, build the user-facing CRUD and interactions; Turbo Frames/Streams add interactivity without JavaScript complexity]
120
- **Delivers:** [what this phase produces — e.g., RESTful controllers, views with partials/components, Turbo Frame navigation, form handling, flash messages, system tests]
121
- **Addresses:** [features from FEATURES.md — e.g., primary user workflows, admin interface]
122
- **Uses:** [stack elements from STACK.md — e.g., Hotwire/Turbo, Stimulus, CSS framework, ViewComponents]
123
- **Implements:** [architecture component — e.g., controller layer, view layer, service objects for complex actions]
124
-
125
- ### Phase 3: Background Processing — Jobs, Mailers & Scheduled Tasks
126
- **Rationale:** [why this order — e.g., core features surface the need for async work; emails, notifications, data processing should not block web requests]
127
- **Delivers:** [what this phase produces — e.g., Active Job classes, mailer templates, recurring job schedule, webhook processing, error handling/retry strategy]
128
- **Addresses:** [features from FEATURES.md — e.g., email notifications, data imports/exports, scheduled reports]
129
- **Uses:** [stack elements from STACK.md — e.g., Solid Queue, Action Mailer, Active Storage for file processing]
130
- **Avoids:** [pitfall from PITFALLS.md — e.g., long-running requests, timeout issues, job idempotency problems]
131
-
132
- ### Phase 4: Polish — Caching, Performance, Search & Real-Time
133
- **Rationale:** [why this order — e.g., optimize after features are stable; caching and real-time add complexity best deferred until core is solid]
134
- **Delivers:** [what this phase produces — e.g., fragment caching, Russian doll caching, counter caches, database indexes, full-text search, Action Cable channels, Turbo Stream broadcasts, performance monitoring]
135
- **Addresses:** [features from FEATURES.md — e.g., search, live updates, dashboard performance]
136
- **Uses:** [stack elements from STACK.md — e.g., Solid Cache, pg_search/Meilisearch, Solid Cable for Action Cable]
137
- **Avoids:** [pitfall from PITFALLS.md — e.g., premature optimization, cache invalidation bugs, N+1 regressions under load]
138
-
139
- [Continue for additional phases if needed...]
140
-
141
- ### Phase Ordering Rationale
142
-
143
- - [Why data model and auth come first — e.g., Rails convention-over-configuration rewards upfront schema design; all features depend on authentication]
144
- - [Why controllers/views before background jobs — e.g., user-facing flows reveal the async work needed; avoids building jobs for features that change]
145
- - [Why caching and real-time are last — e.g., caching strategies depend on stable views and queries; premature caching causes invalidation bugs]
146
- - [How this avoids pitfalls from research — e.g., early attention to eager loading prevents N+1 debt; strong_migrations from phase 1 prevents deployment issues]
147
-
148
- ### Research Flags
149
-
150
- Phases likely needing deeper research during planning:
151
- - **Phase [X]:** [reason — e.g., "multi-tenancy approach needs benchmarking against data volume projections"]
152
- - **Phase [Y]:** [reason — e.g., "Turbo Stream vs. Action Cable decision depends on real-time requirements complexity"]
153
- - **Phase [Z]:** [reason — e.g., "search gem selection depends on hosting constraints and query patterns"]
154
-
155
- Phases with standard Rails patterns (skip research-phase):
156
- - **Phase [X]:** [reason — e.g., "standard RESTful CRUD, well-documented Rails conventions"]
157
- - **Phase [Y]:** [reason — e.g., "Active Job + mailers follow established Rails patterns"]
158
-
159
- ## Confidence Assessment
160
-
161
- | Area | Confidence | Notes |
162
- |------|------------|-------|
163
- | Stack | [HIGH/MEDIUM/LOW] | [reason — e.g., "well-established Rails gems with strong community support"] |
164
- | Features | [HIGH/MEDIUM/LOW] | [reason — e.g., "domain-specific features need validation with stakeholders"] |
165
- | Architecture | [HIGH/MEDIUM/LOW] | [reason — e.g., "standard Rails MVC, but multi-tenancy approach needs validation"] |
166
- | Pitfalls | [HIGH/MEDIUM/LOW] | [reason — e.g., "common Rails pitfalls well-documented, project-specific risks less certain"] |
167
-
168
- **Overall confidence:** [HIGH/MEDIUM/LOW]
169
-
170
- ### Gaps to Address
171
-
172
- [Any areas where research was inconclusive or needs validation during implementation]
173
-
174
- - [Gap]: [how to handle during planning/execution — e.g., "hosting environment unknown, affects cache backend and job queue selection"]
175
- - [Gap]: [how to handle during planning/execution — e.g., "expected data volume unclear, affects database indexing and pagination strategy"]
176
- - [Gap]: [how to handle during planning/execution — e.g., "third-party API integration details pending, affects service object design"]
177
-
178
- ## Sources
179
-
180
- ### Primary (HIGH confidence)
181
- - [Rails Guides / API docs] — [topics covered]
182
- - [Context7 library ID] — [topics]
183
- - [Official gem documentation] — [what was checked]
184
-
185
- ### Secondary (MEDIUM confidence)
186
- - [Community blog / conference talk] — [finding]
187
- - [Source] — [finding]
188
-
189
- ### Tertiary (LOW confidence)
190
- - [Source] — [finding, needs validation]
191
-
192
- ---
193
- *Research completed: [date]*
194
- *Ready for roadmap: yes*
195
- ```
196
-
197
- </template>
198
-
199
- <guidelines>
200
-
201
- **Executive Summary:**
202
- - Write for someone who will only read this section
203
- - Include the key Rails architectural recommendation and main risk
204
- - Reference the Rails conventions that apply and where the project diverges from convention
205
- - 2-3 paragraphs maximum
206
-
207
- **Key Findings:**
208
- - Summarize, don't duplicate full documents
209
- - Link to detailed docs (STACK.md, FEATURES.md, etc.)
210
- - Focus on what matters for roadmap decisions
211
- - For the stack section, emphasize Rails-native solutions first (Solid Queue, Solid Cache, built-in authentication) before third-party alternatives
212
- - Note where the project follows Rails conventions and where it needs custom patterns
213
-
214
- **Architecture Approach:**
215
- - Start from Rails MVC conventions and note deviations
216
- - Be explicit about concern organization and service object boundaries
217
- - Address data access patterns — eager loading, scopes, query objects
218
- - Note multi-tenancy and engine extraction only if applicable
219
-
220
- **Critical Pitfalls:**
221
- - Prioritize Rails-specific pitfalls: N+1 queries, migration safety, callback chains, fat models
222
- - Include Turbo/Hotwire integration gotchas if the frontend uses Hotwire
223
- - Note deployment-specific risks (zero-downtime migrations, asset compilation)
224
- - Reference specific gems that mitigate pitfalls (bullet, strong_migrations, strict_loading)
225
-
226
- **Implications for Roadmap:**
227
- - This is the most important section
228
- - Directly informs roadmap creation
229
- - Follow the Rails-typical build order: data model first, then controllers/views, then async, then optimization
230
- - Be explicit about phase suggestions and rationale
231
- - Include research flags for each suggested phase
232
- - Note where phases can leverage Rails generators and conventions to move faster
233
-
234
- **Confidence Assessment:**
235
- - Be honest about uncertainty
236
- - Note gaps that need resolution during planning
237
- - HIGH = verified with official Rails guides or gem documentation
238
- - MEDIUM = community consensus, multiple sources agree, established patterns
239
- - LOW = single source, inference, or project-specific assumption
240
-
241
- **Integration with roadmap creation:**
242
- - This file is loaded as context during roadmap creation
243
- - Phase suggestions here become starting point for roadmap
244
- - Research flags inform phase planning
245
- - Rails convention alignment should be noted to speed up estimation
246
-
247
- </guidelines>
@@ -1,176 +0,0 @@
1
- # State Template
2
-
3
- Template for `.ariadna_planning/STATE.md` — the project's living memory.
4
-
5
- ---
6
-
7
- ## File Template
8
-
9
- ```markdown
10
- # Project State
11
-
12
- ## Project Reference
13
-
14
- See: .ariadna_planning/PROJECT.md (updated [date])
15
-
16
- **Core value:** [One-liner from PROJECT.md Core Value section]
17
- **Current focus:** [Current phase name]
18
-
19
- ## Current Position
20
-
21
- Phase: [X] of [Y] ([Phase name])
22
- Plan: [A] of [B] in current phase
23
- Status: [Ready to plan / Planning / Ready to execute / In progress / Phase complete]
24
- Last activity: [YYYY-MM-DD] — [What happened]
25
-
26
- Progress: [░░░░░░░░░░] 0%
27
-
28
- ## Performance Metrics
29
-
30
- **Velocity:**
31
- - Total plans completed: [N]
32
- - Average duration: [X] min
33
- - Total execution time: [X.X] hours
34
-
35
- **By Phase:**
36
-
37
- | Phase | Plans | Total | Avg/Plan |
38
- |-------|-------|-------|----------|
39
- | - | - | - | - |
40
-
41
- **Recent Trend:**
42
- - Last 5 plans: [durations]
43
- - Trend: [Improving / Stable / Degrading]
44
-
45
- *Updated after each plan completion*
46
-
47
- ## Accumulated Context
48
-
49
- ### Decisions
50
-
51
- Decisions are logged in PROJECT.md Key Decisions table.
52
- Recent decisions affecting current work:
53
-
54
- - [Phase X]: [Decision summary]
55
- - [Phase Y]: [Decision summary]
56
-
57
- ### Pending Todos
58
-
59
- [From .ariadna_planning/todos/pending/ — ideas captured during sessions]
60
-
61
- None yet.
62
-
63
- ### Blockers/Concerns
64
-
65
- [Issues that affect future work]
66
-
67
- None yet.
68
-
69
- ## Session Continuity
70
-
71
- Last session: [YYYY-MM-DD HH:MM]
72
- Stopped at: [Description of last completed action]
73
- Resume file: [Path to .continue-here*.md if exists, otherwise "None"]
74
- ```
75
-
76
- <purpose>
77
-
78
- STATE.md is the project's short-term memory spanning all phases and sessions.
79
-
80
- **Problem it solves:** Information is captured in summaries, issues, and decisions but not systematically consumed. Sessions start without context.
81
-
82
- **Solution:** A single, small file that's:
83
- - Read first in every workflow
84
- - Updated after every significant action
85
- - Contains digest of accumulated context
86
- - Enables instant session restoration
87
-
88
- </purpose>
89
-
90
- <lifecycle>
91
-
92
- **Creation:** After ROADMAP.md is created (during init)
93
- - Reference PROJECT.md (read it for current context)
94
- - Initialize empty accumulated context sections
95
- - Set position to "Phase 1 ready to plan"
96
-
97
- **Reading:** First step of every workflow
98
- - progress: Present status to user
99
- - plan: Inform planning decisions
100
- - execute: Know current position
101
- - transition: Know what's complete
102
-
103
- **Writing:** After every significant action
104
- - execute: After SUMMARY.md created
105
- - Update position (phase, plan, status)
106
- - Note new decisions (detail in PROJECT.md)
107
- - Add blockers/concerns
108
- - transition: After phase marked complete
109
- - Update progress bar
110
- - Clear resolved blockers
111
- - Refresh Project Reference date
112
-
113
- </lifecycle>
114
-
115
- <sections>
116
-
117
- ### Project Reference
118
- Points to PROJECT.md for full context. Includes:
119
- - Core value (the ONE thing that matters)
120
- - Current focus (which phase)
121
- - Last update date (triggers re-read if stale)
122
-
123
- Claude reads PROJECT.md directly for requirements, constraints, and decisions.
124
-
125
- ### Current Position
126
- Where we are right now:
127
- - Phase X of Y — which phase
128
- - Plan A of B — which plan within phase
129
- - Status — current state
130
- - Last activity — what happened most recently
131
- - Progress bar — visual indicator of overall completion
132
-
133
- Progress calculation: (completed plans) / (total plans across all phases) × 100%
134
-
135
- ### Performance Metrics
136
- Track velocity to understand execution patterns:
137
- - Total plans completed
138
- - Average duration per plan
139
- - Per-phase breakdown
140
- - Recent trend (improving/stable/degrading)
141
-
142
- Updated after each plan completion.
143
-
144
- ### Accumulated Context
145
-
146
- **Decisions:** Reference to PROJECT.md Key Decisions table, plus recent decisions summary for quick access. Full decision log lives in PROJECT.md.
147
-
148
- **Pending Todos:** Ideas captured via /ariadna:add-todo
149
- - Count of pending todos
150
- - Reference to .ariadna_planning/todos/pending/
151
- - Brief list if few, count if many (e.g., "5 pending todos — see /ariadna:check-todos")
152
-
153
- **Blockers/Concerns:** From "Next Phase Readiness" sections
154
- - Issues that affect future work
155
- - Prefix with originating phase
156
- - Cleared when addressed
157
-
158
- ### Session Continuity
159
- Enables instant resumption:
160
- - When was last session
161
- - What was last completed
162
- - Is there a .continue-here file to resume from
163
-
164
- </sections>
165
-
166
- <size_constraint>
167
-
168
- Keep STATE.md under 100 lines.
169
-
170
- It's a DIGEST, not an archive. If accumulated context grows too large:
171
- - Keep only 3-5 recent decisions in summary (full log in PROJECT.md)
172
- - Keep only active blockers, remove resolved ones
173
-
174
- The goal is "read once, know where we are" — if it's too long, that fails.
175
-
176
- </size_constraint>