ariadna 1.1.4 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b216fcd72bc73121f1c9129c55c7575ddf50d0ff0d14f34e14f34398a3c6aa23
4
- data.tar.gz: 04bad2627d8928f2c2a641f67366764f6d5336ef17fae933923633b675cbd41d
3
+ metadata.gz: a59ce08ab4d7f1165dd59dac034ac04e5725263a3022bebbd2c3c39fdb0a3c23
4
+ data.tar.gz: 2eb175ba24a25c5114e3b76f83bbfef0275a21dc114f00d7376390508cb54a87
5
5
  SHA512:
6
- metadata.gz: 20e330e4c9ca1c1b7bb149efbe12446800c00dd80d6cb299cb38fa1f285244ac05f0b577f196dfa658492c71df5cf697df01885f395998c271008c2e48d105ce
7
- data.tar.gz: 2c449bfa9ba635500167fac1019c047559938f89cc8adbfb958e88bb2ea6bf9e3e148b54d62a7d208dfbb6b091b9a53d558406651fc733fc5093689386cb7898
6
+ metadata.gz: 11f2127685615ea902f97bfc9fc813e20e74f354b055672568d39552d3d551d31896ba73b5ad3434d1ac84dc6d593f8d385818e78fc7cae24844f45720558f80
7
+ data.tar.gz: cec523e574d6182711229ddf5fa7519929f3c9fb9a144a0eb4928cf46a24d4761e9f718cf3678cf2dde812f9cd655647ca2c12776fcf29aa526831ad9df017a9
@@ -17,6 +17,7 @@ Your job: Produce PLAN.md files that Claude executors can implement without inte
17
17
 
18
18
  **Core responsibilities:**
19
19
  - **FIRST: Parse and honor user decisions from CONTEXT.md** (locked decisions are NON-NEGOTIABLE)
20
+ - Use Rails conventions (from `rails-conventions.md`) for standard task decomposition
20
21
  - Decompose phases into parallel-optimized plans with 2-3 tasks each
21
22
  - Build dependency graphs and assign execution waves
22
23
  - Derive must-haves using goal-backward methodology
@@ -25,6 +26,33 @@ Your job: Produce PLAN.md files that Claude executors can implement without inte
25
26
  - Return structured results to orchestrator
26
27
  </role>
27
28
 
29
+ <rails_awareness>
30
+ ## Rails-Aware Planning
31
+
32
+ Load Rails conventions from your required reading for standard task decomposition patterns.
33
+
34
+ @~/.claude/ariadna/references/rails-conventions.md
35
+
36
+ **Use domain templates** for common Rails work:
37
+ - "Add model" → migration + model + tests + fixtures
38
+ - "Add controller" → routes + controller + views + tests
39
+ - "Add authentication" → auth scaffold + user model + session controller + tests
40
+ - "Add background job" → job class + model method + tests
41
+ - "Add mailer" → mailer + views + tests
42
+ - "Add Turbo/Hotwire feature" → Turbo Frame + controller response + Stimulus (if needed) + system test
43
+
44
+ **Known domains (skip discovery):** Models, Controllers, Views, Auth, Jobs, Email, File Uploads, Real-time, Testing, API Mode, Caching. See `rails-conventions.md` `<known_domains>` for the full list.
45
+
46
+ **Discovery only for:** External API integrations, novel gems, payment systems, or anything not in the known domains list.
47
+
48
+ **Pitfall prevention:** Apply common Rails pitfalls from `rails-conventions.md` proactively:
49
+ - Include `includes()` for associations in controller queries (N+1)
50
+ - Add database indexes in migration tasks
51
+ - Use strong_parameters in controller tasks
52
+ - Keep controllers thin, models rich
53
+ - Use background jobs for external calls
54
+ </rails_awareness>
55
+
28
56
  <context_fidelity>
29
57
  ## CRITICAL: User Decision Fidelity
30
58
 
@@ -0,0 +1,384 @@
1
+ <rails_conventions>
2
+
3
+ Pre-baked Rails knowledge for Ariadna planning and execution agents. This document replaces generic research for standard Rails projects, encoding well-known conventions, patterns, and pitfalls so agents don't need to web-search for common Rails patterns.
4
+
5
+ <standard_stack>
6
+
7
+ ## Standard Rails Stack (2025)
8
+
9
+ | Layer | Technology | Notes |
10
+ |-------|-----------|-------|
11
+ | Framework | Rails 8+ | Defaults to SQLite in dev, includes Solid Queue/Cache/Cable |
12
+ | Database | PostgreSQL (production) | SQLite for dev/test is fine for most projects |
13
+ | Background Jobs | Solid Queue | Rails 8 default, replaces Sidekiq for most cases |
14
+ | Caching | Solid Cache | Rails 8 default, database-backed cache |
15
+ | WebSockets | Action Cable + Solid Cable | Rails 8 default |
16
+ | Real-time UI | Turbo (Hotwire) | Turbo Drive, Frames, Streams |
17
+ | JS Sprinkles | Stimulus (Hotwire) | Controllers for interactive behavior |
18
+ | CSS | Tailwind CSS or Propshaft | Rails 8 defaults to Propshaft asset pipeline |
19
+ | Auth | Rails built-in `has_secure_password` or Devise | Rails 8 includes auth generator |
20
+ | Email | Action Mailer | Built-in |
21
+ | File Upload | Active Storage | Built-in |
22
+ | API | Rails API mode or Jbuilder | Built-in |
23
+ | Testing | Minitest | Rails default, use fixtures not factories |
24
+ | Linting | RuboCop + rubocop-rails | Standard community linting |
25
+
26
+ **What NOT to use (and why):**
27
+ - Factories (FactoryBot) when fixtures suffice — fixtures are faster, declarative, and Rails-native
28
+ - RSpec unless the project already uses it — Minitest is simpler and Rails-native
29
+ - Webpacker/Shakapacker — replaced by importmap-rails or jsbundling-rails
30
+ - Sprockets — replaced by Propshaft in Rails 8
31
+ - Redis for jobs/cache — Solid Queue/Cache use the database, simpler ops
32
+
33
+ </standard_stack>
34
+
35
+ <architecture_patterns>
36
+
37
+ ## Rails Architecture Patterns
38
+
39
+ ### MVC Foundation
40
+ - **Models:** Business logic lives here. Validations, scopes, callbacks, associations.
41
+ - **Controllers:** Thin. Receive request, call model, render response. 7 RESTful actions max.
42
+ - **Views:** ERB templates. Logic delegated to presenters or helpers.
43
+
44
+ ### Concern-Driven Architecture
45
+ ```
46
+ app/models/concerns/
47
+ shared/ # Cross-model concerns (Trackable, Searchable)
48
+ model_name/ # Model-specific concerns (User::Authenticatable)
49
+ ```
50
+
51
+ **When to extract a concern:**
52
+ - Behavior reused across 2+ models → shared concern
53
+ - Model file exceeds ~100 lines → model-specific concern
54
+ - Logical grouping of related methods → named concern
55
+
56
+ ### Service Objects (When Needed)
57
+ Use plain Ruby objects in `app/services/` for:
58
+ - Multi-model operations (CreateOrderWithPayment)
59
+ - External API integrations (StripeChargeService)
60
+ - Complex business processes spanning multiple steps
61
+
62
+ **Don't use for:** Simple CRUD, single-model operations, or anything a model method handles.
63
+
64
+ ### Presenter Pattern
65
+ Plain Ruby classes for complex view logic:
66
+ ```ruby
67
+ # app/models/dashboard_presenter.rb (NOT app/presenters/)
68
+ class DashboardPresenter
69
+ include ActionView::Helpers::TagHelper
70
+
71
+ def initialize(user)
72
+ @user = user
73
+ end
74
+
75
+ def greeting
76
+ "Welcome, #{@user.name}"
77
+ end
78
+ end
79
+ ```
80
+
81
+ ### RESTful Resource Design
82
+ - Prefer creating new controllers over adding custom actions
83
+ - `POST /messages/:id/archive` → `ArchivesController#create`
84
+ - Nest resources max 1 level: `/posts/:post_id/comments`
85
+ - Use `concerns` in routes for shared resource patterns
86
+
87
+ ### Current Attributes
88
+ ```ruby
89
+ # app/models/current.rb
90
+ class Current < ActiveSupport::CurrentAttributes
91
+ attribute :user, :session, :account
92
+ end
93
+ ```
94
+ Set in `ApplicationController`, access everywhere. No parameter passing for auth context.
95
+
96
+ </architecture_patterns>
97
+
98
+ <common_pitfalls>
99
+
100
+ ## Common Rails Pitfalls (with Prevention)
101
+
102
+ ### 1. N+1 Queries
103
+ **Problem:** Loading associated records in a loop.
104
+ **Prevention:** Use `includes`, `preload`, or `eager_load` in controllers. Add `strict_loading` to models in development.
105
+ ```ruby
106
+ # Bad
107
+ @posts = Post.all # then post.comments in view
108
+
109
+ # Good
110
+ @posts = Post.includes(:comments, :author).all
111
+ ```
112
+
113
+ ### 2. Missing Database Indexes
114
+ **Prevention:** Always add indexes for:
115
+ - Foreign keys (`add_index :posts, :user_id`)
116
+ - Columns used in `where` clauses
117
+ - Columns used in `order` clauses
118
+ - Unique constraints (`add_index :users, :email, unique: true`)
119
+
120
+ ### 3. Mass Assignment Vulnerabilities
121
+ **Prevention:** Always use `strong_parameters` in controllers.
122
+ ```ruby
123
+ def post_params
124
+ params.require(:post).permit(:title, :body, :published)
125
+ end
126
+ ```
127
+
128
+ ### 4. Callback Hell
129
+ **Prevention:** Limit callbacks to:
130
+ - `before_validation` for normalization (strip whitespace, downcase email)
131
+ - `after_create_commit` for async side effects (send email, broadcast)
132
+ - Avoid `after_save` chains that trigger cascading updates
133
+
134
+ ### 5. Fat Controllers
135
+ **Prevention:** Controllers should only:
136
+ 1. Authenticate/authorize
137
+ 2. Load/build the resource
138
+ 3. Call save/update/destroy
139
+ 4. Respond with redirect or render
140
+
141
+ ### 6. Missing Validations
142
+ **Prevention:** Validate at model level, not just in forms:
143
+ - Presence on required fields
144
+ - Uniqueness with database-level constraint
145
+ - Format for emails, URLs, phone numbers
146
+ - Numericality for quantities, prices
147
+
148
+ ### 7. Unscoped Queries (Multi-tenancy)
149
+ **Prevention:** Always scope queries to current user/account:
150
+ ```ruby
151
+ # Bad
152
+ Post.find(params[:id])
153
+
154
+ # Good
155
+ Current.user.posts.find(params[:id])
156
+ ```
157
+
158
+ ### 8. Missing Error Handling
159
+ **Prevention:** Add `rescue_from` in `ApplicationController`:
160
+ ```ruby
161
+ rescue_from ActiveRecord::RecordNotFound, with: :not_found
162
+ rescue_from ActionController::ParameterMissing, with: :bad_request
163
+ ```
164
+
165
+ ### 9. Synchronous External Calls
166
+ **Prevention:** Always use background jobs for:
167
+ - Sending emails
168
+ - Calling external APIs
169
+ - Processing uploads
170
+ - Generating reports
171
+
172
+ ### 10. Missing CSRF Protection
173
+ **Prevention:** Rails enables CSRF by default. Don't disable `protect_from_forgery`. For API endpoints, use token auth instead.
174
+
175
+ </common_pitfalls>
176
+
177
+ <testing_patterns>
178
+
179
+ ## Rails Testing Patterns (Minitest)
180
+
181
+ ### Test Organization
182
+ ```
183
+ test/
184
+ models/ # Unit tests for models
185
+ controllers/ # Integration tests for request/response
186
+ system/ # Browser-based end-to-end tests
187
+ helpers/ # Helper method tests
188
+ jobs/ # Background job tests
189
+ mailers/ # Mailer tests
190
+ fixtures/ # YAML test data
191
+ test_helper.rb # Shared setup
192
+ ```
193
+
194
+ ### Fixtures Over Factories
195
+ ```yaml
196
+ # test/fixtures/users.yml
197
+ alice:
198
+ name: Alice
199
+ email: alice@example.com
200
+ password_digest: <%= BCrypt::Password.create('password') %>
201
+
202
+ bob:
203
+ name: Bob
204
+ email: bob@example.com
205
+ password_digest: <%= BCrypt::Password.create('password') %>
206
+ ```
207
+
208
+ **Why fixtures:** Faster (loaded once per test suite), declarative, Rails-native, no external gem needed.
209
+
210
+ ### Model Test Pattern
211
+ ```ruby
212
+ class UserTest < ActiveSupport::TestCase
213
+ setup do
214
+ Current.session = sessions(:alice_session) # Always set Current context
215
+ end
216
+
217
+ test "validates email presence" do
218
+ user = User.new(name: "Test")
219
+ assert_not user.valid?
220
+ assert_includes user.errors[:email], "can't be blank"
221
+ end
222
+
223
+ test "creates user with valid attributes" do
224
+ assert_difference "User.count", 1 do
225
+ User.create!(name: "New", email: "new@example.com", password: "password")
226
+ end
227
+ end
228
+ end
229
+ ```
230
+
231
+ ### Controller Test Pattern (Integration)
232
+ ```ruby
233
+ class PostsControllerTest < ActionDispatch::IntegrationTest
234
+ setup do
235
+ @user = users(:alice)
236
+ sign_in @user # Helper method
237
+ end
238
+
239
+ test "index returns posts" do
240
+ get posts_url
241
+ assert_response :success
242
+ assert_select "h2", posts(:first).title
243
+ end
244
+
245
+ test "create redirects on success" do
246
+ assert_difference "Post.count", 1 do
247
+ post posts_url, params: { post: { title: "New", body: "Content" } }
248
+ end
249
+ assert_redirected_to post_url(Post.last)
250
+ end
251
+ end
252
+ ```
253
+
254
+ ### System Test Pattern
255
+ ```ruby
256
+ class UserFlowsTest < ApplicationSystemTestCase
257
+ test "user can sign up and create a post" do
258
+ visit new_registration_url
259
+ fill_in "Name", with: "Test User"
260
+ fill_in "Email", with: "test@example.com"
261
+ fill_in "Password", with: "password123"
262
+ click_on "Sign up"
263
+
264
+ assert_text "Welcome, Test User"
265
+
266
+ click_on "New Post"
267
+ fill_in "Title", with: "My First Post"
268
+ fill_in "Body", with: "Hello world"
269
+ click_on "Create Post"
270
+
271
+ assert_text "My First Post"
272
+ end
273
+ end
274
+ ```
275
+
276
+ ### Key Testing Conventions
277
+ - Use `assert_difference` for state changes, not just boolean checks
278
+ - Set `Current.session` in setup blocks for multi-tenancy
279
+ - Test happy path and one key failure path per method
280
+ - Use `assert_select` for HTML assertions in controller tests
281
+ - Run `bin/rails test` (not `rspec`) for the full suite
282
+
283
+ </testing_patterns>
284
+
285
+ <domain_templates>
286
+
287
+ ## Rails Task Templates for Planning
288
+
289
+ These templates help the planner agent decompose common Rails work into well-structured tasks.
290
+
291
+ ### Add Model
292
+ ```
293
+ Tasks:
294
+ 1. Create migration + model with validations, associations, and concerns
295
+ Files: db/migrate/xxx_create_[model].rb, app/models/[model].rb
296
+ 2. Add model tests + fixtures
297
+ Files: test/models/[model]_test.rb, test/fixtures/[model].yml
298
+ ```
299
+
300
+ ### Add Controller (with views)
301
+ ```
302
+ Tasks:
303
+ 1. Add routes + controller with RESTful actions
304
+ Files: config/routes.rb, app/controllers/[model]_controller.rb
305
+ 2. Add views (index, show, new, edit, _form partial)
306
+ Files: app/views/[model]/*.html.erb
307
+ 3. Add controller tests
308
+ Files: test/controllers/[model]_controller_test.rb
309
+ ```
310
+
311
+ ### Add Authentication
312
+ ```
313
+ Tasks:
314
+ 1. Generate auth scaffold (Rails 8: bin/rails generate authentication)
315
+ or: Add User model with has_secure_password, Session model, SessionsController
316
+ Files: app/models/user.rb, app/models/session.rb, app/controllers/sessions_controller.rb
317
+ 2. Add auth views (login, registration)
318
+ Files: app/views/sessions/*.html.erb, app/views/registrations/*.html.erb
319
+ 3. Add auth tests
320
+ Files: test/controllers/sessions_controller_test.rb, test/models/user_test.rb
321
+ ```
322
+
323
+ ### Add Background Job
324
+ ```
325
+ Tasks:
326
+ 1. Create job class + model method it delegates to
327
+ Files: app/jobs/[name]_job.rb, app/models/[model].rb
328
+ 2. Add job tests
329
+ Files: test/jobs/[name]_job_test.rb
330
+ ```
331
+
332
+ ### Add Mailer
333
+ ```
334
+ Tasks:
335
+ 1. Create mailer + views
336
+ Files: app/mailers/[name]_mailer.rb, app/views/[name]_mailer/*.html.erb
337
+ 2. Add mailer tests
338
+ Files: test/mailers/[name]_mailer_test.rb
339
+ ```
340
+
341
+ ### Add Turbo/Hotwire Feature
342
+ ```
343
+ Tasks:
344
+ 1. Add Turbo Frame wrapping + controller turbo_stream response
345
+ Files: app/views/[model]/*.html.erb, app/controllers/[model]_controller.rb
346
+ 2. Add Stimulus controller (if interactive behavior needed)
347
+ Files: app/javascript/controllers/[name]_controller.js
348
+ 3. Add system test for real-time behavior
349
+ Files: test/system/[feature]_test.rb
350
+ ```
351
+
352
+ </domain_templates>
353
+
354
+ <known_domains>
355
+
356
+ ## Known Rails Domains (Skip Research)
357
+
358
+ These domains are well-understood in Rails and don't need web research:
359
+
360
+ | Domain | Key Patterns | Research Needed? |
361
+ |--------|-------------|-----------------|
362
+ | Models & Migrations | ActiveRecord, validations, associations, concerns | No |
363
+ | Controllers & Routes | RESTful resources, before_action, strong params | No |
364
+ | Views & Templates | ERB, partials, layouts, content_for | No |
365
+ | Authentication | has_secure_password, Devise, Rails 8 auth generator | No |
366
+ | Authorization | Pundit, CanCanCan, or hand-rolled | No |
367
+ | Background Jobs | Solid Queue, ActiveJob | No |
368
+ | Email | Action Mailer, letter_opener | No |
369
+ | File Uploads | Active Storage | No |
370
+ | Real-time | Action Cable, Turbo Streams | No |
371
+ | Testing | Minitest, fixtures, system tests | No |
372
+ | API Mode | Jbuilder, API-only controllers, token auth | No |
373
+ | Caching | Fragment caching, Russian doll, Solid Cache | No |
374
+ | Search | pg_search, Ransack | Maybe (depends on complexity) |
375
+ | Payments | Stripe, Pay gem | Yes (API details change) |
376
+ | External APIs | Third-party integrations | Yes (API-specific) |
377
+ | Novel Gems | Unfamiliar libraries | Yes |
378
+ | Infrastructure | Docker, Kamal, deployment | Maybe |
379
+
380
+ **Heuristic:** If all phase requirements map to "No" domains, skip research automatically. If any requirement maps to "Yes", consider `--research` flag.
381
+
382
+ </known_domains>
383
+
384
+ </rails_conventions>
@@ -14,9 +14,9 @@ Check if `--auto` flag is present in $ARGUMENTS.
14
14
  **If auto mode:**
15
15
  - Skip brownfield mapping offer (assume greenfield)
16
16
  - Skip deep questioning (extract context from provided document)
17
- - Config questions still required (Step 5)
17
+ - Skip config questions use opinionated defaults (Step 5)
18
18
  - After config: run Steps 6-9 automatically with smart defaults:
19
- - Research: Always yes
19
+ - Research: No (Rails conventions pre-loaded). Use `--auto --research` to force research.
20
20
  - Requirements: Include all table stakes + features from provided document
21
21
  - Requirements approval: Auto-approve
22
22
  - Roadmap approval: Auto-approve
@@ -215,129 +215,45 @@ mkdir -p .planning
215
215
  ariadna-tools commit "docs: initialize project" --files .planning/PROJECT.md
216
216
  ```
217
217
 
218
- ## 5. Workflow Preferences
218
+ ## 5. Workflow Configuration
219
219
 
220
- **Round 1 Core workflow settings (4 questions):**
220
+ **Use opinionated defaults. Only ask if user wants to customize.**
221
221
 
222
- ```
223
- questions: [
224
- {
225
- header: "Mode",
226
- question: "How do you want to work?",
227
- multiSelect: false,
228
- options: [
229
- { label: "YOLO (Recommended)", description: "Auto-approve, just execute" },
230
- { label: "Interactive", description: "Confirm at each step" }
231
- ]
232
- },
233
- {
234
- header: "Depth",
235
- question: "How thorough should planning be?",
236
- multiSelect: false,
237
- options: [
238
- { label: "Quick", description: "Ship fast (3-5 phases, 1-3 plans each)" },
239
- { label: "Standard", description: "Balanced scope and speed (5-8 phases, 3-5 plans each)" },
240
- { label: "Comprehensive", description: "Thorough coverage (8-12 phases, 5-10 plans each)" }
241
- ]
242
- },
243
- {
244
- header: "Execution",
245
- question: "Run plans in parallel?",
246
- multiSelect: false,
247
- options: [
248
- { label: "Parallel (Recommended)", description: "Independent plans run simultaneously" },
249
- { label: "Sequential", description: "One plan at a time" }
250
- ]
251
- },
252
- {
253
- header: "Git Tracking",
254
- question: "Commit planning docs to git?",
255
- multiSelect: false,
256
- options: [
257
- { label: "Yes (Recommended)", description: "Planning docs tracked in version control" },
258
- { label: "No", description: "Keep .planning/ local-only (add to .gitignore)" }
259
- ]
222
+ Apply these defaults directly to `.planning/config.json`:
223
+
224
+ ```json
225
+ {
226
+ "mode": "interactive",
227
+ "depth": "standard",
228
+ "parallelization": true,
229
+ "commit_docs": true,
230
+ "model_profile": "balanced",
231
+ "workflow": {
232
+ "research": false,
233
+ "plan_check": true,
234
+ "verifier": true
260
235
  }
261
- ]
236
+ }
262
237
  ```
263
238
 
264
- **Round 2Workflow agents:**
265
-
266
- These spawn additional agents during planning/execution. They add tokens and time but improve quality.
267
-
268
- | Agent | When it runs | What it does |
269
- |-------|--------------|--------------|
270
- | **Researcher** | Before planning each phase | Investigates domain, finds patterns, surfaces gotchas |
271
- | **Plan Checker** | After plan is created | Verifies plan actually achieves the phase goal |
272
- | **Verifier** | After phase execution | Confirms must-haves were delivered |
273
-
274
- All recommended for important projects. Skip for quick experiments.
239
+ **Ask ONE question only the non-obvious setting:**
275
240
 
276
241
  ```
277
242
  questions: [
278
243
  {
279
- header: "Research",
280
- question: "Research before planning each phase? (adds tokens/time)",
281
- multiSelect: false,
282
- options: [
283
- { label: "Yes (Recommended)", description: "Investigate domain, find patterns, surface gotchas" },
284
- { label: "No", description: "Plan directly from requirements" }
285
- ]
286
- },
287
- {
288
- header: "Plan Check",
289
- question: "Verify plans will achieve their goals? (adds tokens/time)",
290
- multiSelect: false,
291
- options: [
292
- { label: "Yes (Recommended)", description: "Catch gaps before execution starts" },
293
- { label: "No", description: "Execute plans without verification" }
294
- ]
295
- },
296
- {
297
- header: "Verifier",
298
- question: "Verify work satisfies requirements after each phase? (adds tokens/time)",
299
- multiSelect: false,
300
- options: [
301
- { label: "Yes (Recommended)", description: "Confirm deliverables match phase goals" },
302
- { label: "No", description: "Trust execution, skip verification" }
303
- ]
304
- },
305
- {
306
- header: "Model Profile",
307
- question: "Which AI models for planning agents?",
244
+ header: "Depth",
245
+ question: "How thorough should planning be?",
308
246
  multiSelect: false,
309
247
  options: [
310
- { label: "Balanced (Recommended)", description: "Sonnet for most agents good quality/cost ratio" },
311
- { label: "Quality", description: "Opus for research/roadmap higher cost, deeper analysis" },
312
- { label: "Budget", description: "Haiku where possible — fastest, lowest cost" }
248
+ { label: "Standard (Recommended)", description: "Balanced scope and speed (5-8 phases, 3-5 plans each)" },
249
+ { label: "Quick", description: "Ship fast (3-5 phases, 1-3 plans each)" },
250
+ { label: "Comprehensive", description: "Thorough coverage (8-12 phases, 5-10 plans each)" }
313
251
  ]
314
252
  }
315
253
  ]
316
254
  ```
317
255
 
318
- Create `.planning/config.json` with all settings:
319
-
320
- ```json
321
- {
322
- "mode": "yolo|interactive",
323
- "depth": "quick|standard|comprehensive",
324
- "parallelization": true|false,
325
- "commit_docs": true|false,
326
- "model_profile": "quality|balanced|budget",
327
- "workflow": {
328
- "research": true|false,
329
- "plan_check": true|false,
330
- "verifier": true|false
331
- }
332
- }
333
- ```
334
-
335
- **If commit_docs = No:**
336
- - Set `commit_docs: false` in config.json
337
- - Add `.planning/` to `.gitignore` (create if needed)
338
-
339
- **If commit_docs = Yes:**
340
- - No additional gitignore entries needed
256
+ Create `.planning/config.json` with the defaults above, applying the user's depth selection.
341
257
 
342
258
  **Commit config.json:**
343
259
 
@@ -345,24 +261,26 @@ Create `.planning/config.json` with all settings:
345
261
  ariadna-tools commit "chore: add project config" --files .planning/config.json
346
262
  ```
347
263
 
348
- **Note:** Run `/ariadna:settings` anytime to update these preferences.
264
+ **Note:** Run `/ariadna:settings` anytime to update these preferences (research, model profile, parallelization, etc.).
349
265
 
350
266
  ## 5.5. Resolve Model Profile
351
267
 
352
- Use models from init: `researcher_model`, `synthesizer_model`, `roadmapper_model`.
268
+ Use models from init: `roadmapper_model`.
353
269
 
354
270
  ## 6. Research Decision
355
271
 
356
- **If auto mode:** Default to "Research first" without asking.
272
+ **Default: Skip research.** Rails conventions are pre-loaded via `rails-conventions.md` reference document, which provides standard stack, architecture patterns, common pitfalls, and testing patterns.
357
273
 
358
- Use AskUserQuestion:
359
- - header: "Research"
360
- - question: "Research the domain ecosystem before defining requirements?"
361
- - options:
362
- - "Research first (Recommended)" — Discover standard stacks, expected features, architecture patterns
363
- - "Skip research" — I know this domain well, go straight to requirements
274
+ **If `--research` flag was passed or auto mode:** Run full research (see below).
364
275
 
365
- **If "Research first":**
276
+ **Otherwise:** Display skip notice and continue to Step 7:
277
+
278
+ ```
279
+ Using pre-loaded Rails conventions (stack, architecture, patterns, pitfalls).
280
+ To research instead: /ariadna:new-project --research
281
+ ```
282
+
283
+ **If research requested (`--research` flag or auto mode):**
366
284
 
367
285
  Display stage banner:
368
286
  ```
@@ -596,7 +514,7 @@ Display research complete banner and key findings:
596
514
  Files: `.planning/research/`
597
515
  ```
598
516
 
599
- **If "Skip research":** Continue to Step 7.
517
+ **If research not requested:** Continue to Step 7.
600
518
 
601
519
  ## 7. Define Requirements
602
520
 
@@ -769,6 +687,9 @@ Task(prompt="
769
687
  **Research (if exists):**
770
688
  @.planning/research/SUMMARY.md
771
689
 
690
+ **Rails Conventions (pre-loaded domain knowledge):**
691
+ @~/.claude/ariadna/references/rails-conventions.md
692
+
772
693
  **Config:**
773
694
  @.planning/config.json
774
695
 
@@ -780,8 +701,9 @@ Create roadmap:
780
701
  2. Map every v1 requirement to exactly one phase
781
702
  3. Derive 2-5 success criteria per phase (observable user behaviors)
782
703
  4. Validate 100% coverage
783
- 5. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
784
- 6. Return ROADMAP CREATED with summary
704
+ 5. Use Rails conventions reference for standard patterns and build order
705
+ 6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
706
+ 7. Return ROADMAP CREATED with summary
785
707
 
786
708
  Write files first, then return. This ensures artifacts persist even if context is lost.
787
709
  </instructions>
@@ -903,14 +825,15 @@ Present completion with next steps:
903
825
 
904
826
  **Phase 1: [Phase Name]** — [Goal from ROADMAP.md]
905
827
 
906
- /ariadna:discuss-phase 1 — gather context and clarify approach
828
+ /ariadna:plan-phase 1
907
829
 
908
830
  <sub>/clear first → fresh context window</sub>
909
831
 
910
832
  ---
911
833
 
912
834
  **Also available:**
913
- - /ariadna:plan-phase 1 — skip discussion, plan directly
835
+ - /ariadna:discuss-phase 1 — gather detailed context before planning (optional)
836
+ - /ariadna:plan-phase 1 --research — research before planning (for non-standard integrations)
914
837
 
915
838
  ───────────────────────────────────────────────────────────────
916
839
  ```
@@ -940,18 +863,18 @@ Present completion with next steps:
940
863
  - [ ] Brownfield detection completed
941
864
  - [ ] Deep questioning completed (threads followed, not rushed)
942
865
  - [ ] PROJECT.md captures full context → **committed**
943
- - [ ] config.json has workflow mode, depth, parallelization → **committed**
944
- - [ ] Research completed (if selected) — 4 parallel agents spawned → **committed**
945
- - [ ] Requirements gathered (from research or conversation)
866
+ - [ ] config.json has opinionated defaults → **committed**
867
+ - [ ] Research completed (only if `--research` flag) — 4 parallel agents spawned → **committed**
868
+ - [ ] Requirements gathered (from research or conversation, with Rails conventions as context)
946
869
  - [ ] User scoped each category (v1/v2/out of scope)
947
870
  - [ ] REQUIREMENTS.md created with REQ-IDs → **committed**
948
- - [ ] ariadna-roadmapper spawned with context
871
+ - [ ] ariadna-roadmapper spawned with context (including rails-conventions.md)
949
872
  - [ ] Roadmap files written immediately (not draft)
950
873
  - [ ] User feedback incorporated (if any)
951
874
  - [ ] ROADMAP.md created with phases, requirement mappings, success criteria
952
875
  - [ ] STATE.md initialized
953
876
  - [ ] REQUIREMENTS.md traceability updated
954
- - [ ] User knows next step is `/ariadna:discuss-phase 1`
877
+ - [ ] User knows next step is `/ariadna:plan-phase 1`
955
878
 
956
879
  **Atomic commits:** Each phase commits its artifacts immediately. If context is lost, artifacts persist.
957
880
 
@@ -1,11 +1,12 @@
1
1
  <purpose>
2
- Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification. Default flow: Research (if needed) -> Plan -> Verify -> Done. Orchestrates ariadna-phase-researcher, ariadna-planner, and ariadna-plan-checker agents with a revision loop (max 3 iterations).
2
+ Create executable phase prompts (PLAN.md files) for a roadmap phase. Default flow: Context (inline if needed) -> Plan -> Verify -> Done. Orchestrates ariadna-planner and ariadna-plan-checker agents. Research skipped by default (Rails conventions pre-loaded); use --research to force research for non-standard integrations.
3
3
  </purpose>
4
4
 
5
5
  <required_reading>
6
6
  Read all files referenced by the invoking prompt's execution_context before starting.
7
7
 
8
8
  @~/.claude/ariadna/references/ui-brand.md
9
+ @~/.claude/ariadna/references/rails-conventions.md
9
10
  </required_reading>
10
11
 
11
12
  <process>
@@ -26,7 +27,7 @@ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_
26
27
 
27
28
  ## 2. Parse and Normalize Arguments
28
29
 
29
- Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`).
30
+ Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--gaps`, `--skip-verify`, `--skip-context`).
30
31
 
31
32
  **If no phase number:** Detect next unplanned phase from roadmap.
32
33
 
@@ -45,21 +46,55 @@ PHASE_INFO=$(ariadna-tools roadmap get-phase "${PHASE}")
45
46
 
46
47
  **If `found` is false:** Error with available phases. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
47
48
 
48
- ## 4. Load CONTEXT.md
49
+ ## 4. Inline Context Gathering (Replaces discuss-phase)
49
50
 
50
51
  Use `context_content` from init JSON (already loaded via `--include context`).
51
52
 
52
- **CRITICAL:** Use `context_content` from INIT pass to researcher, planner, checker, and revision agents.
53
+ **If `context_content` is not null:** Display: `Using phase context from: ${PHASE_DIR}/*-CONTEXT.md` and skip to step 5.
53
54
 
54
- If `context_content` is not null, display: `Using phase context from: ${PHASE_DIR}/*-CONTEXT.md`
55
+ **If `context_content` is null AND no `--skip-context` flag:**
56
+
57
+ Analyze the phase goal from `roadmap_content` and determine if there are implementation decisions the user should weigh in on.
58
+
59
+ **Quick assessment — does this phase need context?**
60
+
61
+ - Pure infrastructure / setup / configuration → No context needed, skip
62
+ - Standard CRUD (models, controllers, views) → No context needed, skip
63
+ - User-facing features with UI/UX decisions → Context helpful
64
+ - Features with multiple valid approaches → Context helpful
65
+
66
+ **If context would be helpful:** Offer inline clarification with a single AskUserQuestion:
67
+
68
+ ```
69
+ questions: [
70
+ {
71
+ header: "Context",
72
+ question: "Phase {X}: {Name} has some implementation choices. Want to discuss them before planning?",
73
+ multiSelect: false,
74
+ options: [
75
+ { label: "Plan directly (Recommended)", description: "Planner will make reasonable choices, you review the plan" },
76
+ { label: "Quick discussion", description: "Clarify 2-3 key decisions inline" },
77
+ { label: "Full discussion", description: "Run /ariadna:discuss-phase for detailed context gathering" }
78
+ ]
79
+ }
80
+ ]
81
+ ```
82
+
83
+ - **"Plan directly":** Continue to step 5. Planner will use its judgment for ambiguous areas.
84
+ - **"Quick discussion":** Identify 2-3 key gray areas and ask focused AskUserQuestion for each. Write a lightweight CONTEXT.md to the phase directory. Then continue to step 5.
85
+ - **"Full discussion":** Exit and tell user to run `/ariadna:discuss-phase {X}` first, then return.
86
+
87
+ **CRITICAL:** Use `context_content` from INIT — pass to planner and checker agents.
55
88
 
56
89
  ## 5. Handle Research
57
90
 
58
- **Skip if:** `--gaps` flag, `--skip-research` flag, or `research_enabled` is false (from init) without `--research` override.
91
+ **Default: Skip research.** Rails conventions are pre-loaded via `rails-conventions.md`.
92
+
93
+ **Skip if:** `--gaps` flag, or `research_enabled` is false (default) without `--research` override.
59
94
 
60
95
  **If `has_research` is true (from init) AND no `--research` flag:** Use existing, skip to step 6.
61
96
 
62
- **If RESEARCH.md missing OR `--research` flag:**
97
+ **If `--research` flag explicitly passed:**
63
98
 
64
99
  Display banner:
65
100
  ```
@@ -179,6 +214,14 @@ IMPORTANT: If context exists below, it contains USER DECISIONS from /ariadna:dis
179
214
  **Gap Closure (if --gaps):** {verification_content} {uat_content}
180
215
  </planning_context>
181
216
 
217
+ <rails_context>
218
+ Use Rails conventions from your required reading (rails-conventions.md) for:
219
+ - Standard task decomposition patterns (model → migration+model+tests, controller → routes+controller+views+tests)
220
+ - Known domain detection (skip discovery for standard Rails work)
221
+ - Architecture patterns (MVC, concerns, service objects)
222
+ - Common pitfall prevention (N+1, mass assignment, fat controllers)
223
+ </rails_context>
224
+
182
225
  <downstream_consumer>
183
226
  Output consumed by /ariadna:execute-phase. Plans need:
184
227
  - Frontmatter (wave, depends_on, files_modified, autonomous)
@@ -248,7 +291,7 @@ IMPORTANT: Plans MUST honor user decisions. Flag as issue if plans contradict.
248
291
 
249
292
  <expected_output>
250
293
  - ## VERIFICATION PASSED — all checks pass
251
- - ## ISSUES FOUND — structured issue list
294
+ - ## ISSUES FOUND — structured issue list with severity (minor/major/blocker)
252
295
  </expected_output>
253
296
  ```
254
297
 
@@ -264,58 +307,65 @@ Task(
264
307
  ## 11. Handle Checker Return
265
308
 
266
309
  - **`## VERIFICATION PASSED`:** Display confirmation, proceed to step 13.
267
- - **`## ISSUES FOUND`:** Display issues, check iteration count, proceed to step 12.
268
-
269
- ## 12. Revision Loop (Max 3 Iterations)
310
+ - **`## ISSUES FOUND`:** Classify issues and proceed to step 12.
270
311
 
271
- Track `iteration_count` (starts at 1 after initial plan + check).
312
+ ## 12. Handle Checker Issues (Inline Fix, No Revision Loop)
272
313
 
273
- **If iteration_count < 3:**
314
+ **Classify each issue by severity:**
274
315
 
275
- Display: `Sending back to planner for revision... (iteration {N}/3)`
316
+ ### Minor Issues (orchestrator fixes inline)
317
+ Issues the orchestrator can fix directly with the Edit tool — no agent re-spawn needed:
318
+ - Missing requirement mapping in frontmatter
319
+ - Dependency ordering errors (wrong wave number)
320
+ - Missing `<verify>` or `<done>` elements in tasks
321
+ - Frontmatter field corrections
322
+ - must_haves adjustments
276
323
 
277
- ```bash
278
- PLANS_CONTENT=$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
324
+ **For minor issues:** Fix the PLAN.md files directly using the Edit tool:
325
+ ```
326
+ Read the PLAN.md file, apply the fix, write it back.
279
327
  ```
280
328
 
281
- Revision prompt:
282
-
283
- ```markdown
284
- <revision_context>
285
- **Phase:** {phase_number}
286
- **Mode:** revision
287
-
288
- **Existing plans:** {plans_content}
289
- **Checker issues:** {structured_issues_from_checker}
329
+ Display: `Fixed {N} minor issue(s) inline.`
290
330
 
291
- **Phase Context:**
292
- Revisions MUST still honor user decisions.
293
- {context_content}
294
- </revision_context>
331
+ ### Major Issues (present to user)
332
+ Issues that require architectural decisions or significant plan restructuring:
333
+ - Missing requirements with no clear task mapping
334
+ - Incorrect decomposition (tasks too large or wrong scope)
335
+ - Contradictions with user decisions from CONTEXT.md
336
+ - Scope creep (tasks implementing deferred ideas)
295
337
 
296
- <instructions>
297
- Make targeted updates to address checker issues.
298
- Do NOT replan from scratch unless issues are fundamental.
299
- Return what changed.
300
- </instructions>
338
+ **For major issues:** Present to user with AskUserQuestion:
339
+ ```
340
+ questions: [
341
+ {
342
+ header: "Plan Issues",
343
+ question: "The plan checker found {N} issue(s) that need your input. How to proceed?",
344
+ multiSelect: false,
345
+ options: [
346
+ { label: "Accept as-is", description: "Proceed despite issues" },
347
+ { label: "Re-plan", description: "Spawn planner again with issue context" },
348
+ { label: "Fix manually", description: "I'll edit the PLAN.md files myself" }
349
+ ]
350
+ }
351
+ ]
301
352
  ```
302
353
 
354
+ - **"Accept as-is":** Proceed to step 13.
355
+ - **"Re-plan":** Spawn planner in revision mode (single attempt, not a loop):
356
+
303
357
  ```
304
358
  Task(
305
- prompt="First, read ~/.claude/agents/ariadna-planner.md for your role and instructions.\n\n" + revision_prompt,
359
+ prompt="First, read ~/.claude/agents/ariadna-planner.md for your role and instructions.\n\n" + revision_prompt_with_issues,
306
360
  subagent_type="general-purpose",
307
361
  model="{planner_model}",
308
362
  description="Revise Phase {phase} plans"
309
363
  )
310
364
  ```
311
365
 
312
- After planner returns -> spawn checker again (step 10), increment iteration_count.
313
-
314
- **If iteration_count >= 3:**
315
-
316
- Display: `Max iterations reached. {N} issues remain:` + issue list
366
+ After planner returns, proceed to step 13 (no re-check loop).
317
367
 
318
- Offer: 1) Force proceed, 2) Provide guidance and retry, 3) Abandon
368
+ - **"Fix manually":** Display file paths and exit.
319
369
 
320
370
  ## 13. Present Final Status
321
371
 
@@ -337,8 +387,9 @@ Output this markdown directly (not as a code block):
337
387
  | 1 | 01, 02 | [objectives] |
338
388
  | 2 | 03 | [objective] |
339
389
 
340
- Research: {Completed | Used existing | Skipped}
341
- Verification: {Passed | Passed with override | Skipped}
390
+ Context: {Gathered inline | Used existing | Skipped}
391
+ Research: {Completed | Used existing | Skipped (Rails conventions loaded)}
392
+ Verification: {Passed | Passed with fixes | Skipped}
342
393
 
343
394
  ───────────────────────────────────────────────────────────────
344
395
 
@@ -363,14 +414,14 @@ Verification: {Passed | Passed with override | Skipped}
363
414
  - [ ] .planning/ directory validated
364
415
  - [ ] Phase validated against roadmap
365
416
  - [ ] Phase directory created if needed
366
- - [ ] CONTEXT.md loaded early (step 4) and passed to ALL agents
367
- - [ ] Research completed (unless --skip-research or --gaps or exists)
368
- - [ ] ariadna-phase-researcher spawned with CONTEXT.md
417
+ - [ ] Context handled: existing CONTEXT.md used, inline gathering offered, or skipped
418
+ - [ ] Research skipped by default (Rails conventions in context), or completed if --research flag
369
419
  - [ ] Existing plans checked
370
- - [ ] ariadna-planner spawned with CONTEXT.md + RESEARCH.md
420
+ - [ ] ariadna-planner spawned with rails-conventions + any CONTEXT.md + RESEARCH.md
371
421
  - [ ] Plans created (PLANNING COMPLETE or CHECKPOINT handled)
372
- - [ ] ariadna-plan-checker spawned with CONTEXT.md
373
- - [ ] Verification passed OR user override OR max iterations with user decision
422
+ - [ ] ariadna-plan-checker spawned (unless --skip-verify)
423
+ - [ ] Minor checker issues fixed inline by orchestrator (no revision loop)
424
+ - [ ] Major checker issues presented to user for decision
374
425
  - [ ] User sees status between agent spawns
375
426
  - [ ] User knows next steps
376
427
  </success_criteria>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ariadna:new-project
3
3
  description: Initialize a new project with deep context gathering and PROJECT.md
4
- argument-hint: "[--auto]"
4
+ argument-hint: "[--auto] [--research]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Bash
@@ -11,27 +11,29 @@ allowed-tools:
11
11
  ---
12
12
  <context>
13
13
  **Flags:**
14
- - `--auto` — Automatic mode. After config questions, runs research → requirements → roadmap without further interaction. Expects idea document via @ reference.
14
+ - `--auto` — Automatic mode. Skips config questions, runs requirements → roadmap without further interaction. Expects idea document via @ reference.
15
+ - `--research` — Force domain research (4 parallel researchers + synthesizer). By default, research is skipped and Rails conventions are pre-loaded.
15
16
  </context>
16
17
 
17
18
  <objective>
18
- Initialize a new project through unified flow: questioning → research (optional) requirements roadmap.
19
+ Initialize a new project through streamlined flow: questioning → requirements → roadmap. Research skipped by default (Rails conventions pre-loaded); use --research for non-standard domains.
19
20
 
20
21
  **Creates:**
21
22
  - `.planning/PROJECT.md` — project context
22
- - `.planning/config.json` — workflow preferences
23
- - `.planning/research/` — domain research (optional)
23
+ - `.planning/config.json` — workflow preferences (opinionated defaults)
24
+ - `.planning/research/` — domain research (only with --research flag)
24
25
  - `.planning/REQUIREMENTS.md` — scoped requirements
25
26
  - `.planning/ROADMAP.md` — phase structure
26
27
  - `.planning/STATE.md` — project memory
27
28
 
28
- **After this command:** Run `/ariadna:plan-phase 1` to start execution.
29
+ **After this command:** Run `/ariadna:plan-phase 1` to start planning.
29
30
  </objective>
30
31
 
31
32
  <execution_context>
32
33
  @~/.claude/ariadna/workflows/new-project.md
33
34
  @~/.claude/ariadna/references/questioning.md
34
35
  @~/.claude/ariadna/references/ui-brand.md
36
+ @~/.claude/ariadna/references/rails-conventions.md
35
37
  @~/.claude/ariadna/templates/project.md
36
38
  @~/.claude/ariadna/templates/requirements.md
37
39
  </execution_context>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ariadna:plan-phase
3
3
  description: Create detailed execution plan for a phase (PLAN.md) with verification loop
4
- argument-hint: "[phase] [--research] [--skip-research] [--gaps] [--skip-verify]"
4
+ argument-hint: "[phase] [--research] [--skip-research] [--gaps] [--skip-verify] [--skip-context]"
5
5
  agent: ariadna-planner
6
6
  allowed-tools:
7
7
  - Read
@@ -14,26 +14,28 @@ allowed-tools:
14
14
  - mcp__context7__*
15
15
  ---
16
16
  <objective>
17
- Create executable phase prompts (PLAN.md files) for a roadmap phase with integrated research and verification.
17
+ Create executable phase prompts (PLAN.md files) for a roadmap phase. Research skipped by default (Rails conventions pre-loaded). Includes optional inline context gathering (replaces separate discuss-phase step).
18
18
 
19
- **Default flow:** Research (if needed) → Plan → Verify → Done
19
+ **Default flow:** Context (inline if needed) → Plan → Verify → Done
20
20
 
21
- **Orchestrator role:** Parse arguments, validate phase, research domain (unless skipped), spawn ariadna-planner, verify with ariadna-plan-checker, iterate until pass or max iterations, present results.
21
+ **Orchestrator role:** Parse arguments, validate phase, offer inline context gathering, spawn ariadna-planner (with Rails conventions), verify with ariadna-plan-checker (single pass, inline fixes for minor issues), present results.
22
22
  </objective>
23
23
 
24
24
  <execution_context>
25
25
  @~/.claude/ariadna/workflows/plan-phase.md
26
26
  @~/.claude/ariadna/references/ui-brand.md
27
+ @~/.claude/ariadna/references/rails-conventions.md
27
28
  </execution_context>
28
29
 
29
30
  <context>
30
31
  Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omitted)
31
32
 
32
33
  **Flags:**
33
- - `--research` — Force re-research even if RESEARCH.md exists
34
- - `--skip-research` — Skip research, go straight to planning
34
+ - `--research` — Force research even if not enabled in config (for non-standard integrations)
35
+ - `--skip-research` — Skip research, go straight to planning (default behavior)
35
36
  - `--gaps` — Gap closure mode (reads VERIFICATION.md, skips research)
36
- - `--skip-verify` — Skip verification loop
37
+ - `--skip-verify` — Skip plan verification
38
+ - `--skip-context` — Skip inline context gathering, plan directly
37
39
 
38
40
  Normalize phase input in step 2 before any directory lookups.
39
41
  </context>
@@ -12,7 +12,7 @@ module Ariadna
12
12
  "branching_strategy" => "none",
13
13
  "phase_branch_template" => "ariadna/phase-{phase}-{slug}",
14
14
  "milestone_branch_template" => "ariadna/{milestone}-{slug}",
15
- "research" => true,
15
+ "research" => false,
16
16
  "plan_checker" => true,
17
17
  "verifier" => true,
18
18
  "parallelization" => true,
@@ -89,7 +89,7 @@ module Ariadna
89
89
  phase_branch_template: "ariadna/phase-{phase}-{slug}",
90
90
  milestone_branch_template: "ariadna/{milestone}-{slug}",
91
91
  workflow: {
92
- research: true,
92
+ research: false,
93
93
  plan_check: true,
94
94
  verifier: true
95
95
  },
@@ -210,6 +210,8 @@ module Ariadna
210
210
  key = key_match[2]
211
211
  value = key_match[3].strip
212
212
 
213
+ next unless current[:obj].is_a?(Hash)
214
+
213
215
  if value.empty? || value == "["
214
216
  current[:obj][key] = value == "[" ? [] : {}
215
217
  stack.push({ obj: current[:obj][key], key: nil, indent: indent })
@@ -1,3 +1,3 @@
1
1
  module Ariadna
2
- VERSION = "1.1.4"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ariadna
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jorge Alvarez
@@ -45,6 +45,7 @@ files:
45
45
  - data/ariadna/references/phase-argument-parsing.md
46
46
  - data/ariadna/references/planning-config.md
47
47
  - data/ariadna/references/questioning.md
48
+ - data/ariadna/references/rails-conventions.md
48
49
  - data/ariadna/references/tdd.md
49
50
  - data/ariadna/references/ui-brand.md
50
51
  - data/ariadna/references/verification-patterns.md