Best for
- At the start of BUILD or ARCHITECT workflows, after codebase-scan and elicitation. The elicitation output (from quick-elicit or deep-elicit) becomes the raw input for a structured spec.
xoai/sage/core/capabilities/planning/specify/SKILL.md
Structures elicitation output into a formal specification defining WHAT to build and WHY. Use after quick-elicit or deep-elicit completes, or when the user provides requirements and says "write a spec", "define requirements", "create a PRD", or "specify this feature".
Decision brief
Define WHAT to build and WHY — without deciding HOW (technology choices).
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/xoai/sage --skill "core/capabilities/planning/specify"Inspect the Agent Skill "specify" from https://github.com/xoai/sage/blob/6ddd558bc41c0f1024ed79948370f9c15abd8c43/core/capabilities/planning/specify/SKILL.md at commit 6ddd558bc41c0f1024ed79948370f9c15abd8c43. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Before running elicitation, check if a PRD already exists for this initiative:
Input: Quick-elicit output (intent + boundaries + acceptance criteria)
Every spec declares what it produces. Infer this from context:
At the start of BUILD or ARCHITECT workflows, after codebase-scan and elicitation. The elicitation output (from quick-elicit or deep-elicit) becomes the raw input for a structured spec.
Input: Quick-elicit output (intent + boundaries + acceptance criteria)
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 93/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 26 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Define WHAT to build and WHY — without deciding HOW (technology choices).
Core Principle: Specifications are the source of truth. Code serves the spec, not the other way around. A clear spec prevents more bugs than any testing framework. The same spec can produce multiple implementations on different branches.
Every spec declares what it produces. Infer this from context:
Deliverable: code | document | mixed
Code: The output is source code — components, APIs, scripts, configs. This is the default. The plan will use TDD, implementation, commits, and full quality gates.
Document: The output is a written artifact — a PRD, competitive analysis, strategy doc, content brief, report. The plan will use drafting, review against criteria, and checklist verification. No TDD, no code gates.
Mixed: Some tasks produce code, some produce documents. A site audit produces a findings document; the fixes produce code. The plan marks each task with its type and applies the appropriate workflow per task.
How to infer: if the user says "write", "draft", "analyze", "research", "audit", "create a document/report/brief/PRD" → likely document. If they say "build", "implement", "add", "fix", "create a feature/page/component" → likely code. If they say "audit and fix", "research then implement" → likely mixed. When unclear, ask.
At the start of BUILD or ARCHITECT workflows, after codebase-scan and elicitation. The elicitation output (from quick-elicit or deep-elicit) becomes the raw input for a structured spec.
Before running elicitation, check if a PRD already exists for this initiative:
.sage/work/<YYYYMMDD>-<slug>/brief.md.sage/docs/ for briefs that cover this workIf a PRD exists → PRD-to-Spec path (skip elicitation):
The PRD already defines WHAT to build and WHY. The specify skill's job becomes: translate the PRD into a technical spec that defines HOW.
Load the PRD. Read the requirements (job stories R1-RN), functional requirements (FR1-FRN), acceptance scenarios, constraints, and dependencies.
Resolve open questions. The PRD's ⚠️ NEEDS CLARIFICATION markers (Q1-QN) are engineering decisions that must be resolved before implementation. For each open question:
.sage/docs/Design the technical architecture. For each PRD requirement, determine:
Map "Delivers value independently" to milestones. Requirements marked "Yes" in the PRD's "Shippable Alone?" column become natural milestone boundaries. Requirements marked "No" (foundational) come first. The spec should note the milestone structure for the plan skill to consume.
Write the spec using the standard template but with:
Show to human for approval. "Here's the technical spec based on the PRD. I've resolved the open questions as follows: [summary]. The component map traces every requirement to its implementation. Ready to plan?"
If no PRD exists → standard elicitation path (current behavior):
Proceed with BUILD or ARCHITECT mode elicitation as described below.
Input: Quick-elicit output (intent + boundaries + acceptance criteria)
Structure the elicitation output into the minimal spec template:
Check against constitution — does any requirement conflict with project principles? If so, flag the conflict and ask the human to resolve.
Save to .sage/work/<YYYYMMDD>-<slug>/spec.md
Show to human for final approval: "Here's the spec. Ready to plan, or adjustments needed?"
Use the full spec template. Guide the human through:
Problem Statement: What problem exists? Who has it? How painful is it? Use Socratic questioning — ask WHY until you reach the real problem.
User Personas: Who are the distinct users? What are their goals, constraints, and pain points? Push for specificity — "users" is not a persona.
User Stories: For each persona, what stories describe their interactions? Format: "As [persona], I want to [action] so that [outcome]."
Functional Requirements: What must the system do? Be explicit and testable. Each requirement gets a unique ID for traceability.
Non-Functional Requirements: Performance, security, scalability, accessibility, compliance. Pull from the constitution — many of these are already defined there.
Boundaries: What is explicitly OUT of scope? What will NOT be built? This prevents scope creep during implementation.
Success Metrics: How will we know this worked? Quantitative where possible.
Risks: What could go wrong? What assumptions are we making?
Present each section for validation before proceeding to the next. The human must approve each section — don't rush through to get to implementation.
Save to .sage/work/<YYYYMMDD>-<slug>/spec.md (or .sage/specs/brief.md for
project-level briefs).
Frequently asked questions
Define WHAT to build and WHY — without deciding HOW (technology choices).
The source record exposes this install command: npx skills add https://github.com/xoai/sage --skill "core/capabilities/planning/specify". Inspect the command and pinned source before running it.