# Functional Specification (FS)

The **Functional Specification (FS)** describes how the product’s features are organized and how they work in detail. It breaks down the system into **three levels — Requirements → Features → Specifications** to design how the product works in detail. The FS also serves as the foundation for **Information Architecture (IA)**.&#x20;

Two viewing modes are available:

* **Tree View** – visualize the overall structure at a glance.
* **Directory View** – manage detailed policies and descriptions efficiently.

## **1.** Understanding the Structure

The Functional Specification consists of three levels: **Requirements → Features → Detailed Specifications**

<figure><img src="/files/g2693UG3PKTDcI5oGgyP" alt=""><figcaption></figcaption></figure>

### **Requirement**

Represents the high-level goals or user needs of the project.

<mark style="color:$info;">e.g., “Member Management,” “Payment & Billing”</mark>

**Acceptance Criteria**

* Define the conditions or policies that must be satisfied for the requirement to be considered complete, typically in checklist form.
* <mark style="color:$info;">e.g., “Users can sign up via email,” “Menu layout changes depending on user role”</mark>

### **Feature**

Represents a specific function that fulfills a requirement.

<mark style="color:$info;">e.g., “Sign Up,” “Document Sharing,” “Payment Management”</mark>

**User Role**

* You can assign a responsible role to each feature, using the roles defined in the PRD.
* <mark style="color:$info;">e.g., “Planner,” “Manager,” “Guest”</mark>

**Importance**

* Set the priority or importance of each feature. *(Low / Medium / High)*

### **Specification**

Defines the **specific actions or policies** within each feature.

<mark style="color:$info;">e.g., “Email Sign-Up,” “Change Password,” “Session Management”</mark>

{% hint style="success" %}
Specifications are directly linked to [pages](/en/plan/information-architecture-ia.md#menu) in the Information Architecture (IA).
{% endhint %}

## **2.** Switching Views

You can switch between different viewing modes using the **toolbar buttons** at the bottom of the FS tab.

### **Tree View**

Get a full view of the functional hierarchy at a glance. Requirements, features, and specifications are displayed as connected nodes. This view is useful when you want to quickly understand the overall structure or review relationships between features.

<figure><img src="/files/FPUzKrQTU4ITioWnIJZ8" alt=""><figcaption></figcaption></figure>

### **Directory View**

Explore and manage items step by step. The hierarchy — **Requirement → Feature → Specification** — is displayed as a structured list. Selecting an item opens detailed information on the right panel, where you can review and edit it. Edits to Acceptance Criteria or assigned user roles are made in the **Directory View**.

<figure><img src="/files/CXQNBQMgBYFc1MTVMbiy" alt=""><figcaption></figcaption></figure>

## **3.** Adding & Editing

### Editing in Tree View

<figure><img src="/files/FDjXw98zriYzWBUU6MBY" alt=""><figcaption></figcaption></figure>

1. Select a node and click the **edit (✏️)** icon at the top to enter edit mode. You can also double-click the node to edit it.
2. Editable fields vary by node type:
   1. **Requirement** – name, description
   2. **Feature** – name, importance, user role
   3. **Specification** – name only
3. To add a new child node, select a node and click the **“＋”** button that appears on the right.

{% hint style="success" %}
Hold **Shift** and click a node to open it directly in the Directory View.
{% endhint %}

### Editing in Directory View

<figure><img src="/files/p2cq1oykGss29bdNxIm7" alt=""><figcaption></figcaption></figure>

1. Click the **“＋”** button at the top of each section (Requirement / Feature / Specification) to add a new item.
2. Double-click any list item to rename it.
3. Select an item to edit its name, description, and detailed info in the right panel.
4. Use the **Edit** or **Delete** buttons on the right to manage items. When deleting, note that all sub-items will also be removed.

{% hint style="success" %}
**TIP :** In the Directory View, you can **drag and drop** items to adjust their connections or reorder them.
{% endhint %}

## 4. Ask AI

<figure><img src="/files/GIRdTSNUNUw53m0p1oCt" alt=""><figcaption></figcaption></figure>

1. Click the '+' button on the left side of an item, then use the **'Generate with AI'** feature to create sub-items.
2. When the AI updates an item, a **blue highlight icon** appears in the Tree View.\
   Click it to preview the changes in the Directory View.
3. Review and **approve / reject** each change, or approve / reject all at once using the buttons at the bottom.
4. Click the **chat icon** on the left panel to open the AI assistant and discuss revisions directly.
5. While selecting items in the Tree or Directory View, you can provide context to the chat so the AI follows more precise instructions.

{% hint style="warning" %}
**Note:** During AI generation, some **items may be left unlinked** if their parent connections are missing. In that case, review the **unlinked items** in the Directory View and **drag and drop** them to reconnect manually.
{% endhint %}

<figure><img src="/files/lM4vOJHmOvRaiK9M38qT" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.manyfast.io/en/plan/functional-specification-fs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
