Use when documenting a single feature without requiring the full product pipeline. Also triggers on 'feature brief', 'document feature', 'new feature', 'add feature', or when wanting to spec a standalone feature quickly.
From pmnpx claudepluginhub etusdigital/etus-plugins --plugin pmThis skill uses the workspace's default tool permissions.
knowledge/template.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
BEFORE asking anything in any module:
knowledge/elicitation-state.yamlReference: .claude/skills/orchestrator/dependency-graph.yaml
BLOCKS (required — auto-invoke if missing):
docs/ets/projects/{project-slug}/discovery/opportunity-pack.md — The feature brief now derives
from the ideation layer instead of raw conversation alone.docs/ets/projects/{project-slug}/features/{feature-slug}/solution-discovery.md — Feature definition should only happen after a solution direction is chosen and risks are reduced.docs/ets/projects/{project-slug}/features/{feature-slug}/feature-status.md — Canonical feature state. Use it to recover slug, tracking mode, next step, and linked upstream docs.ENRICHES (improves output — use if available):
docs/ets/projects/{project-slug}/state/coverage-matrix.yaml — Provides traceable coverage
for actors, JTBDs, journeys, use cases, edge cases, and assumptions.docs/ets/projects/{project-slug}/discovery/project-context.md — Provides business context, tech stack, and constraints that help frame the feature more accurately.docs/ets/projects/{project-slug}/discovery/product-vision.md — If the product already has a vision doc, BO-# objectives help align the feature with business goals.docs/ets/projects/{project-slug}/planning/prd.md — If a PRD exists, the feature can reference existing PRD-F-# items and avoid scope overlap.Resolution protocol:
Use full version when:
Use short version when:
Why this matters: The feature brief is the anchor document for Feature mode. Downstream skills (user-stories, design-delta, impl-plan) need this file on disk to read scope and acceptance criteria.
mkdir -p if neededdocs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.mdIf the Write fails: Report the error to the user and do not proceed to the next skill — downstream documents depend on this file existing.
This skill follows the ETUS interaction standard. Your role is a thinking partner, not an interviewer — suggest alternatives, challenge assumptions, and explore what-ifs instead of only extracting information.
One question per message — Ask one question, wait for the answer, then ask the next. Feature briefs benefit from focused answers. Use the AskUserQuestion tool when available for structured choices.
3-4 suggestions for choices — When the user needs to choose a direction, present 3-4 concrete options with a brief description of each. Highlight your recommendation. Let the user pick before proceeding.
Propose approaches before generating — Before generating any content section, propose 2-3 approaches with tradeoffs. For example, before defining scope: propose "narrow surgical scope" vs "broader scope with phases" vs "experimental/flagged scope."
Present output section-by-section — Do not generate the full feature brief at once. Present each major section (problem statement, feature description, target users, acceptance criteria, scope boundaries, design considerations), ask "Does this capture it well? Anything to adjust?" and only proceed after approval.
Track outstanding questions — If something cannot be answered now, classify it:
Multiple handoff options — At completion, present 3-4 next steps as options (see CLOSING SUMMARY).
Resume existing work — Before starting, check if the target artifact already exists at the expected path. If it does, ask the user: "I found an existing feature-brief at [path]. Should I continue from where it left off, or start fresh?" If resuming, read the document, summarize the current state, and continue from outstanding gaps.
Assess if full process is needed — If the user's input is already detailed with clear requirements, specific acceptance criteria, and defined scope, don't force the full interview. Confirm understanding briefly and offer to skip directly to document generation. Only run the full interactive process when there's genuine ambiguity to resolve.
This skill reads and writes persistent memory to maintain context across sessions.
On start (before any interaction):
docs/ets/.memory/project-state.md — know where the project isdocs/ets/.memory/decisions.md — don't re-question closed decisionsdocs/ets/.memory/preferences.md — apply user/team preferences silentlydocs/ets/.memory/patterns.md — apply discovered patternsOn finish (after saving artifact, before CLOSING SUMMARY):
project-state.md is updated automatically by the PostToolUse hook — do NOT edit it manually.python3 .claude/hooks/memory-write.py decision "<decision>" "<rationale>" "<this-skill-name>" "<phase>" "<tag1,tag2>"python3 .claude/hooks/memory-write.py preference "<preference>" "<this-skill-name>" "<category>"python3 .claude/hooks/memory-write.py pattern "<pattern>" "<this-skill-name>" "<applies_to>"The .memory/*.md files are read-only views generated automatically from memory.db. Never edit them directly.
Before generating content, challenge the framing with these questions (ask the most relevant 1-2, not all):
The goal is to sharpen the problem framing, not to block progress. If the user's framing is solid, acknowledge it and move on quickly. Only dig deeper when genuine misframing signals appear.
Document a single feature within an existing product without requiring the full Product mode pipeline. This is the lightweight alternative to a full PRD, but it now derives from the Opportunity Pack so that feature docs inherit actors, JTBDs, journeys, use cases, edge cases, constraints, and assumptions instead of rediscovering them from scratch.
Feature briefs are the entry point for Feature mode. They replace the need for project-context + product-vision + prd when the user just wants to spec one feature.
Load context in this order of priority:
docs/ets/projects/{project-slug}/features/{feature-slug}/feature-status.md first.docs/ets/projects/{project-slug}/discovery/opportunity-pack.md
first.docs/ets/projects/{project-slug}/features/{feature-slug}/solution-discovery.md.docs/ets/projects/{project-slug}/state/coverage-matrix.yaml if
it exists.[feature description], use it as
additional context.project-context.md,
product-vision.md, prd.md) to provide context without requiring them.This interview is 5 core questions, asked one at a time. Each question builds on the previous answer. Follow-up probes are optional and used only when the answer needs more depth.
"Tell me about a concrete situation where the user would need this feature. What did they try to do? Where did they get stuck?"
Follow-up probes (ask one at a time only if needed):
knowledge/story-probes.md for additional story-based probes.knowledge/vague-response-escalation.md for handling vague or generic answers."Who is the primary user of this feature? What's their role, and what frustrates them today?"
Follow-up probes:
"How will you know this feature is working? What does success look like — what should be true that isn't true today?"
Follow-up probes:
"What is this feature explicitly NOT doing? What should we resist adding?"
Follow-up probes:
Output format: Each non-goal identified in Q4 MUST be captured as a structured NG-# item:
### NG-1: [What NOT to do]
- **Statement:** [what must NOT happen — specific and testable]
- **Reason:** [why excluded]
- **Scope:** permanent | deferred_to_v2 | conditional
- **Adjacent behavior:** [valid functionality that neighbors this non-goal]
- **Downstream docs that must respect:** [user-stories, feature-spec, api-spec, tech-spec, wireframes, impl-plan — whichever apply]
Generate one NG-# per exclusion. Minimum 1 NG-# per feature brief. If the user says "nothing is out of scope," push back — every feature has boundaries.
"Are there any constraints — technical, timeline, design, or business — that affect how this should be built?"
Follow-up probes:
After completing the interview, assess complexity:
"This feature has significant scope — [N] acceptance criteria and [M] personas. This looks more like a product initiative than a single feature. Want to switch to full Product mode with
/orchestrator? Or should we continue with the feature brief?"
Honor the user's choice. The suggestion is informational, not blocking.
FB-# Pattern: Feature Brief items. Format: FB-1, FB-2, etc. Each FB-# represents a distinct behavior or capability within the feature.
The generated docs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.md follows the template in knowledge/template.md.
knowledge/template.md for the feature-brief document template and standard structure.knowledge/story-probes.md for story-based elicitation probes.knowledge/vague-response-escalation.md for vague-response patterns and escalation questions.Before marking this document as COMPLETE:
If any check fails → mark document as DRAFT with <!-- STATUS: DRAFT --> at top.
After saving and validating, display the summary and offer multiple next steps:
feature-brief.md saved to `docs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.md`
Status: [COMPLETE | DRAFT]
IDs generated: [list FB-# IDs, e.g., FB-1, FB-2]
What would you like to do next?
1. Create User Stories (Recommended) — Decompose this feature into testable stories (US-#)
2. Create Design Delta — Document what changes in the architecture for this feature
3. Go straight to implementation — Use /ce:work to start building
4. Refine this feature brief — Review and improve specific sections
5. Pause for now — Save and return later
Wait for the user's choice before proceeding. Do not auto-advance to the next skill.
$ARGUMENTS or user description + ENRICHES documents (if available)docs/ets/projects/{project-slug}/features/{feature-slug}/ — create if missingdocs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.md using the Write tooldocs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.md) + paths to upstream documents (docs/ets/projects/{project-slug}/features/{feature-slug}/solution-discovery.md, docs/ets/projects/{project-slug}/discovery/opportunity-pack.md)"Document saved to
docs/ets/projects/{project-slug}/features/{feature-slug}/feature-brief.md. The spec reviewer approved it. Please review and let me know if you want any changes before we proceed." Wait for the user's response. If they request changes, make them and re-run the spec review. Only proceed to validation after user approval.
| Error | Severity | Recovery | Fallback |
|---|---|---|---|
| No ENRICHES docs found | Low | Proceed without context — this is expected in Feature mode | None needed |
| User can't define acceptance criteria | Medium | Suggest 2-3 criteria based on the feature description | Proceed with user-confirmed suggestions |
| Auto-escalation threshold hit | Low | Suggest Product mode, honor user's choice | Continue with feature brief |
| Output validation fails | High | Mark as DRAFT, flag gaps | Proceed with DRAFT status |
| Slug collision (file already exists) | Medium | Ask user: overwrite or create new version? | Append -v2 suffix |
This skill supports iterative quality improvement when invoked by the orchestrator or user.
| Condition | Action | Document Status |
|---|---|---|
| Completeness >= 90% | Exit loop | COMPLETE |
| Improvement < 5% between iterations | Exit loop (diminishing returns) | DRAFT + notes |
| Max 3 iterations reached | Exit loop | DRAFT + iteration log |