---
title: Build reusable OpenCode configurations
description: Define reusable OpenCode 2 configurations, activate them through ordinary ESM packages, and evaluate their behavior with Vector.
---

Vector gives Configuration Authors one typed path from reusable Extension Definitions to an OpenCode Plugin Entrypoint.

This minimal configuration adds a project-aware command:

```ts title="src/opencode.ts"
import { defineCommand, defineVector } from '@evilkiwi/vector';

const projectSummary = defineCommand({
  name: 'project-summary',
  build: (context) => ({
    template: `Summarize the project at ${context.project.canonical}`,
  }),
});

export default defineVector({
  id: 'project-tools',
  build: () => ({ commands: [projectSummary] }),
});
```

  <p>Choose a route by goal:</p>
  <ul>
    <li>
      <a href="/start/quickstart">Build your first configuration</a>
    </li>
    <li>
      <a href="/build/reuse">Compose reusable extensions</a>
    </li>
    <li>
      <a href="/activate/package">Activate a package</a>
    </li>
    <li>
      <a href="/evaluate/run-evals">Evaluate behavior</a>
    </li>
  </ul>

Vector integrates with the OpenCode 2 types pinned by the package. [Install Vector](/start/install), follow the [Quickstart](/start/quickstart), or read [Concepts](/start/concepts) for the complete model.
