Skip to main content

Tools

Tools are functions that AI agents can call during conversations. They provide persistent memory, external research, and integration with external services.

How to Use Tools

In OpenCode

# Read from memory
> memory-read("observations/project-patterns")

# Update memory
> memory-update("observations/new-pattern", "Content here")

# Find skills
> find_skills("test")

# Use skill
> use_skill("test-driven-development")

# Analyze Figma
> read_figma_design("https://www.figma.com/design/...")

CLI

# List all tools
aikit tools list

# Create custom tool
aikit tools create my-tool

Tool Categories

Memory Tools

Session Management

Skill Tools

Figma Tools

Beads Tools

Research Tools

Tool Definitions

memory-read

Read from persistent memory (project or global).

> memory-read("observations/project-patterns")
> memory-read("research/figma-analysis")

Arguments:

  • key (string, required) - The memory key to read

memory-update

Update persistent memory with new information.

> memory-update("observations/auth-pattern", "Always use JWT")
> memory-update("research/api-design", "Findings...", append=true)

Arguments:

  • key (string, required) - The memory key to update
  • content (string, required) - The content to write
  • append (boolean, optional) - Whether to append (default: true)

list_session

List previous sessions to discover what happened and when.

> list_session(limit=10)

Arguments:

  • limit (number, optional) - Maximum sessions to return (default: 10)

read_session

Load context from a previous session.

> read_session("2024-01-15T10-30-00")

Arguments:

  • sessionId (string, required) - Session ID from list_session

find_skills

Find available workflow skills.

> find_skills("test")
> find_skills("debug")

Arguments:

  • query (string, optional) - Search query to filter skills

use_skill

Load and use a specific skill workflow.

> use_skill("test-driven-development")

Arguments:

  • name (string, required) - Name of skill to use

read_figma_design

Read and analyze a Figma design using Figma API.

> read_figma_design("https://www.figma.com/design/...")

Arguments:

  • url (string, required) - Figma design URL

Extracts:

  • Colors (hex codes)
  • Typography (fonts, sizes, weights)
  • Spacing system (8px grid)
  • Components
  • Screens/Frames
  • Breakpoints

develop_figma_screen

Smart workflow to develop a specific Figma screen.

> develop_figma_screen(figmaUrl="https://...", screenId="screen-id")

Arguments:

  • figmaUrl (string, required) - Figma design URL
  • screenId (string, required) - Screen ID or name

Workflow:

  1. Check current code status
  2. Compare with Figma design
  3. Download needed assets
  4. Generate development plan
  5. Use downloaded assets (not placeholders)

bead-create

Create a new bead/task for tracking work.

> bead-create(title="Add auth", description="Implement JWT auth")

Arguments:

  • title (string, required) - Title of bead/task
  • description (string, required) - Description of what needs to be done

bead-update-status

Update bead status.

> bead-update-status(id="bead-001", status="in-progress")

Arguments:

  • id (string, required) - Bead ID
  • status (string, required) - New status (todo, in-progress, completed, blocked)

bead-complete

Complete a bead with quality gates.

> bead-complete(id="bead-001")

Arguments:

  • id (string, required) - Bead ID

Quality Gates (all must pass):

  • npm run typecheck
  • npm run test
  • npm run lint
  • npm run build

bead-list

List all beads in project.

> bead-list(filter="in-progress")

Arguments:

  • filter (string, optional) - Filter by status (todo, in-progress, completed, blocked)

bead-update-type

Update type of an existing bead.

> bead-update-type(id="bead-001", type="feature")

Arguments:

  • id (string, required) - Bead ID
  • type (string, required) - New type (feature, pattern, decision, knowledge)

Custom Tools

Create custom tools for project-specific needs:

aikit tools create my-tool

Edit .aikit/tools/my-tool.ts:

import { defineTool } from 'aikit';

export default defineTool({
  name: 'my-tool',
  description: 'Does something useful',
  args: {
    input: {
      type: 'string',
      description: 'The input',
      required: true,
    },
  },
  async execute({ input }) {
    return `Result for: ${input}`;
  },
});

Next Steps