Memstack Product Feature Spec logo

Memstack Product Feature Spec

Community
cwinvestments
memstack-product-feature-spec

Use this skill when the user says 'feature spec', 'spec this feature', 'write a spec', 'functional requirements', or needs a detailed specification for one feature with user flows, edge cases, API definitions, and acceptance criteria. Do NOT use for full PRDs or user story generation.

Overview

Publishercwinvestments
Repositorymemstack
Skill namememstack-product-feature-spec
Stars
425
Forks
45
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by cwinvestments on GitHub. Read the source before you install it.

Installation

Install the Memstack Product Feature Spec AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/cwinvestments/memstack/tree/master/skills/product/feature-spec
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/cwinvestments/memstack.git /tmp/memstack
mkdir -p .claude/skills
cp -r /tmp/memstack/skills/product/feature-spec .claude/skills/memstack-product-feature-spec
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Memstack Product Feature Spec in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Memstack Product Feature Spec on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Memstack Product Feature Spec is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Feature Spec: Writing feature specification...

Creates a detailed specification for a single feature including user story, acceptance criteria, user flows, edge cases, API definitions, dependencies, and effort estimate.

Activation

When this skill activates, output:

Feature Spec: Writing feature specification...

Then execute the protocol below.

Context Guard

ContextStatus
User says "feature spec", "spec this feature", "write a spec"ACTIVE
User says "functional requirements" for a specific featureACTIVE
User needs a detailed breakdown of ONE feature for engineeringACTIVE
User wants a full product requirements documentDORMANT: use PRD Writer
User wants multiple user stories for sprint planningDORMANT: use User Story Generator

Common Mistakes

MistakeWhy It's Wrong
"Spec the happy path only"Edge cases cause 80% of bugs. Spec them upfront or pay for them in QA.
"Skip the API contract"Frontend and backend need to agree on the contract before building in parallel.
"No acceptance criteria"Without testable criteria, "done" is subjective. Define done before starting.
"Spec the UI, not the behavior"UIs change. Behavior specs survive redesigns. Focus on what happens, not what it looks like.
"Forget to list what's out of scope"Ambiguity invites scope creep. Explicitly list what this feature does NOT include.

Protocol

Step 1: Gather Feature Context

If the user hasn't provided details, ask:

  1. Feature name: what are you building?
  2. User problem: what problem does this feature solve?
  3. Target user: which persona uses this feature?
  4. Context: is this part of a larger project? What already exists?
  5. Constraints: timeline, tech stack, or design constraints?

Step 2: Write Feature Brief

markdown
## Feature Brief

**Feature:** [Feature name]
**Owner:** [Product owner / author]
**Date:** [Date]
**Status:** [Draft / In Review / Approved]

### Summary
[2-3 sentences: what this feature does and why it matters]

### User Story
As a [persona], I want to [action] so that [outcome].

### Business Value
- [Why this matters for the business: revenue, retention, efficiency]
- [Metric this feature is expected to move]

### Scope
**In scope:**
- [Specific capability 1]
- [Specific capability 2]
- [Specific capability 3]

**Out of scope:**
- [Explicitly excluded capability 1]
- [Explicitly excluded capability 2]

Step 3: Define User Flows

Primary flow (happy path):

markdown
### Primary Flow: [Action Name]

**Entry point:** [Where/how the user accesses this feature]
**Preconditions:** [What must be true: logged in, has permission, etc.]

1. User [action: clicks, enters, selects]
   → System [response: shows, loads, validates]
2. User [action]
   → System [response]
3. User [action: confirms, submits]
   → System [response: saves, sends, updates]
4. User sees [confirmation: success message, updated state, redirect]

**Exit state:** [What the system looks like after completion]

Alternative flows:

markdown
### Alternative Flow: [Variation Name]

**Trigger:** [When this flow happens instead of the primary]

1. [Step that diverges from primary flow]
2. [How the system handles the variation]
3. [Where it rejoins the primary flow, or how it terminates]

Step 4: Document Edge Cases & Error States

#ScenarioExpected BehaviorPriority
E1User submits empty formShow inline validation errors on required fieldsMust handle
E2Network request failsShow error toast, preserve form state, offer retryMust handle
E3User double-clicks submitDisable button after first click, prevent duplicate submissionMust handle
E4Session expires during flowSave draft state, redirect to login, restore after authShould handle
E5Concurrent edit by another userShow conflict notification, offer merge or overwriteShould handle
E6Input exceeds character limitEnforce limit in UI, validate server-side, show remaining countMust handle
E7User navigates away with unsaved changesShow "Unsaved changes" confirmation dialogShould handle

Edge case discovery checklist:

  • What happens with empty/null input?
  • What happens with maximum-length input?
  • What happens with special characters or Unicode?
  • What happens if the user has no permission?
  • What happens offline or with slow network?
  • What happens with concurrent actions?
  • What happens if a dependency (API, service) is down?

Step 5: Define API Contract (if applicable)

markdown
### API Endpoints

#### POST /api/[resource]
**Purpose:** [What this endpoint does]
**Auth:** Required, [Bearer token / API key / session]
**Rate limit:** [X requests per minute]

**Request:**
```json
{
  "field1": "string (required): [description]",
  "field2": "number (optional): [description, default: X]",
  "field3": "enum (required): [allowed values: a, b, c]"
}

Response (200):

json
{
  "id": "string: [description]",
  "field1": "string",
  "createdAt": "ISO 8601 datetime"
}

Error responses:

StatusCodeMessageWhen
400VALIDATION_ERROR"field1 is required"Missing required field
401UNAUTHORIZED"Authentication required"No/invalid token
403FORBIDDEN"Insufficient permissions"User lacks permission
409CONFLICT"Resource already exists"Duplicate creation
429RATE_LIMITED"Too many requests"Rate limit exceeded

### Step 6: Write Acceptance Criteria

Use Given/When/Then format for each criterion:

```markdown
### Acceptance Criteria

**AC-1: [Primary happy path]**
Given [precondition]
When [user action]
Then [expected outcome]
And [additional verification]

**AC-2: [Validation]**
Given [precondition]
When [user submits invalid input]
Then [error message] is displayed
And [form state is preserved]

**AC-3: [Permission check]**
Given [user without permission]
When [user attempts action]
Then [access denied response]
And [appropriate error shown]

**AC-4: [Edge case]**
Given [edge condition]
When [action]
Then [graceful handling]

Acceptance criteria rules:

  • Write criteria for EVERY in-scope item (not just the happy path)
  • Each criterion must be independently testable
  • Include at least one criterion for: happy path, validation, error, and permission
  • QA should be able to write test cases directly from these criteria

Step 7: Estimate Effort & Dependencies

Effort estimate:

ComponentEffortConfidenceNotes
Frontend UI[X days]High/Med/Low[Notes]
Backend API[X days]High/Med/Low[Notes]
Database changes[X days]High/Med/Low[Notes]
Testing (unit + integration)[X days]High/Med/Low[Notes]
Code review + QA[X days]High/Med/Low[Notes]
Total[X days]

Dependencies:

DependencyOwnerStatusBlocking?
[Design mockups for X]Design[Done/In Progress/Not Started]Yes/No
[API from service Y]Backend team[Done/In Progress/Not Started]Yes/No
[Third-party SDK setup]DevOps[Done/In Progress/Not Started]Yes/No

Technical considerations:

  • [Any architectural decisions needed]
  • [Migration requirements]
  • [Performance implications]
  • [Security considerations]

Output Format

markdown
# Feature Spec: [Feature Name]

**Owner:** [Name]
**Date:** [Date]
**Status:** [Draft / In Review / Approved]
**Estimated effort:** [X days]

## 1. Feature Brief
[From Step 2: summary, user story, scope]

## 2. User Flows
### Primary Flow
[From Step 3]
### Alternative Flows
[From Step 3]

## 3. Edge Cases & Error States
[Table from Step 4]

## 4. API Contract
[From Step 5]

## 5. Acceptance Criteria
[From Step 6]

## 6. Effort & Dependencies
[From Step 7]

## 7. Open Questions
[Anything that needs design, engineering, or stakeholder input]

Completion

Feature Spec: Complete!

Feature: [Name]
User story: As a [persona], I want to [action] so that [outcome]
Acceptance criteria: [Count]
Edge cases documented: [Count]
API endpoints: [Count]
Estimated effort: [X days]

Next steps:
1. Review with engineering for technical feasibility
2. Review with design for UX validation
3. Get stakeholder approval on scope
4. Break into tasks/subtasks for sprint planning
5. Write unit tests based on acceptance criteria

Level History

  • Lv.1: Base: Feature brief template (summary, user story, scope), primary + alternative user flow documentation, edge case table with discovery checklist, API contract template (request, response, errors), Given/When/Then acceptance criteria, effort estimation table with confidence levels, dependency tracking. (Origin: MemStack Pro v3.2, Mar 2026)

Frequently asked questions

What does the Memstack Product Feature Spec AI skill do?

Use this skill when the user says 'feature spec', 'spec this feature', 'write a spec', 'functional requirements', or needs a detailed specification for one feature with user flows, edge cases, API definitions, and acceptance criteria. Do NOT use for full PRDs or user story generation.

Why use Memstack Product Feature Spec on TypingMind?

Because you install it once and use it with any model. Memstack Product Feature Spec is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Memstack Product Feature Spec in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/cwinvestments/memstack/tree/master/skills/product/feature-spec. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Memstack Product Feature Spec?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Memstack Product Feature Spec?

As many as you like. As long as a model supports skills, you can use Memstack Product Feature Spec with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Memstack Product Feature Spec AI skill free?

Yes. It is published on GitHub by cwinvestments under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇