# Lists

A **list** groups Registry packages so you can install related nodes together. Lists reference packages instead of copying them, so each member keeps its own listing and version.

## Installing a list

Search for the list in the editor's **Registry** section and press **Install**. The editor downloads each script into the folder for its kind. You can also inspect the list on [visualscript.dev](https://visualscript.dev) before installing it from the editor. See [Installing](installing.md#installing-a-list).

Lists can contain Instructions, Conditions, Triggers, and Signals in any combination. Inspect the members on the list page before adding them to your project.

When an author publishes a newer member, the Registry reports the update through that package's listing. Updating the member doesn't create a new version of the list.

## Making your own

You can build a list with a free account, without writing C#:

1. Open any package on [visualscript.dev](https://visualscript.dev).
2. Press the **folder** button in the action bar.
3. Pick an existing list to add it to, or choose **Create list**.
4. Give it a name and choose whether it's **Public** or **Secret**.

Use the same menu to add or remove packages. A checkmark identifies each list that already contains the package, and **Manage lists** opens all lists in your account.

Choose the scope based on how you want developers to find the list:

| Scope | Means |
| :--- | :--- |
| **Public** | Indexed and searchable. Anyone can find and install it. |
| **Secret** | Not indexed, but anyone with the link can open and install it. Good for a team setup you don't want in the public catalog. |

Change the scope, name, or contents from the list page. To modify someone else's list, press **Duplicate** to create an independent copy in your account.

!!! tip "Lists document repeatable setups"
    A focused list such as *nodes for a first-person controller* or *nodes used by this tutorial* gives other developers an exact package set without requiring a custom node.

## Lists worth building

Choose a list pattern based on who needs the package set:

| Pattern | Suits |
| :--- | :--- |
| **Starter kit** | Nodes you install in every new project. |
| **Tutorial companion** | The exact nodes used by a guide or video. |
| **Topic bundle** | Nodes for one Unity feature, such as Timeline, NavMesh, or Cinemachine. |
| **Team setup** | A **Secret** list that gives each team member the same starting set. |
| **Integration** | Nodes that connect Visual Script to another Unity asset. |

## Integrations with other Unity assets

An **integration list** groups Instructions, Conditions, and Triggers that wrap another Unity asset's API. Developers who own that asset can install the complete Visual Script bridge as one package set.

Each node remains a separate C# file, so developers can install only the operations they need. The list provides one link for the complete integration.

Publish an integration list in this order:

1. **Write the nodes.** Create one per operation, such as *play a line*, *check whether a conversation is active*, or *react when a conversation ends*. See [Extending](../scripting-api/extending/index.md).
2. **Declare the dependency** on every node so developers can check the required asset before installing. For example, add this attribute to each node class, replacing the placeholder with the asset's URL:

    ```cs
    [Dependency("Acme Dialogue System", "https://assetstore.unity.com/packages/…")]
    ```

3. **Prefix your class names**, as in `InstructionAcmePlayLine`, to reduce the chance of a name collision in another project.
4. **[Publish](publishing.md) each node**, then add them all to one **Public** list named after the tool.
5. **Link the list** from the asset's documentation, store page, or community page.

!!! warning "Publish the bridge, not the asset"
    An integration node calls another asset's public API. Do not include code copied from that asset. Registry content is public, so reference the asset as a dependency and require developers to provide their own copy.

!!! info "Integrations need the dependency present to compile"
    A project without the underlying asset can't resolve the types used by the integration and reports compile errors. The `[Dependency]` attribute warns developers about this requirement before installation.

## Like the lists you use

Likes affect list ranking and the Registry's discovery views.

If a list works for your project, open it and press **Like**. Like useful member packages separately because each package retains its own ranking and author.

## Where to go next

- **[Installing](installing.md)** — see where list members are stored in your project.
- **[Publishing](publishing.md)** — upload the nodes that belong in a list.
- **[Contributing](contributing.md)** — prepare a package or list for other developers.
