Requirements Scoping logo

Requirements Scoping

Organization
proyecto26
requirements-scoping

This skill should be used when the user needs to "clarify requirements", separate "functional vs non-functional requirements", "scope the problem", figure out "what questions should I ask", state the "requirements for <X>", or otherwise pin down a vague design prompt before building. It turns an ambiguous ask into functional requirements, non-functional constraints, and an explicit out-of-scope. Use it whenever a prompt is broad or under-specified ("design Twitter", "build a chat app") even if the user doesn't say "requirements".

Overview

Publisherproyecto26
Repositorysystem-design-skills
Skill namerequirements-scoping
Stars
117
Forks
14
Bundled files
1
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.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

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

Installation

Install the Requirements Scoping 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/proyecto26/system-design-skills/tree/main/skills/requirements-scoping
  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/proyecto26/system-design-skills.git /tmp/system-design-skills
mkdir -p .claude/skills
cp -r /tmp/system-design-skills/skills/requirements-scoping .claude/skills/requirements-scoping
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Requirements Scoping 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 Requirements Scoping 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 Requirements Scoping 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.

Requirements Scoping

Turn a vague prompt ("design a news feed") into three written lists: what the system does (functional requirements), the numbers and qualities that shape it (non-functional constraints), and what is deliberately excluded (out-of-scope). Skipping this step is the most common way a design goes wrong — it ends up solving a different problem than the one in front of it, and every later decision rests on an unchecked assumption. The discipline is not about being slow; it is about making the problem concrete enough that the design choices have something to be measured against. Without it, every component is a guess, and the first hard follow-up question collapses the whole picture.

When to reach for this

At step 1 of any design, before drawing a single box or naming a single tool. Any time the ask is broad ("design YouTube"), ambiguous ("a real-time system"), or silent on scale, consistency, or audience. Reach for it again mid-design when a new constraint appears that may invalidate an earlier assumption — a re-scope is cheaper than a rebuild. The clearest signal is the reflex to reach for a familiar architecture before being able to state, in one sentence, what problem it solves here. That reflex is exactly the trap: applying a remembered solution to a prompt no one has actually read.

When NOT to

Don't interrogate forever. The goal is enough clarity to choose a first hypothesis, not a complete spec — three to five sharp questions usually suffice, with written assumptions for the rest. Don't gold-plate scope: every accepted feature is one to design and defend, so push the nice-to-haves into out-of-scope (YAGNI). And don't re-scope on every challenge; distinguish a genuine constraint change from a clarifying nudge.

Clarify first

The questions that change the design the most, asked in rough priority order:

  • Who uses it and how? Audience (consumer/internal/B2B), client (mobile, web, both), and the one or two core user journeys. This bounds everything else.
  • What are the must-have features? Force a ranked shortlist; the long tail is out-of-scope until the core works.
  • What scale? DAU/MAU, growth horizon (3/6/12 months), read:write ratio, object sizes. These are the inputs back-of-the-envelope turns into QPS and storage — capture them here, quantify there.
  • What latency and availability targets? A p99 number and a nines target, tied to the journey (a feed read vs a payment differ).
  • How fresh must data be, and how bad is loss? Strong vs eventual consistency and durability expectations drive the hardest later trade-offs; capture the requirement (can a read be stale? can a recent write be lost?) here, and leave the consistency-model theory to consistency-coordination.

If the user can't answer, state an assumption out loud and move on ("assuming 10M DAU, read-heavy, eventual consistency is fine") — written assumptions are revisable; silent ones are landmines. Capture each answer in the actual words used ("up to 5,000 friends", "must survive a region loss"): a stray detail now often turns out to be the constraint that forces a structural choice later.

The method (recipe)

A repeatable pass from prompt to scoped problem:

  1. Restate the prompt in one sentence. "A service where users post short messages and read a reverse-chronological feed of people they follow." This surfaces hidden assumptions immediately and gets early buy-in.
  2. List functional requirements as user-visible capabilities, verb-first: post a message, follow a user, view a feed, search. These answer "what does the system do" — each is an action an actor can take. Keep them testable and free of implementation ("store in a DB" is not a requirement; "view a feed" is).
  3. Rank and cut to the core. Pick the two or three that define the product. Explicitly defer the rest — deferral is a decision, not an omission. The core is what the design lives or dies by; everything else can be a follow-up.
  4. Derive non-functional constraints from the clarifying answers. Where functional requirements say what the system does, non-functional ones say how well it must do it: scale (DAU, QPS inputs), latency (p99), availability (nines), consistency, durability, and any cost/compliance limits. These are the numbers a design is measured against, and the ones that force structural choices (sharding, caching, queues) long before any feature does.
  5. Write the out-of-scope list explicitly. Name what is not being built (analytics, ads, moderation, multi-region) so the design stays focused and the boundary is visible, not accidental.
  6. Restate the three lists and confirm before designing. This is the contract the rest of the work is judged against; treat it as a hypothesis to revisit if constraints change, not a fixed spec.

The output is three short lists, not prose. Hand the non-functional numbers to back-of-the-envelope next.

Pitfalls / where it misleads

Scoping done badly is worse than skipped, because it manufactures false confidence. Watch for:

  • Solution-shaped requirements. "We need Kafka / a cache / sharding" is an answer smuggled in as a requirement. Strip it back to the need ("absorb write bursts", "serve reads fast") and let the design earn the tool later.
  • Unquantified non-functionals. "High scale", "low latency", "highly available" decide nothing. A requirement without a number is a wish — convert it via back-of-the-envelope before it shapes a choice.
  • Scope creep disguised as thoroughness. Accepting every feature feels diligent but dilutes the design and burns the clock. The cheapest scope that meets the goal wins.
  • Phantom out-of-scope. Excluding things to dodge hard parts (cutting consistency because it's hard) hides the real problem. Cut for focus, not to avoid the difficulty the prompt is actually testing.
  • Treating answers as final. Requirements are a hypothesis. When a constraint changes ("now p99 < 50ms", "now we lose a region"), say which assumptions it invalidates and re-scope the affected part rather than patching around it.
  • Asking low-leverage questions first. Color of the button before read:write ratio. Lead with the questions that move the architecture; a tidy list of trivia answered perfectly still leaves the real shape of the system unknown.
  • Monologuing the scope instead of confirming it. Scoping is a dialogue. Restate the three lists and the assumptions, then pause for correction — treating a clarifying nudge as an attack on the scope is how a design ends up defending the wrong problem.

Dos and don'ts

  • Do restate the prompt in one sentence and lead with the highest-leverage questions (audience, core features, scale, latency/availability, freshness).
  • Do write the three lists — functional, non-functional, out-of-scope — and treat each unanswered question as a stated, revisable assumption.
  • Do quantify every non-functional ("p99 < 200ms", "10M DAU"), then hand the raw numbers to back-of-the-envelope to compute.
  • Do re-scope when a genuine constraint changes, naming which assumptions it invalidates.
  • Don't smuggle a solution in as a requirement ("we need Kafka"); state the need and let the design earn the tool.
  • Don't accept every feature; defer the long tail to out-of-scope, and don't exclude hard parts just to dodge them.
  • Don't interrogate forever or monologue the scope — get enough clarity for a first hypothesis, then confirm and move on.

Numbers that matter

Requirements scoping captures the inputs; it does not compute. Pin down the raw quantities — DAU/MAU, actions per user per day, read:write ratio, object/payload sizes, retention, peak factor, p99 latency target, and an availability nines target — and hand them to back-of-the-envelope, which owns the latency/QPS/ storage tables and the conversion math. Two figures to record verbatim because they gate the most decisions downstream: the read:write ratio (a 95%-read system invites caching; a write-burst system invites a queue) and the scale horizon (a design for 1k QPS and one for 1M QPS are different systems). Keep units and assumptions written next to each number.

Diagram

Scoping output is three lists, not a picture — keep them as text so they stay the editable contract everything traces back to. When the scoped requirements justify a first high-level design, draw that with the in-plugin architecture-diagram skill; the requirements themselves don't need a diagram.

Related building blocks

  • back-of-the-envelope — feeds into it: the non-functional numbers captured here (DAU, ratios, SLAs) become its QPS, storage, and server-count math. The next step.
  • scaling-evolution — feeds into it: the growth horizon scoped here defines the next bottleneck to plan for, and re-scoping mid-design hands it new limits.
  • api-design and data-storage — feed into them: the functional requirements and access patterns named here become concrete contracts and schemas there.
  • consistency-coordination — owned-concept lives there: capture the freshness and durability requirement here; the consistency-model theory belongs to it.
  • system-design — called by the orchestrator at step 1, before estimation and high-level design.

References

  • references/clarifying-question-catalog.md — the full question bank grouped by category (functional, scale, latency/availability, consistency/durability, constraints), a worked vague→concrete example, and a fill-in requirements template. Read when scoping a real prompt or when the five questions above aren't enough for an unfamiliar domain.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Requirements Scoping AI skill do?

This skill should be used when the user needs to "clarify requirements", separate "functional vs non-functional requirements", "scope the problem", figure out "what questions should I ask", state the "requirements for <X>", or otherwise pin down a vague design prompt before building. It turns an ambiguous ask into functional requirements, non-functional constraints, and an explicit out-of-scope. Use it whenever a prompt is broad or under-specified ("design Twitter", "build a chat app") even if the user doesn't say "requirements".

Why use Requirements Scoping on TypingMind?

Because you install it once and use it with any model. Requirements Scoping 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 Requirements Scoping in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/proyecto26/system-design-skills/tree/main/skills/requirements-scoping. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Requirements Scoping?

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 Requirements Scoping?

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

Is the Requirements Scoping AI skill free?

Yes. It is published on GitHub by proyecto26 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 👇