ariadna 1.2.2 → 1.3.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: 926de51bbb2a1ecfe151263e631a8b56ad0d83cd2adb28c65dde071b3f04c1d3
4
- data.tar.gz: dc451d582a82b2664f1f10095fa3324965852f1fd4241caddfe80175b2d22c73
3
+ metadata.gz: a3292cf913eaab6a58897e041b3d334f63b8d7ed95591a291595cb43e1c108e4
4
+ data.tar.gz: 78026d0448227242095141f4dbf8f9583ceecd0c334912912b5d229638f34617
5
5
  SHA512:
6
- metadata.gz: 6a21f498978a0e020900c8c2c84ed5d8396c3c2f541e66d0835e8982d8244fe7b0f3767905825ad9083438dc945c23897e189b5254176ef976fa83e22ea09091
7
- data.tar.gz: 02b2b683e24525ee69f58cc54d57ef2aba13f70e0d4070fe2b0c7321a7dc7f34e85e37b9e371b7b773c3bf6c630f17efe6c5d08172e218937d3141c90263d561
6
+ metadata.gz: f6a9a7e4b55b6fe338a4c7135e8ddbc9b15c918a2152f20bfda7efeb4f195a2e8d09412f1a3c66acbd895609938be5b197a571bd14dff7de34b47f45ac96d553
7
+ data.tar.gz: 2c725bd9aa6a133b5421c2f5a84ebe3c8d3122ac02b41591f78489b626d5f1e1a9d6181b1765728bf01b9a1bd77719a59c038817e6b5f7e8fd6faee4b6d5fe8e
data/ariadna.gemspec CHANGED
@@ -4,9 +4,9 @@ Gem::Specification.new do |s|
4
4
  s.name = "ariadna"
5
5
  s.version = Ariadna::VERSION
6
6
  s.summary = "A meta-prompting and context engineering system for Claude Code"
7
- s.description = "Ariadna ports the GSD (Get Shit Done) system to Ruby, providing structured " \
8
- "planning, multi-agent orchestration, and verification workflows via Claude Code " \
9
- "slash commands."
7
+ s.description = "Ariadna helps you to create ruby on rails applications (or new features in existing ones)" \
8
+ "providing structured planning, multi-agent orchestration, and verification workflows " \
9
+ "via Claude Code slash commands."
10
10
  s.authors = ["Jorge Alvarez"]
11
11
  s.email = "jorge@alvareznavarro.es"
12
12
  s.homepage = "https://github.com/jorgegorka/ariadna"
@@ -460,7 +460,7 @@ Research is complete when:
460
460
 
461
461
  Quality indicators:
462
462
 
463
- - **Specific, not vague:** "Devise 4.9 with OmniAuth 2.1" not "use Devise"
463
+ - **Specific, not vague:** "Rails 8 auth generator with has_secure_password" not "add authentication"
464
464
  - **Verified, not assumed:** Findings cite Context7 or official docs
465
465
  - **Honest about gaps:** LOW confidence items flagged, unknowns admitted
466
466
  - **Actionable:** Planner could create tasks based on this research
@@ -562,6 +562,10 @@ Take phase goal from ROADMAP.md. Must be outcome-shaped, not task-shaped.
562
562
  - Good: "Working chat interface" (outcome)
563
563
  - Bad: "Build chat components" (task)
564
564
 
565
+ Also read the "Why this matters" line from ROADMAP.md for this phase. This tells you the PURPOSE behind the goal. Use it to prioritize truths: truths that directly serve the stated purpose are more critical than nice-to-haves.
566
+
567
+ Example: If "Why this matters" = "Users need identity before they can own content", then "User can create account" is more critical than "Password has strength indicator."
568
+
565
569
  **Step 2: Derive Observable Truths**
566
570
  "What must be TRUE for this goal to be achieved?" List 3-7 truths from USER's perspective.
567
571
 
@@ -16,6 +16,7 @@ Your job: Transform requirements into a phase structure that delivers the projec
16
16
 
17
17
  **Core responsibilities:**
18
18
  - Derive phases from requirements (not impose arbitrary structure)
19
+ - Connect phases to product vision (why each phase matters, not just what it delivers)
19
20
  - Validate 100% requirement coverage (no orphans)
20
21
  - Apply goal-backward thinking at phase level
21
22
  - Create success criteria (2-5 observable behaviors per phase)
@@ -29,6 +30,7 @@ Your ROADMAP.md is consumed by `/ariadna:plan-phase` which uses it to:
29
30
  | Output | How Plan-Phase Uses It |
30
31
  |--------|------------------------|
31
32
  | Phase goals | Decomposed into executable plans |
33
+ | Why this matters | Prioritize tasks that serve the phase's purpose |
32
34
  | Success criteria | Inform must_haves derivation |
33
35
  | Requirement mappings | Ensure plans cover phase scope |
34
36
  | Dependencies | Order plan execution |
@@ -79,6 +81,18 @@ Every v1 requirement must map to exactly one phase. No orphans. No duplicates.
79
81
  If a requirement doesn't fit any phase → create a phase or defer to v2.
80
82
  If a requirement fits multiple phases → assign to ONE (usually the first that could deliver it).
81
83
 
84
+ ## Phases Serve a Purpose
85
+
86
+ Each phase doesn't just deliver features — it advances the product toward its vision.
87
+
88
+ When identifying phases, check PROJECT.md for:
89
+ - **Who This Serves** — which user does this phase primarily serve?
90
+ - **Product Vision** — how does this phase advance toward the stated success outcome?
91
+
92
+ Write a "Why this matters" line for each phase that answers: "If we shipped only this phase and nothing else, what user problem would be better?"
93
+
94
+ Don't force it. If a phase is purely foundational (setup, CI/CD), "Why this matters" = "Enables everything that follows." That's honest and fine.
95
+
82
96
  </philosophy>
83
97
 
84
98
  <goal_backward_phases>
@@ -93,6 +107,16 @@ Take the phase goal from your phase identification. This is the outcome, not wor
93
107
  - Good: "Users can securely access their accounts" (outcome)
94
108
  - Bad: "Build authentication" (task)
95
109
 
110
+ **Step 1.5: State Why This Matters**
111
+ Using Who This Serves and Product Vision from PROJECT.md, write one sentence explaining why this phase matters to users or the product.
112
+
113
+ - Good: "Users need identity before they can own content or build reputation." (connects to user need)
114
+ - Good: "Content creation is the core value loop — without it, the product is empty." (connects to product vision)
115
+ - Bad: "Authentication is required for security." (technical justification, not user/business)
116
+ - Fine: "Enables everything that follows." (honest for foundational phases)
117
+
118
+ This becomes the "Why this matters" line in ROADMAP.md phase details.
119
+
96
120
  **Step 2: Derive Observable Truths (2-5 per phase)**
97
121
  List what users can observe/do when the phase completes.
98
122
 
@@ -289,8 +313,8 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings:
289
313
  Use template from `~/.claude/ariadna/templates/roadmap.md`.
290
314
 
291
315
  Key sections:
292
- - Overview (2-3 sentences)
293
- - Phases with Goal, Dependencies, Requirements, Success Criteria
316
+ - Overview (2-3 sentences + product vision one-liner + building for one-liner)
317
+ - Phases with Goal, Why This Matters, Dependencies, Requirements, Success Criteria
294
318
  - Progress table
295
319
 
296
320
  ## STATE.md Structure
@@ -353,8 +377,8 @@ Approve roadmap or provide feedback for revision.
353
377
  ## Step 1: Receive Context
354
378
 
355
379
  Orchestrator provides:
356
- - PROJECT.md content (core value, constraints)
357
- - REQUIREMENTS.md content (v1 requirements with REQ-IDs)
380
+ - PROJECT.md content (core value, who this serves, product vision, constraints)
381
+ - REQUIREMENTS.md content (v1 requirements with REQ-IDs and motivation clauses)
358
382
  - research/SUMMARY.md content (if exists - phase suggestions)
359
383
  - config.json (depth setting)
360
384
 
@@ -398,9 +422,10 @@ Apply phase identification methodology:
398
422
 
399
423
  For each phase, apply goal-backward:
400
424
  1. State phase goal (outcome, not task)
401
- 2. Derive 2-5 observable truths (user perspective)
402
- 3. Cross-check against requirements
403
- 4. Flag any gaps
425
+ 2. State why this matters (connects to users or product vision)
426
+ 3. Derive 2-5 observable truths (user perspective)
427
+ 4. Cross-check against requirements
428
+ 5. Flag any gaps
404
429
 
405
430
  ## Step 6: Validate Coverage
406
431
 
@@ -597,6 +622,7 @@ Roadmap is complete when:
597
622
  Quality indicators:
598
623
 
599
624
  - **Coherent phases:** Each delivers one complete, verifiable capability
625
+ - **Purpose-connected:** Each phase has a "why this matters" tied to users or product vision
600
626
  - **Clear success criteria:** Observable from user perspective, not implementation details
601
627
  - **Full coverage:** Every requirement mapped, no orphans
602
628
  - **Natural structure:** Phases feel inevitable, not arbitrary
@@ -124,30 +124,32 @@ Plans execute autonomously. Checkpoints formalize interaction points where human
124
124
  ```
125
125
 
126
126
  **Example: Auth Provider Selection**
127
+ Note: Only present this checkpoint if the user explicitly asks to evaluate auth gems. For new projects, default to `has_secure_password` (Rails 8 auth generator) without asking.
127
128
  ```xml
128
129
  <task type="checkpoint:decision" gate="blocking">
129
130
  <decision>Select authentication approach</decision>
130
131
  <context>
131
- Need user authentication for the app. Three solid options with different tradeoffs.
132
+ Need user authentication for the app. Rails built-in auth is the recommended default.
133
+ Only consider external gems if the user explicitly requests them.
132
134
  </context>
133
135
  <options>
136
+ <option id="has_secure_password">
137
+ <name>has_secure_password (built-in) — Recommended</name>
138
+ <pros>No dependencies, full control, simple and lightweight, easy to understand, Rails 8 auth generator scaffolds everything</pros>
139
+ <cons>More manual setup for advanced features (OAuth, 2FA)</cons>
140
+ </option>
134
141
  <option id="devise">
135
- <name>Devise</name>
136
- <pros>Most popular Rails auth gem, full-featured (registration, password reset, OAuth), well-maintained</pros>
142
+ <name>Devise (only if explicitly requested)</name>
143
+ <pros>Full-featured (registration, password reset, OAuth), well-maintained</pros>
137
144
  <cons>Heavy dependency, opinionated, can be hard to customize deeply</cons>
138
145
  </option>
139
- <option id="has_secure_password">
140
- <name>has_secure_password (built-in)</name>
141
- <pros>No dependencies, full control, simple and lightweight, easy to understand</pros>
142
- <cons>More manual setup, you build everything yourself (password reset, OAuth)</cons>
143
- </option>
144
146
  <option id="rodauth">
145
- <name>Rodauth</name>
147
+ <name>Rodauth (only if explicitly requested)</name>
146
148
  <pros>Security-focused, modular features, database-backed configuration, excellent 2FA</pros>
147
- <cons>Smaller community than Devise, different conventions, steeper learning curve</cons>
149
+ <cons>Smaller community, different conventions, steeper learning curve</cons>
148
150
  </option>
149
151
  </options>
150
- <resume-signal>Select: devise, has_secure_password, or rodauth</resume-signal>
152
+ <resume-signal>Select: has_secure_password (default), devise, or rodauth</resume-signal>
151
153
  </task>
152
154
  ```
153
155
 
@@ -314,20 +316,20 @@ Decision: Which auth approach should we use?
314
316
  Context: Need user authentication. Three options with different tradeoffs.
315
317
 
316
318
  Options:
317
- 1. devise - Full-featured auth gem, batteries included
319
+ 1. has_secure_password - Built-in Rails (Recommended)
320
+ Pros: No dependencies, full control, simple, Rails 8 auth generator scaffolds everything
321
+ Cons: More manual setup for advanced features (OAuth, 2FA)
322
+
323
+ 2. devise - Full-featured auth gem (only if explicitly requested)
318
324
  Pros: Registration, password reset, OAuth support, well-maintained
319
325
  Cons: Heavy dependency, opinionated, hard to customize deeply
320
326
 
321
- 2. has_secure_password - Built-in Rails, lightweight
322
- Pros: No dependencies, full control, simple and easy to understand
323
- Cons: More manual setup, build password reset and OAuth yourself
324
-
325
- 3. rodauth - Security-focused, modular
327
+ 3. rodauth - Security-focused, modular (only if explicitly requested)
326
328
  Pros: Excellent 2FA, database-backed config, modular features
327
329
  Cons: Smaller community, different conventions, steeper learning curve
328
330
 
329
331
  ────────────────────────────────────────────────────────
330
- → YOUR ACTION: Select devise, has_secure_password, or rodauth
332
+ → YOUR ACTION: Select has_secure_password (default), devise, or rodauth
331
333
  ────────────────────────────────────────────────────────
332
334
  ```
333
335
 
@@ -581,7 +583,7 @@ timeout 30 bash -c 'until curl -s localhost:3000 > /dev/null 2>&1; do sleep 1; d
581
583
  <task type="auto">
582
584
  <name>Create user model and migration</name>
583
585
  <files>app/models/user.rb, db/migrate/xxx_create_users.rb</files>
584
- <action>Generate User model with Devise or has_secure_password, run migration</action>
586
+ <action>Generate User model with has_secure_password (Rails 8 auth generator), run migration</action>
585
587
  <verify>bin/rails db:migrate succeeds, User.count returns 0</verify>
586
588
  </task>
587
589
 
@@ -64,6 +64,16 @@ Use these as inspiration, not a checklist. Pick what's relevant to the thread.
64
64
  - "How will you know this is working?"
65
65
  - "What does done look like?"
66
66
 
67
+ **Users — who this serves:**
68
+ - "Who's the person using this? Walk me through their day."
69
+ - "What are they doing right now without this?"
70
+ - "What would make them stop using this?"
71
+
72
+ **Bigger picture — where this is going:**
73
+ - "Is this the whole thing, or part of something bigger?"
74
+ - "What does success look like in 6 months?"
75
+ - "If this works perfectly, what do you do next?"
76
+
67
77
  </question_types>
68
78
 
69
79
  <using_askuserquestion>
@@ -102,10 +112,12 @@ Use this as a **background checklist**, not a conversation structure. Check thes
102
112
 
103
113
  - [ ] What they're building (concrete enough to explain to a stranger)
104
114
  - [ ] Why it needs to exist (the problem or desire driving it)
105
- - [ ] Who it's for (even if just themselves)
115
+ - [ ] Who it's for (what do they care about? what frustrates them?)
116
+ - [ ] What success looks like for the builder (what outcome makes this worth building?)
106
117
  - [ ] What "done" looks like (observable outcomes)
118
+ - [ ] What's the bigger picture (standalone tool? part of something larger? stepping stone?)
107
119
 
108
- Four things. If they volunteer more, capture it.
120
+ Six things. If they volunteer more, capture it.
109
121
 
110
122
  </context_checklist>
111
123
 
@@ -16,7 +16,7 @@ Pre-baked Rails knowledge for Ariadna planning and execution agents. This docume
16
16
  | Real-time UI | Turbo (Hotwire) | Turbo Drive, Frames, Streams |
17
17
  | JS Sprinkles | Stimulus (Hotwire) | Controllers for interactive behavior |
18
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 |
19
+ | Auth | Rails 8 built-in authentication (`has_secure_password` + auth generator) | No external gems needed |
20
20
  | Email | Action Mailer | Built-in |
21
21
  | File Upload | Active Storage | Built-in |
22
22
  | API | Rails API mode or Jbuilder | Built-in |
@@ -24,6 +24,9 @@ Pre-baked Rails knowledge for Ariadna planning and execution agents. This docume
24
24
  | Linting | RuboCop + rubocop-rails | Standard community linting |
25
25
 
26
26
  **What NOT to use (and why):**
27
+ - Devise unless explicitly requested by the user — Rails 8 auth generator + `has_secure_password` covers signup, login, password reset, session management out of the box
28
+ - Pundit/CanCanCan unless explicitly requested — `before_action` checks + `Current` context handle authorization for most apps without adding a gem
29
+ - acts_as_tenant — use `Current.account` scoping with explicit scopes (see backend guide); no gem needed for path-based multi-tenancy
27
30
  - Factories (FactoryBot) when fixtures suffice — fixtures are faster, declarative, and Rails-native
28
31
  - RSpec unless the project already uses it — Minitest is simpler and Rails-native
29
32
  - Webpacker/Shakapacker — replaced by importmap-rails or jsbundling-rails
@@ -32,6 +35,28 @@ Pre-baked Rails knowledge for Ariadna planning and execution agents. This docume
32
35
 
33
36
  </standard_stack>
34
37
 
38
+ <rails_defaults_first>
39
+
40
+ ## Rails Defaults First (Opinionated)
41
+
42
+ For new projects, ALWAYS start with Rails built-in solutions. Only introduce external gems when the user explicitly requests them or requirements demonstrably exceed what Rails provides.
43
+
44
+ | Need | Rails Default | External Gem (only if explicitly requested) |
45
+ |------|--------------|---------------------------------------------|
46
+ | Authentication | `has_secure_password` + Rails 8 auth generator | Devise |
47
+ | Authorization | `before_action` + `Current` context | Pundit, CanCanCan |
48
+ | Multi-tenancy | `Current.account` + explicit scoping | acts_as_tenant |
49
+ | Background Jobs | Solid Queue | Sidekiq |
50
+ | Caching | Solid Cache | Redis |
51
+ | WebSockets | Solid Cable | Redis + AnyCable |
52
+ | Testing | Minitest + fixtures | RSpec + FactoryBot |
53
+
54
+ **Why:** External gems add dependencies, upgrade burden, and conceptual overhead. Rails 8 ships with excellent defaults that cover 90% of use cases. Starting with built-ins keeps the app simple and maintainable.
55
+
56
+ **The rule:** Never recommend Devise, Pundit, acts_as_tenant, or similar gems as the default choice for new projects. If the user hasn't asked for them, use Rails built-ins. If the user asks for "authentication", build it with `has_secure_password`. If they ask for "authorization", use `before_action` checks. If they ask for "multi-tenancy", use `Current.account` scoping.
57
+
58
+ </rails_defaults_first>
59
+
35
60
  <architecture_patterns>
36
61
 
37
62
  ## Rails Architecture Patterns
@@ -369,8 +394,8 @@ These domains are well-understood in Rails and don't need web research:
369
394
  | Models & Migrations | ActiveRecord, validations, associations, concerns | No |
370
395
  | Controllers & Routes | RESTful resources, before_action, strong params | No |
371
396
  | Views & Templates | ERB, partials, layouts, content_for | No |
372
- | Authentication | has_secure_password, Devise, Rails 8 auth generator | No |
373
- | Authorization | Pundit, CanCanCan, or hand-rolled | No |
397
+ | Authentication | Rails 8 auth generator, has_secure_password | No |
398
+ | Authorization | before_action + Current context, hand-rolled | No |
374
399
  | Background Jobs | Solid Queue, ActiveJob | No |
375
400
  | Email | Action Mailer, letter_opener | No |
376
401
  | File Uploads | Active Storage | No |
@@ -214,7 +214,7 @@ Template for `.ariadna_planning/codebase/ARCHITECTURE.md` - captures conceptual
214
214
  - [Approach: e.g., "Rails authentication generator with `Authentication` concern", "has_secure_password with custom auth", "OmniAuth for OAuth"]
215
215
 
216
216
  **Authorization:**
217
- - [Approach: e.g., "Pundit policies", "CanCanCan abilities", "Custom `before_action` checks"]
217
+ - [Approach: e.g., "Custom `before_action` checks with `Current` context", "Pundit policies (if explicitly chosen)", "CanCanCan abilities (if explicitly chosen)"]
218
218
 
219
219
  **Caching:**
220
220
  - [Approach: e.g., "Fragment caching in views", "Russian doll caching", "Rails.cache with Solid Cache/Redis"]
@@ -123,7 +123,7 @@ Template for `.ariadna_planning/codebase/STACK.md` - captures the technology fou
123
123
 
124
124
  **Critical:**
125
125
  - authentication (built-in) — Session-based auth
126
- - authorization - custom implementation (no gem) — Role-based access control, pundit
126
+ - authorization - custom implementation (before_action + Current) — Role-based access control
127
127
  - solid_queue — Background jobs (Rails 8 default)
128
128
 
129
129
  **Infrastructure:**
@@ -17,6 +17,23 @@ Use the user's language and framing. Update whenever reality drifts from this de
17
17
  [The ONE thing that matters most. If everything else fails, this must work.
18
18
  One sentence that drives prioritization when tradeoffs arise.]
19
19
 
20
+ ## Who This Serves
21
+
22
+ [Who uses this and what they care about. Not formal personas — just enough
23
+ that downstream planning knows whose problem each feature solves.
24
+
25
+ Examples:
26
+ - **Solo creator** — Wants to publish without fighting tools. Cares about speed, not features.
27
+ - **Small team lead** — Needs visibility into what everyone's doing. Frustrated by status meetings.
28
+
29
+ If it's just you, say so: "Me — I want X because Y."]
30
+
31
+ ## Product Vision
32
+
33
+ - **Success means:** [The outcome that justifies the effort — "teams stop using spreadsheets", "I can charge $X/month", "my workflow drops from 2 hours to 10 minutes"]
34
+ - **Bigger picture:** [Is this standalone? Part of a platform? An experiment? A business?]
35
+ - **Not optimizing for:** [What you're deliberately NOT chasing — growth, scale, polish, monetization, etc.]
36
+
20
37
  ## Requirements
21
38
 
22
39
  ### Validated
@@ -83,6 +100,20 @@ Common types: Tech stack, Timeline, Budget, Dependencies, Compatibility, Perform
83
100
  - Drives prioritization when tradeoffs arise
84
101
  - Rarely changes; if it does, it's a significant pivot
85
102
 
103
+ **Who This Serves:**
104
+ - Informal user descriptions, not enterprise personas
105
+ - Focus on what they care about and what frustrates them
106
+ - "Me" is a valid answer if building for yourself
107
+ - Drives feature prioritization: which user does this feature serve?
108
+ - Updated when you learn more about actual users
109
+
110
+ **Product Vision:**
111
+ - The "why build this" beyond individual features
112
+ - Success means: measurable or observable outcome that justifies the work
113
+ - Bigger picture: product direction, not a detailed roadmap
114
+ - Not optimizing for: explicit de-priorities that prevent scope creep
115
+ - Rarely changes; if it does, revisit roadmap structure
116
+
86
117
  **Requirements — Validated:**
87
118
  - Requirements that shipped and proved valuable
88
119
  - Format: `- ✓ [Requirement] — [version/phase]`
@@ -138,8 +169,10 @@ PROJECT.md evolves throughout the project lifecycle.
138
169
  **After each milestone:**
139
170
  1. Full review of all sections
140
171
  2. Core Value check — still the right priority?
141
- 3. Audit Out of Scope reasons still valid?
142
- 4. Update Context with current state (users, feedback, metrics)
172
+ 3. Who This Serves still accurate? Update with real user feedback
173
+ 4. Product Vision success criteria met? Celebrate or revisit
174
+ 5. Audit Out of Scope — reasons still valid?
175
+ 6. Update Context with current state (users, feedback, metrics)
143
176
 
144
177
  </evolution>
145
178
 
@@ -16,21 +16,21 @@ Requirements for initial release. Each maps to roadmap phases.
16
16
 
17
17
  ### Authentication
18
18
 
19
- - [ ] **AUTH-01**: User can sign up with email and password
20
- - [ ] **AUTH-02**: User receives email verification after signup
21
- - [ ] **AUTH-03**: User can reset password via email link
22
- - [ ] **AUTH-04**: User session persists across browser refresh
19
+ - [ ] **AUTH-01**: User can sign up with email and password — *enables personalized experience*
20
+ - [ ] **AUTH-02**: User receives email verification after signup — *prevents spam accounts*
21
+ - [ ] **AUTH-03**: User can reset password via email link — *reduces support burden*
22
+ - [ ] **AUTH-04**: User session persists across browser refresh — *removes friction from daily use*
23
23
 
24
24
  ### [Category 2]
25
25
 
26
- - [ ] **[CAT]-01**: [Requirement description]
27
- - [ ] **[CAT]-02**: [Requirement description]
28
- - [ ] **[CAT]-03**: [Requirement description]
26
+ - [ ] **[CAT]-01**: [Requirement description] — *[why this matters]*
27
+ - [ ] **[CAT]-02**: [Requirement description] — *[why this matters]*
28
+ - [ ] **[CAT]-03**: [Requirement description] — *[why this matters]*
29
29
 
30
30
  ### [Category 3]
31
31
 
32
- - [ ] **[CAT]-01**: [Requirement description]
33
- - [ ] **[CAT]-02**: [Requirement description]
32
+ - [ ] **[CAT]-01**: [Requirement description] — *[why this matters]*
33
+ - [ ] **[CAT]-02**: [Requirement description] — *[why this matters]*
34
34
 
35
35
  ## v2 Requirements
36
36
 
@@ -79,8 +79,17 @@ Which phases cover which requirements. Updated during roadmap creation.
79
79
  **Requirement Format:**
80
80
  - ID: `[CATEGORY]-[NUMBER]` (AUTH-01, CONTENT-02, SOCIAL-03)
81
81
  - Description: User-centric, testable, atomic
82
+ - Motivation: brief "why" clause after em-dash — `— *reason this matters*`
82
83
  - Checkbox: Only for v1 requirements (v2 are not yet actionable)
83
84
 
85
+ **Requirement Motivation:**
86
+ - Each requirement gets a brief "why" clause: `— *reason this matters*`
87
+ - Connects features to user needs or business goals from Product Vision
88
+ - Helps the roadmapper understand WHY requirements cluster, not just WHAT they are
89
+ - Helps the verifier check "did we solve the problem?" not just "did we ship the feature?"
90
+ - Keep it short: one clause, italicized, after an em-dash
91
+ - Draw from Who This Serves and Product Vision in PROJECT.md
92
+
84
93
  **Categories:**
85
94
  - Derive from research FEATURES.md categories
86
95
  - Keep consistent with domain conventions
@@ -141,33 +150,33 @@ Which phases cover which requirements. Updated during roadmap creation.
141
150
 
142
151
  ### Authentication
143
152
 
144
- - [ ] **AUTH-01**: User can sign up with email and password
145
- - [ ] **AUTH-02**: User receives email verification after signup
146
- - [ ] **AUTH-03**: User can reset password via email link
147
- - [ ] **AUTH-04**: User session persists across browser refresh
153
+ - [ ] **AUTH-01**: User can sign up with email and password — *enables personalized experience*
154
+ - [ ] **AUTH-02**: User receives email verification after signup — *prevents spam accounts*
155
+ - [ ] **AUTH-03**: User can reset password via email link — *reduces support burden*
156
+ - [ ] **AUTH-04**: User session persists across browser refresh — *removes friction from daily use*
148
157
 
149
158
  ### Profiles
150
159
 
151
- - [ ] **PROF-01**: User can create profile with display name
152
- - [ ] **PROF-02**: User can upload avatar image
153
- - [ ] **PROF-03**: User can write bio (max 500 chars)
154
- - [ ] **PROF-04**: User can view other users' profiles
160
+ - [ ] **PROF-01**: User can create profile with display name — *gives users identity in the community*
161
+ - [ ] **PROF-02**: User can upload avatar image — *makes profiles recognizable*
162
+ - [ ] **PROF-03**: User can write bio (max 500 chars) — *enables self-expression and discovery*
163
+ - [ ] **PROF-04**: User can view other users' profiles — *supports finding people with shared interests*
155
164
 
156
165
  ### Content
157
166
 
158
- - [ ] **CONT-01**: User can create text post
159
- - [ ] **CONT-02**: User can upload image with post
160
- - [ ] **CONT-03**: User can edit own posts
161
- - [ ] **CONT-04**: User can delete own posts
162
- - [ ] **CONT-05**: User can view feed of posts
167
+ - [ ] **CONT-01**: User can create text post — *core content creation loop*
168
+ - [ ] **CONT-02**: User can upload image with post — *richer content drives engagement*
169
+ - [ ] **CONT-03**: User can edit own posts — *reduces friction of sharing (can fix mistakes)*
170
+ - [ ] **CONT-04**: User can delete own posts — *user controls their own content*
171
+ - [ ] **CONT-05**: User can view feed of posts — *content consumption is the primary activity*
163
172
 
164
173
  ### Social
165
174
 
166
- - [ ] **SOCL-01**: User can follow other users
167
- - [ ] **SOCL-02**: User can unfollow users
168
- - [ ] **SOCL-03**: User can like posts
169
- - [ ] **SOCL-04**: User can comment on posts
170
- - [ ] **SOCL-05**: User can view activity feed (followed users' posts)
175
+ - [ ] **SOCL-01**: User can follow other users — *builds the social graph that makes the feed work*
176
+ - [ ] **SOCL-02**: User can unfollow users — *user controls their experience*
177
+ - [ ] **SOCL-03**: User can like posts — *lightweight engagement signal*
178
+ - [ ] **SOCL-04**: User can comment on posts — *discussion is core to community value*
179
+ - [ ] **SOCL-05**: User can view activity feed (followed users' posts) — *personalized content keeps users returning*
171
180
 
172
181
  ## v2 Requirements
173
182
 
@@ -164,7 +164,7 @@ test/ # [test framework: Minitest (default) or spec/ if RSp
164
164
  ### Authentication and Authorization
165
165
 
166
166
  **Authentication:** [Rails authentication generator / has_secure_password / custom / other]
167
- **Authorization:** [Custom / Pundit / CanCanCan / Action Policy / other]
167
+ **Authorization:** [Custom (before_action + Current context) / Pundit (if explicitly requested) / other]
168
168
 
169
169
  ### Internationalization (I18n)
170
170
 
@@ -59,7 +59,7 @@ Template for `.ariadna_planning/research/STACK.md` — discovered technology sta
59
59
  | Category | Discovered Value | Evidence |
60
60
  |----------|-----------------|----------|
61
61
  | Authentication | [Rails authentication generator/Rodauth/Clearance/custom/none] | [Gemfile, user model] |
62
- | Authorization | [Custom/Pundit/CanCanCan/Action Policy/none] | [Gemfile, policy files] |
62
+ | Authorization | [Custom (before_action + Current) / Pundit (if explicitly requested) / none] | [Gemfile, policy files] |
63
63
  | OAuth/social login | [OmniAuth/Doorkeeper/none] | [Gemfile, initializers] |
64
64
  | API authentication | [API tokens/JWT/OAuth2/none] | [Gemfile, controller concerns] |
65
65
 
@@ -223,7 +223,7 @@ bin/rails server
223
223
 
224
224
  **Authentication & Authorization:**
225
225
  - Look for `Authentication` concern generated by `rails generate authentication`.
226
- - Look for `app/policies/` (Pundit) or `app/models/ability.rb` (CanCanCan) or custom authorization logic.
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
227
  - Check `app/models/user.rb` for authentication modules.
228
228
 
229
229
  **Testing:**
@@ -53,7 +53,7 @@ Template for `.ariadna_planning/research/SUMMARY.md` — executive summary of pr
53
53
 
54
54
  **Authentication & authorization:**
55
55
  - [Auth solution]: [purpose] — [why recommended — e.g., Rails authentication generator for session-based auth]
56
- - [Authorization]: [purpose] — [why recommended — e.g., before_action, Pundit for policies, Action Policy for scalable rules]
56
+ - [Authorization]: [purpose] — [why recommended — e.g., before_action + Current context (default), Pundit only if explicitly requested]
57
57
 
58
58
  **Additional gems:**
59
59
  - [Gem]: [purpose] — [why recommended]
@@ -11,6 +11,9 @@ Template for `.ariadna_planning/ROADMAP.md`.
11
11
 
12
12
  [One paragraph describing the journey from start to finish]
13
13
 
14
+ **Product vision:** [One-liner from PROJECT.md Product Vision — what success means]
15
+ **Building for:** [One-liner from PROJECT.md Who This Serves — who benefits]
16
+
14
17
  ## Phases
15
18
 
16
19
  **Phase Numbering:**
@@ -28,6 +31,7 @@ Decimal phases appear between their surrounding integers in numeric order.
28
31
 
29
32
  ### Phase 1: [Name]
30
33
  **Goal**: [What this phase delivers]
34
+ **Why this matters**: [How this serves users or advances the product vision — one sentence]
31
35
  **Depends on**: Nothing (first phase)
32
36
  **Requirements**: [REQ-01, REQ-02, REQ-03]
33
37
  **Success Criteria** (what must be TRUE):
@@ -43,6 +47,7 @@ Plans:
43
47
 
44
48
  ### Phase 2: [Name]
45
49
  **Goal**: [What this phase delivers]
50
+ **Why this matters**: [How this serves users or advances the product vision — one sentence]
46
51
  **Depends on**: Phase 1
47
52
  **Requirements**: [REQ-04, REQ-05]
48
53
  **Success Criteria** (what must be TRUE):
@@ -66,6 +71,7 @@ Plans:
66
71
 
67
72
  ### Phase 3: [Name]
68
73
  **Goal**: [What this phase delivers]
74
+ **Why this matters**: [How this serves users or advances the product vision — one sentence]
69
75
  **Depends on**: Phase 2
70
76
  **Requirements**: [REQ-06, REQ-07, REQ-08]
71
77
  **Success Criteria** (what must be TRUE):
@@ -80,6 +86,7 @@ Plans:
80
86
 
81
87
  ### Phase 4: [Name]
82
88
  **Goal**: [What this phase delivers]
89
+ **Why this matters**: [How this serves users or advances the product vision — one sentence]
83
90
  **Depends on**: Phase 3
84
91
  **Requirements**: [REQ-09, REQ-10]
85
92
  **Success Criteria** (what must be TRUE):
@@ -113,6 +120,14 @@ Phases execute in numeric order: 2 → 2.1 → 2.2 → 3 → 3.1 → 4
113
120
  - Progress table updated by execute workflow
114
121
  - Plan count can be "TBD" initially, refined during planning
115
122
 
123
+ **Why this matters:**
124
+ - One sentence connecting the phase to user needs or product vision
125
+ - Pulled from PROJECT.md Who This Serves and Product Vision
126
+ - NOT implementation justification ("we need auth before content")
127
+ - IS user/business justification ("users need identity before they can own content")
128
+ - Helps planner understand the phase's purpose, not just its scope
129
+ - For foundational phases, "Enables everything that follows" is honest and fine
130
+
116
131
  **Success criteria:**
117
132
  - 2-5 observable behaviors per phase (from user's perspective)
118
133
  - Cross-checked against requirements during roadmap creation
@@ -170,6 +185,7 @@ Plans:
170
185
 
171
186
  #### Phase 5: [Name]
172
187
  **Goal**: [What this phase delivers]
188
+ **Why this matters**: [How this serves users or advances the product vision — one sentence]
173
189
  **Depends on**: Phase 4
174
190
  **Plans**: 2 plans
175
191
 
@@ -630,6 +630,14 @@ Reject vague requirements. Push for specificity:
630
630
  - "Handle authentication" → "User can log in with email/password and stay logged in across sessions"
631
631
  - "Support sharing" → "User can share post via link that opens in recipient's browser"
632
632
 
633
+ **Requirement motivation:**
634
+
635
+ Each requirement should include a brief "why" clause connecting it to Who This Serves or Product Vision from PROJECT.md:
636
+ - `User can reset password via email link — *reduces support burden*`
637
+ - `User can create text post — *core content creation loop*`
638
+ - Draw the "why" from the user descriptions and product vision captured earlier
639
+ - If the "why" is obvious, it's still worth stating — it helps the roadmapper cluster phases by purpose
640
+
633
641
  **Present full requirements list (interactive mode only):**
634
642
 
635
643
  Show every requirement (not counts) for user confirmation:
@@ -638,13 +646,13 @@ Show every requirement (not counts) for user confirmation:
638
646
  ## v1 Requirements
639
647
 
640
648
  ### Authentication
641
- - [ ] **AUTH-01**: User can create account with email/password
642
- - [ ] **AUTH-02**: User can log in and stay logged in across sessions
643
- - [ ] **AUTH-03**: User can log out from any page
649
+ - [ ] **AUTH-01**: User can create account with email/password — *enables personalized experience*
650
+ - [ ] **AUTH-02**: User can log in and stay logged in across sessions — *removes friction from daily use*
651
+ - [ ] **AUTH-03**: User can log out from any page — *user controls their session*
644
652
 
645
653
  ### Content
646
- - [ ] **CONT-01**: User can create posts with text
647
- - [ ] **CONT-02**: User can edit their own posts
654
+ - [ ] **CONT-01**: User can create posts with text — *core content creation loop*
655
+ - [ ] **CONT-02**: User can edit their own posts — *reduces friction of sharing*
648
656
 
649
657
  [... full list ...]
650
658
 
@@ -1,3 +1,3 @@
1
1
  module Ariadna
2
- VERSION = "1.2.2"
2
+ VERSION = "1.3.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.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jorge Alvarez
@@ -9,9 +9,9 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
- description: Ariadna ports the GSD (Get Shit Done) system to Ruby, providing structured
13
- planning, multi-agent orchestration, and verification workflows via Claude Code
14
- slash commands.
12
+ description: Ariadna helps you to create ruby on rails applications (or new features
13
+ in existing ones)providing structured planning, multi-agent orchestration, and verification
14
+ workflows via Claude Code slash commands.
15
15
  email: jorge@alvareznavarro.es
16
16
  executables:
17
17
  - ariadna