Skip to content
Back to skills

Spec From Stream

ASecurity

Transforms a user's stream-of-consciousness description of a product idea, feature, or system into a structured specification package: BRD, SRS (ISO/IEC/IEEE 29148), NFR (ISO/IEC 25010), formatted as Obsidian notes. Can decompose documents into a Zettelkasten knowledge base. The agent uses the stream as a starting point, fills in what it can, then asks guided questions one at a time to close gaps. Works in any language the user writes in.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsgoapisecurityperformance

Works with

  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add bug-ops/claude-plugins --skill spec-from-stream --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spec From Stream?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Spec From Stream
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bug-ops-spec-from-stream/badge)](https://www.skillsdirectory.com/skills/bug-ops-spec-from-stream)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: spec-from-stream
description: >
  Transforms a user's stream-of-consciousness description of a product idea, feature, or system
  into a structured specification package: BRD, SRS (ISO/IEC/IEEE 29148), NFR (ISO/IEC 25010),
  formatted as Obsidian notes. Can decompose documents into a Zettelkasten knowledge base.
  The agent uses the stream as a starting point, fills in what it can, then asks guided
  questions one at a time to close gaps. Works in any language the user writes in.
when_to_use: >
  "I have an idea", "I want to build", "let me describe what I need", "turn this into a spec",
  "write requirements for this", "make a BRD from this", "SRS", "functional requirements",
  "non-functional requirements", "NFR", "decompose into notes", "make a vault", "knowledge base",
  or a messy description the user wants organized into actionable requirements.
---

# Spec from Stream

Transform unstructured product/feature descriptions into a structured specification package
formatted as Obsidian-compatible notes with dense cross-referencing.

## Before Starting

Read the reference files relevant to the requested output:

| Output | Reference file | When to read |
|--------|---------------|-------------|
| Always | `references/question-bank.md` | Before Phase 4 (gap-filling questions) |
| BRD | `references/brd-template.md` | Before Phase 5 |
| SRS | `references/srs-template.md` | Before Phase 5b (ISO/IEC/IEEE 29148:2018) |
| NFR | `references/nfr-template.md` | Before Phase 5b (ISO/IEC 25010:2011) |
| Vault | `references/vault-template.md` | Before Phase 6 (Zettelkasten decomposition) |

## Document Types

| Document | Standard | Purpose | Filename |
|----------|----------|---------|----------|
| **BRD** | — | WHAT to build and WHY (business perspective) | `BRD-{slug}-{date}.md` |
| **SRS** | ISO/IEC/IEEE 29148:2018 | HOW it works (functional spec, interfaces, verification) | `SRS-{slug}-{date}.md` |
| **NFR** | ISO/IEC 25010:2011 | Quality attributes (performance, security, reliability...) | `NFR-{slug}-{date}.md` |

Default output: BRD only. Generate SRS and/or NFR when explicitly requested or when
the project complexity warrants it (suggest to the user if appropriate).

## Workflow

### Phase 1: Intake

Accept the user's raw input — it can be:

- A stream-of-consciousness text dump
- A voice-transcription-style description
- A series of bullet points
- A conversation where the idea emerges gradually
- Even a single sentence ("I want an app that does X")

Do NOT ask clarifying questions yet. First, process what you have.

### Phase 2: Parse & Assess Coverage

Silently map the raw input onto the BRD template sections. For each section, assess:

- **GREEN**: Enough information to write a meaningful section
- **YELLOW**: Partial information — can be inferred but needs confirmation
- **RED**: Critical gap — cannot proceed without user input

Build an internal coverage map (do not show it to the user). Example:

```
Executive Summary    → GREEN
Problem Statement    → YELLOW (why not stated, inferred from context)
Target Users         → RED (not mentioned at all)
Functional Reqs      → YELLOW (high-level list, no acceptance criteria)
Non-Functional Reqs  → RED
Scope & Boundaries   → RED
Integrations         → GREEN
Constraints          → YELLOW
Success Criteria     → RED
```

### Phase 3: Present Draft & Start Dialogue

Present the user with a summary of what you understood:

1. Restate the core idea in 2-3 sentences (confirm you got it right)
2. List sections you CAN fill (GREEN) — briefly
3. List YELLOW sections with your assumptions
4. List RED sections as gaps that need input

Then immediately ask the **first** gap-filling question — pick the highest-priority RED gap
according to the Question Priority order in Phase 4.

### Phase 4: Guided Gap-Filling

Close RED and YELLOW gaps through a conversation.

#### Question Strategy

- **One question at a time** — never overwhelm with a list
- **Offer concrete options** — instead of open-ended "what's your target audience?", offer choices
- **Derive from context** — reference what the user already said
- **Suggest defaults** — propose typical solutions, let user override
- **Know when to stop** — if the user signals they're done (see `references/question-bank.md#Stop Signals`),
  move ALL remaining RED/YELLOW gaps to Open Questions and proceed to generation

#### Question Priority (most critical first)

1. **Problem & Users** — what problem, for whom
2. **Core functionality** — what the system must do (MVP)
3. **Boundaries** — what is explicitly NOT in scope
4. **Success criteria** — how to know it's done correctly
5. **Constraints** — deadlines, budget, team size, tech preferences
6. **Integrations** — external systems, APIs, data sources
7. **Non-functional requirements** — only if critical

#### Dialogue Style

- Match the user's language (Russian, English, etc.)
- Be conversational, not interrogative — you're a co-author, not an interviewer
- After each answer, briefly acknowledge it and ask the next question
- Treat the user as the domain expert — you're the structuring engine

### Phase 5: Generate BRD

Generate the BRD when one of these conditions is met:

1. All RED and YELLOW gaps are resolved
2. User sends a stop signal
3. User explicitly asks to generate the document

Read `references/brd-template.md` and generate the document following its structure exactly.

If RED sections remain unresolved, convert them into specific open questions
inside the `> [!question]` callout — never leave template placeholders.

Write the file and present it to the user.

### Phase 5b: Generate SRS and/or NFR (Optional)

Triggered when the user requests detailed requirements documents:
"сделай SRS", "functional requirements", "non-functional requirements", "NFR",
"full spec", "detailed requirements", "полный пакет документов".

Read the corresponding reference templates before generating:
- `references/srs-template.md` for SRS
- `references/nfr-template.md` for NFR

#### SRS Generation Rules

1. **Source**: extract from BRD Functional Requirements and Integrations sections
2. **Expand**: each BRD requirement becomes a detailed spec with rationale, acceptance criteria,
   dependencies, and traceability back to BRD
3. **Add interfaces**: derive from BRD integrations table
4. **Add verification**: create Verification Matrix and Traceability Matrix
5. **Standard**: follow ISO/IEC/IEEE 29148:2018 structure from template
6. **Language**: "shall" for mandatory, "should" for recommended, "may" for optional

#### NFR Generation Rules

1. **Source**: extract from BRD Non-Functional Requirements and Constraints sections
2. **Structure**: follow ISO/IEC 25010:2011 quality model — 8 characteristics
3. **Measurable**: every NFR must have a quantitative target and verification method
4. **Skip irrelevant**: omit categories that don't apply, but document WHY (`> [!note] Not Applicable`)
5. **Trade-offs**: define quality attribute priority order
6. **Gap-filling**: if BRD lacks NFR details, ask targeted questions (one at a time, with options)

#### Cross-Linking

All documents MUST be interlinked:

- BRD `related:` includes `"[[SRS-{slug}-{date}]]"` and `"[[NFR-{slug}-{date}]]"`
- SRS References section links to BRD and NFR
- NFR References section links to BRD and SRS
- Every SRS requirement has `Source: [[BRD-{slug}-{date}]], FR-NNN`
- SRS Traceability Matrix maps BRD → SRS → NFR requirement IDs

### Phase 6: Decompose into Obsidian Knowledge Base (Optional)

Triggered when the user requests decomposition:
"разбей на заметки", "сделай vault", "convert to knowledge base", "atomic notes".

Read `references/vault-template.md` and follow its instructions exactly.
Decompose ALL generated documents (BRD + SRS + NFR if present) into atomic notes.

---

## Obsidian Formatting Rules (Mandatory)

Every generated document MUST follow these rules:

### YAML Properties

- Every file starts with `---` delimited YAML frontmatter
- Required: `tags` (at least document type + domain tag), `created` (YYYY-MM-DD), `status`
- Recommended: `aliases`, `project`, `related`, `standard` (for SRS/NFR)
- Internal links in properties require quotes: `related: "[[other-note]]"`

### Callouts

| Type | Use for |
|------|---------|
| `> [!abstract]` | Document summary at the top |
| `> [!warning]` | Assumptions that need confirmation |
| `> [!danger]` | Explicit exclusions, breaking constraints |
| `> [!tip]` | Best practices, recommendations |
| `> [!question]` | Open questions, unresolved items |
| `> [!note]` | General supplementary information, "Not Applicable" sections |
| `> [!example]` | Usage examples, scenarios |
| `> [!info]` | Contextual background |

### Links

- Use `[[wikilinks]]` for references to related documents, specs, or project notes
- Link on first mention only — don't link every occurrence
- Use display text for readability: `[[long-document-name|short name]]`

### Tags

- Use nested tags for hierarchy: `#brd`, `#srs`, `#nfr`, `#domain/subdomain`
- Always add tags to YAML properties, not only inline
- Use lowercase-kebab-case for tags

### General

- One `# H1` title per document
- Code blocks with language annotations
- No raw URLs — use `[text](url)` format
- Tables for structured comparisons
- Task lists (`- [ ]`) for success criteria and open questions

---

## Language Policy

- **Conversation**: always in the user's language (detect from their first message)
- **All output documents**: always in **English**, regardless of conversation language
- This applies to: BRD, SRS, NFR, spec.md, plan.md, tasks.md, MOC, vault notes — everything
- Glossary terms may include the original-language term in parentheses
  if the English translation is ambiguous (e.g., "Counterparty (Контрагент)")
- Questions during gap-filling are asked in the user's language

## Interaction Style

- Be conversational during gap-filling, formal in output documents
- Don't lecture about "best practices" — just produce good documents
- If the user gives a one-liner, that's fine — more questions needed,
  but don't make them feel like their input was insufficient
- Treat the user as the domain expert — you're the structuring engine

Files in this skill

  • SKILL.md10.1 KB
  • references/brd-template.md3.9 KB
  • references/nfr-template.md11.1 KB
  • references/question-bank.md5.6 KB
  • references/srs-template.md7.3 KB
  • references/vault-template.md5.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…