Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/backmerge.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Backmerge releases from main to next
#
# This workflow ensures that any commits on `main` (releases, version bumps)
# are automatically merged back into `next` to keep branches in sync.
#
# This prevents divergence where main has commits that next doesn't have.

name: Backmerge to next

on:
push:
branches: [main]

permissions:
contents: write

jobs:
backmerge:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
ref: next
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Merge main into next
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

git fetch origin main

if git merge-base --is-ancestor origin/main HEAD; then
echo "next already contains all commits from main. Nothing to merge."
exit 0
fi

git merge origin/main -m "chore: backmerge from main"
git push origin next
6 changes: 3 additions & 3 deletions examples/dual-agent-programmable-workflows/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ resource "chatbotkit_bot" "architect" {
---

Always write complete, production-ready scripts. The Task Runner
depends entirely on your documentationbe thorough and precise.
depends entirely on your documentation-be thorough and precise.
Never assume the runner knows anything beyond what's in the playbook.

The current date is $${EARTH_DATE}. Include timestamps in all updates.
Expand Down Expand Up @@ -180,7 +180,7 @@ resource "chatbotkit_bot" "runner" {
- Handle errors according to troubleshooting guidance

3. EXECUTION DISCIPLINE
- Never modify scriptsonly execute them
- Never modify scripts-only execute them
- Follow the exact syntax and parameters specified
- Report any issues encountered during execution
- Log execution results for tracking
Expand All @@ -196,7 +196,7 @@ resource "chatbotkit_bot" "runner" {
IMPORTANT CONSTRAINTS:

- You can ONLY READ the Automation Playbook, not modify it
- Always consult the playbook before executingnever guess
- Always consult the playbook before executing-never guess
- If a script doesn't exist for a task, inform the user
- If documentation is unclear, report the issue rather than improvise

Expand Down
2 changes: 1 addition & 1 deletion examples/second-brain/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ resource "chatbotkit_bot" "second_brain" {
model = "claude-4.5-sonnet"

backstory = <<-EOT
You are a Second Brainan AI-powered personal knowledge management
You are a Second Brain-an AI-powered personal knowledge management
system designed to help your user capture, organize, and surface
knowledge effectively. Your role is to function as an external
cognitive extension that enhances thinking, memory, and productivity.
Expand Down
46 changes: 28 additions & 18 deletions examples/skillset-based-dynamic-skill/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,33 @@ This example demonstrates a reference architecture for an AI agent that can dyna

## Overview

Skills are specialized instructions that teach AI agents how to perform specific tasks. This architecture takes the concept further by packaging skills as installable skillsetsself-contained units that can be activated on demand to extend an agent's capabilities.
Skills are specialized instructions that teach AI agents how to perform specific tasks. This architecture takes the concept further by packaging skills as installable skillsets - self-contained units that can be activated on demand to extend an agent's capabilities.

## Architecture

```
┌─────────────────────────────────────────────────────────┐
│ Dynamic Skills Agent
│ Dynamic Skills Agent │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Core Skillset │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ List Skills │ │ Install Skill │ │ │
│ │ │ (Discover) │ │ (Activate) │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ │ List Skills │ │ Install Skill │ │ │
│ │ │ (Discover) │ │ (Activate) │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ Skill Library │ │
│ └───────┬───────┘ │
│ ┌──────────────┼──────────────┬──────────────┐ │
│ │ │ │ │ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Data │ │ Content │ │Research │ │ Problem │ │
│ │Analysis │ │ Writing │ │ Skill │ │ Solving │ │
│ │ Skill │ │ Skill │ │ │ │ Skill │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ ┌──────────────┼──────────────┬──────────────┐
│ │ │ │ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ │ Data │ │ Content │ │Research │ │ Problem │
│ │Analysis │ │ Writing │ │ Skill │ │ Solving │
│ │ Skill │ │ Skill │ │ │ │ Skill │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘
│ │
└─────────────────────────────────────────────────────────┘
```

Expand All @@ -44,42 +44,50 @@ Skills are specialized instructions that teach AI agents how to perform specific
## Core Abilities

### List Skills

Uses the `blueprint/resource/list` template configured for skillsets to enumerate all available skills. The agent sees each skill's name and description, enabling it to identify which skills are relevant to the current task.

### Install Skill

Uses the `conversation/skillset/install[by-id]` template to activate a skill by bringing its skillset into the conversation context. Once installed, the skill's instructions become part of the agent's system prompt.

## Skill Format

Each skill skillset follows a structured description format:

```
Short description
---
Longer instructions how to use the skill
```

This convention allows the agent to:

- Quickly scan available skills (short description)
- Access comprehensive guidance when needed (detailed instructions)

## Usage

1. Set your ChatBotKit API key:

```bash
export CHATBOTKIT_API_KEY="your-api-key"
```

2. Initialize Terraform:

```bash
terraform init
```

3. Review the planned changes:

```bash
terraform plan
```

4. Apply the configuration:

```bash
terraform apply
```
Expand Down Expand Up @@ -114,7 +122,7 @@ resource "chatbotkit_skillset" "skill_5" {

Skills can include their own abilities. For example, a "Research Skill" might include web search and fetch abilities:

```hcl
````hcl
resource "chatbotkit_skillset_ability" "research_search" {
skillset_id = chatbotkit_skillset.skill_3.id
name = "Web Search"
Expand All @@ -125,11 +133,12 @@ resource "chatbotkit_skillset_ability" "research_search" {
```
EOT
}
```
````

## When to Use This Pattern

This pattern is ideal when:

- Your agent needs diverse, specialized capabilities
- Skills should be loaded on-demand to avoid context bloat
- Skills include not just instructions but also abilities, secrets, or configurations
Expand All @@ -140,6 +149,7 @@ Compare with the file-based variant: files are ideal for purely instructional co
## Cleanup

To destroy all created resources:

```bash
terraform destroy
```
Expand Down
Loading
Loading