Skill detail
elicit
Run a structured discovery session to build an Allium specification through conversation. Use when the user wants to create a new spec from scratch, elicit or gather requirements, capture domain behaviour, specify a feature or system, define what a system should do, or is describing functionality…
Why we recommend it: Structured discovery/elicitation session to build specifications — directly matches BA elicitation and specify facets.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
--- name: elicit description: "Run a structured discovery session to build an Allium specification through conversation. Use when the user wants to create a new spec from scratch, elicit or gather requirements, capture domain behaviour, specify a feature or system, define what a system should do, or is describing functionality and needs help shaping it into a specification." --- # Elicitation This skill guides you through building Allium specifications by conversation. The goal is to surface ambiguities and produce a specification that captures what the software does without prescribing implementation. ## Scoping the specification Before diving into details, establish what you are specifying. Not everything needs to be in one spec. ### Questions to ask first **"What's the boundary of this specification?"** A complete system? A single feature area? One service in a larger system? Be explicit about what is in and out of scope. **"Are there areas we should deliberately exclude?"** Third-party integrations might be library specs. Legacy features might not be worth specifying. Some features might belong in separate specs. **"Is this a new system or does code already exist?"** If code exists, you are doing distillation with elicitation. Existing code constrains what is realistic to specify. ### Documenting scope decisions Capture scope at the start of every spec: ``` -- allium: 3 -- interview-scheduling.allium -- Scope: Interview scheduling for the hiring pipeline -- Includes: Candidacy, Interview, Slot management, Invitations, Feedback -- Excludes: -- - Authentication (use oauth library spec) -- - Payments (not applicable) -- - Reporting dashboards (separate spec) -- Dependencies: User entity defined in core.allium ``` The version marker (`-- allium: N`) must be the first line of every `.allium` file. Use the current language version number. ## Finding the right level of abstraction Too concrete and you are specifying implementation. Too abstract and you are not saying anything useful. ### The "Why" test For every detail, ask: "Why does the stakeholder care about this?" | Detail | Why? | Include? | |--------|------|----------| | "Users log in with Google OAuth" | They need to authenticate | Maybe not, "Users authenticate" might be sufficient | | "We support Google and Microsoft OAuth" | Users choose their provider | Yes, the choice is domain-level | | "Sessions expire after 24 hours" | Security/UX decision | Yes, affects user experience | | "Sessions are stored in Redis" | Performance | No, implementation detail | | "Passwords must be 12+ characters" | Security policy | Yes, affects users | | "Passwords are hashed with bcrypt" | Security implementation | No, how not what | ### The "Could it be different?" test Ask: "Could this be implemented differently while still being the same system?" - If yes, it is probably an implementation detail. Abstract it away. - If no, it is probably domain-level. Include it. Examples: - "Notifications sent via Slack". Could be email, SMS, etc. Abstract to `Notification.created(channel: ...)`. - "Interviewers must confirm within 3 hours". This specific deadline matters at the domain level. Include the duration. - "We use PostgreSQL". Could be any database. Do not include. - "Data is retained for 7 years for compliance". Regulatory requirement. Include. ### The "Template vs Instance" test Is this a category of thing, or a specific instance? | Instance (implementation) | Template (domain-level) | |---------------------------|-------------------------| | Google OAuth | Authentication provider | | Slack | Notification channel | | 15 minutes | Link expiry duration (configurable) | | Greenhouse ATS | External candidate source | Sometimes the instance IS the domain concern. "We specifically integrate with Salesforce" might be a competitive feature. "We support exactly these three OAuth providers" might be design scope. When in doubt, ask the stakeholder: "If we changed this,Read the full source on GitHub (opens external page)