odd-studio 1.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.
- package/.claude-plugin/plugin.json +19 -0
- package/README.md +229 -0
- package/bin/odd-studio.js +212 -0
- package/hooks/odd-destructive-guard.sh +98 -0
- package/hooks/odd-git-safety.sh +138 -0
- package/hooks/odd-outcome-quality.sh +84 -0
- package/hooks/odd-pre-build.sh +57 -0
- package/hooks/odd-session-save.sh +38 -0
- package/hooks/odd-ui-check.sh +69 -0
- package/package.json +43 -0
- package/scripts/install-skill.js +30 -0
- package/scripts/postinstall.js +28 -0
- package/scripts/scaffold-project.js +61 -0
- package/scripts/setup-hooks.js +105 -0
- package/skill/SKILL.md +464 -0
- package/skill/docs/build/build-protocol.md +532 -0
- package/skill/docs/kb/odd-kb.md +462 -0
- package/skill/docs/planning/build-planner.md +315 -0
- package/skill/docs/planning/outcome-writer.md +328 -0
- package/skill/docs/planning/persona-architect.md +258 -0
- package/skill/docs/planning/systems-mapper.md +270 -0
- package/skill/docs/ui/accessibility.md +415 -0
- package/skill/docs/ui/component-guide.md +356 -0
- package/skill/docs/ui/design-system.md +403 -0
- package/templates/.odd/state.json +16 -0
- package/templates/CLAUDE.md +93 -0
- package/templates/docs/contract-map.md +60 -0
- package/templates/docs/outcomes/.gitkeep +0 -0
- package/templates/docs/outcomes/example-outcome.md +104 -0
- package/templates/docs/personas/.gitkeep +0 -0
- package/templates/docs/personas/example-persona.md +108 -0
- package/templates/docs/plan.md +73 -0
- package/templates/docs/ui/.gitkeep +0 -0
|
File without changes
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
# EXAMPLE PERSONA — Read this, then delete this file and create your own
|
|
3
|
+
# Use /odd → *persona in Claude Code to build personas interactively
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rachel — Volunteer Coordinator
|
|
7
|
+
> Persona created with ODD Studio. Acid-test persona: YES.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Identity
|
|
12
|
+
Rachel is the sole volunteer coordinator for a regional food bank that runs weekly distribution events across three sites. She manages a roster of 140 active volunteers and coordinates 8–12 events per month. She reports to the operations director and works closely with site managers at each location.
|
|
13
|
+
|
|
14
|
+
She has been in this role for four years and knows most of her volunteers personally. She has never used dedicated volunteer management software — her current system is a shared Google Sheet and a WhatsApp group for each site.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Current Reality
|
|
19
|
+
A typical coordination week: Rachel checks the Google Sheet on Monday to see which upcoming shifts have gaps. She messages volunteers individually via WhatsApp to fill open spots, manually updating the sheet when someone confirms. By Thursday she usually has most shifts covered but is still chasing 3–5 people who haven't replied.
|
|
20
|
+
|
|
21
|
+
On event morning, she phones the site manager with the final roster. If a volunteer drops out that morning, she works through her phone contacts trying to find a replacement. She has never been able to produce an accessible record of each volunteer's certifications — she keeps notes in her head.
|
|
22
|
+
|
|
23
|
+
Her biggest frustration: spending 40% of her coordination time on communication admin rather than relationship-building.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Technical Context
|
|
28
|
+
- Primary device: iPhone 12. Does almost all coordination work on her phone.
|
|
29
|
+
- Desktop: work laptop (Windows), used mainly for email and the Google Sheet
|
|
30
|
+
- Connectivity: reliable mobile data, good wifi at the office
|
|
31
|
+
- Technical confidence: comfortable with common apps, resistant to learning complex systems, will abandon anything that requires more than a few minutes to understand
|
|
32
|
+
- Current tools: Google Sheets, WhatsApp, Gmail, Eventbrite (for public-facing signup)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Constraints
|
|
37
|
+
**Time:** Coordination is a part-time role (22 hours/week). She squeezes tasks into short windows — during her commute, between meetings, waiting to pick up her kids.
|
|
38
|
+
|
|
39
|
+
**Attention:** Rarely has uninterrupted time to use the system. Must be able to start an action, be interrupted, and return to it without losing progress.
|
|
40
|
+
|
|
41
|
+
**Access restrictions:** Rachel must not see volunteers' full home addresses — only their general area and emergency contact. DBS certificate status is visible to her; the full certificate details are not.
|
|
42
|
+
|
|
43
|
+
**Regulatory:** Volunteers under 18 require parental consent records. Certain activities (food handling, driving) require specific certifications that must be current.
|
|
44
|
+
|
|
45
|
+
**Cognitive load:** At peak times (event morning, Thursday evening before a Friday event) she is managing 6–8 simultaneous conversations and has zero tolerance for slow or confusing interfaces.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Trigger Patterns
|
|
50
|
+
**Routine (weekly, planned):** Monday morning. Reviewing next week's shifts. Calm, unhurried. Has time to think.
|
|
51
|
+
|
|
52
|
+
**Reactive (mid-week):** Filling specific gaps. A volunteer has cancelled. She needs to find a replacement quickly, filter by availability and certification, and send an assignment in under 2 minutes.
|
|
53
|
+
|
|
54
|
+
**Urgent (event morning):** Last-minute dropout. She needs the roster in front of her immediately, the ability to call a replacement from within the system, and confirmation that the site manager has been notified — all within 5 minutes.
|
|
55
|
+
|
|
56
|
+
**Administrative (monthly):** Reviewing volunteer hours and certifications. She has time and is sitting at a desktop.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Success Definition
|
|
61
|
+
A working week where she spends less than 2 hours on coordination admin and more than 4 hours on volunteer relationship-building and event preparation.
|
|
62
|
+
|
|
63
|
+
At a system level: she opens the app on Monday morning and sees exactly which shifts need filling, with a filtered list of available volunteers for each gap. She makes assignments in under 10 minutes. Volunteers receive automatic confirmations. She never has to chase a reply that the system could have handled.
|
|
64
|
+
|
|
65
|
+
She would recommend this system to another coordinator if: it works flawlessly on her phone, saves her at least 3 hours per week in the first month, and her volunteers find it easy to use.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Failure Tolerance
|
|
70
|
+
**During routine use:** Moderate. Will investigate if something doesn't work immediately. Will ask for help if stuck for more than 2 minutes.
|
|
71
|
+
|
|
72
|
+
**During reactive use:** Low. If the replacement-finding workflow requires more than 3 taps or takes more than 30 seconds to load, she will go back to WhatsApp.
|
|
73
|
+
|
|
74
|
+
**During urgent use:** Zero. If the system fails on event morning, she needs to be able to operate entirely without it. The system must never block her from doing her job manually.
|
|
75
|
+
|
|
76
|
+
**Consequence of system failure at worst moment:** A volunteer no-show that the site manager wasn't warned about. This has real operational consequences for the food bank's beneficiaries.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Paired Relationships
|
|
81
|
+
Rachel is paired with **Volunteers** (the people she coordinates) and **Site Managers** (who receive the rosters she produces).
|
|
82
|
+
|
|
83
|
+
**What Rachel sees that volunteers must NOT see:**
|
|
84
|
+
- Other volunteers' contact details, certifications, or availability patterns
|
|
85
|
+
- Internal notes about a volunteer's reliability history
|
|
86
|
+
- The full volunteer roster for an event (volunteers see only their own assignment)
|
|
87
|
+
|
|
88
|
+
**What site managers see that Rachel manages:**
|
|
89
|
+
- Full event roster with volunteer names, certifications, and contact details
|
|
90
|
+
- Dietary/accessibility requirements for event logistics
|
|
91
|
+
- They do NOT see the coordination history or volunteer correspondence
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Acid-Test Assessment
|
|
96
|
+
**Rachel is the acid-test persona.** Her constraint stack:
|
|
97
|
+
- Mobile-only for most use
|
|
98
|
+
- Time-pressured (short, interrupted windows)
|
|
99
|
+
- Must never be blocked from working manually
|
|
100
|
+
- Manages sensitive personal data with role-based restrictions
|
|
101
|
+
- Zero tolerance for slowness at urgent moments
|
|
102
|
+
- Regulatory obligations (DBS, certification currency)
|
|
103
|
+
|
|
104
|
+
If the system works for Rachel — under her constraints, across all her trigger patterns — it will work for every other persona in this system.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
*Build outcomes for Rachel first. If your outcomes pass Rachel's verification steps, everything downstream will hold.*
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Master Implementation Plan
|
|
2
|
+
> Generated by ODD Studio — Outcome-Driven Development
|
|
3
|
+
> Complete this in Claude Code using `/odd` → `*plan`
|
|
4
|
+
|
|
5
|
+
## Project Summary
|
|
6
|
+
_What this system is, who it is for, and what it makes possible. 2–3 sentences._
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## People This System Serves
|
|
11
|
+
_One line per persona: name, role, and the single most important constraint._
|
|
12
|
+
_Note the acid-test persona (most constrained user)._
|
|
13
|
+
|
|
14
|
+
| Persona | Role | Key Constraint | Acid-Test? |
|
|
15
|
+
|---------|------|---------------|------------|
|
|
16
|
+
| | | | |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Phase A — Foundation (Shared Infrastructure)
|
|
21
|
+
_What must be built before any outcome can work. Written in domain terms, not technical terms._
|
|
22
|
+
|
|
23
|
+
**What Phase A delivers:**
|
|
24
|
+
-
|
|
25
|
+
|
|
26
|
+
**Phase A verification milestone:**
|
|
27
|
+
_"Phase A is complete when I can [do specific thing] in my browser."_
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Phase B — [Name this by what it delivers]
|
|
32
|
+
_Outcomes in this phase and their dependencies._
|
|
33
|
+
|
|
34
|
+
**Outcomes:**
|
|
35
|
+
- [ ] **[Outcome Name]** — _one sentence description_
|
|
36
|
+
- [ ] **[Outcome Name]** — _one sentence description_
|
|
37
|
+
|
|
38
|
+
**Independent outcomes in this phase (can build in any order):**
|
|
39
|
+
-
|
|
40
|
+
|
|
41
|
+
**Phase B verification milestone:**
|
|
42
|
+
_"Phase B is complete when I can [do specific thing] in my browser."_
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Build Order — Why This Sequence
|
|
47
|
+
_Plain-language explanation a non-technical person can follow and explain to others._
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Integration Checkpoints
|
|
52
|
+
_The handshake tests that run at the end of each phase._
|
|
53
|
+
|
|
54
|
+
**End of Phase B:**
|
|
55
|
+
- [ ] _Make a [thing] in Outcome X. Check it appears correctly in Outcome Y._
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Current Status
|
|
60
|
+
|
|
61
|
+
| Phase | Status |
|
|
62
|
+
|-------|--------|
|
|
63
|
+
| Phase A — Foundation | ⬜ Not started |
|
|
64
|
+
| Phase B | ⬜ Not started |
|
|
65
|
+
|
|
66
|
+
**Last session:** —
|
|
67
|
+
**Next session:** —
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Session Handover Notes
|
|
72
|
+
_Most recent first. One line per session._
|
|
73
|
+
|
|
File without changes
|